Udało mi się napisać poniższą pętlę opóźniającą o zadany czas:
Dokładność odmierzania czasu opóźnienia, w zależności od częstotliwości taktowania mikrokontrolera jest następująca:
Czas opóźnienia jest coraz krótszy wraz ze wzrostem częstotliwości taktowania.
Procedurę testowałem na symulatorze "AVR Simulator IDE".
Wait: mov R16, CLK ;częstotliwość pracy mikrokontrolera: $01-$14 (1 - 20 MHz)
mov R17, DLY ;wartość opóźnienia: $01-$FF (100 us - 25.5 ms)
ldi R18, $19
mul R17, R18
Wait0: movw R24, R0
Wait1: sbiw R24, 1
brne Wait1
dec R16
brne Wait0Dokładność odmierzania czasu opóźnienia, w zależności od częstotliwości taktowania mikrokontrolera jest następująca:
DLY CLK Opóźnienie
----------------------
1 1 108 us
1 20 103 us
----------------------
10 1 1.008 ms
10 20 1.003 ms
----------------------
100 1 10.008 ms
100 20 10.003 ms
----------------------
255 1 25.508 ms
255 20 25.503 ms
----------------------Czas opóźnienia jest coraz krótszy wraz ze wzrostem częstotliwości taktowania.
Procedurę testowałem na symulatorze "AVR Simulator IDE".