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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.