Witam,
mam problem z działaniem funkcji _delay_ms() - nie powoduje oczekiwanego opóźnienia w milisekundach - opóźnienie jest zbyt małe (około 20 krotnie mniejsze od oczekiwanego). Aby otrzymać prawidłowe opóźnienie musiałem utworzyć funkcję _delay_ms2().. kod poniżej.
Na forum znalazłem podobny problem:
https://www.elektroda.pl/rtvforum/topic1054215-0.html
Zapoznałem się z:
http://mikrokontroler.info/avr/biblioteki/opoznienia-i-ich-dokladnosc-delayh/
Korzystam z zestawu uruchomieniowego EVB 4.3
Z avrdude wyciągnąłem fuse bity:
hFuse: D0
lFuse: EF
Lock Bit: 3F
Pozdrawiam i dziękuję
![[c]Atmega16 - funkcje z delay.h [c]Atmega16 - funkcje z delay.h](https://obrazki.elektroda.pl/46_1250328047_thumb.jpg)
mam problem z działaniem funkcji _delay_ms() - nie powoduje oczekiwanego opóźnienia w milisekundach - opóźnienie jest zbyt małe (około 20 krotnie mniejsze od oczekiwanego). Aby otrzymać prawidłowe opóźnienie musiałem utworzyć funkcję _delay_ms2().. kod poniżej.
Na forum znalazłem podobny problem:
https://www.elektroda.pl/rtvforum/topic1054215-0.html
Zapoznałem się z:
http://mikrokontroler.info/avr/biblioteki/opoznienia-i-ich-dokladnosc-delayh/
Korzystam z zestawu uruchomieniowego EVB 4.3
Z avrdude wyciągnąłem fuse bity:
hFuse: D0
lFuse: EF
Lock Bit: 3F
#define F_CPU 1000000
#include <avr/io.h>
#include <util/delay.h>
_delay_ms2(double ms)
{
int i;
for(i=0;i<ms;i++) _delay_ms(20);
}
int main(void)
{
DDRD = 0x01;
while(1)
{
PORTD|=0x01;
_delay_ms(2000);
PORTD&=~0x01;
_delay_ms(2000);
}
}
Pozdrawiam i dziękuję
