Skocz do zawartości

Nie poprawne działanie funkcji delay_ms


miccaldo

Pomocna odpowiedź

Witam, mam mały problem z funkcją delamy_ms, otóż chciałbym aby w pewnym momencie program zaczekał _delay_ms(1000), ale program czeka jakieś 300ms, i to jest maksymalne opóźnienie. Programator attiny 2313, pracuje z częstotliwością 1Mhz. Czytałem że jest to spowodowane właśnie złą częstotliwością z jaką pracuje procesor, ale u mnie przy 1Mhz, jak i 8Mhz nie działa prawidłowo.

Pozdrawiam.

Link do komentarza
Share on other sites

Proszę oto kod, w przygotowaniu, jeszcze sporo zostało do ukończenia:


#define F_CPU 1000000L 
#include <avr/io.h> 
#include <util/delay.h>
#define red 0x21;    // PORTD
#define bl_1 0x08;   // PORTD
#define bl_2 0x02;   // PORTA
#define gr_1 0x04;   // PORTD
#define gr_2 0x01;   // PORTA
#define yellow 0x12; // PORTD
#define buzz 0x01;   // PORTB

int main(void) 
{    
  DDRB = 0x01; 
  DDRA = 0xFF; 
  DDRD = 0xBF; 

  PORTB = 0x12; 
  PORTD = 0x40; 
  PORTA = 0x00; 

   int i;

for(;;)
{ 
for(i = 0; i < 5; i++)
{
if(!(PIND & 0x40)) 
	{
	switch(i)
		{
		case 1:

		for(i = 0; i < 2; i++)
			{

			PORTD |= red;
			PORTB |= buzz;
			_delay_ms(3000);
			PORTB ^= buzz;
			PORTD ^= red;       
			PORTD |= bl_1;
			PORTA |= bl_2;
			PORTB |= buzz;
			_delay_ms(3000);
			PORTD ^= bl_1;
			PORTA ^= bl_2;
			PORTB ^= buzz;

			}



		case 2:


		case 4:

		break;
}
}
}
}
}

W pliku mfile ustawiłem 1Mhz.

A fusebity gdzie sprawdzić? W programie mkAVR calculator?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

To zależy czy masz pełną wersję mkAVR calculator, czy tą darmową. Jeżeli masz pełną, klikasz "Sprawdź podłączony AVR", i sprawdzasz, co jest ustawione, a jak masz darmową, to po prosu przestawiasz fusy na 1MHz, i wgrywasz do proca, bez względu na to, jakie fusy aktualnie są ustawione.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.