ich habe in einer codesammlung das hier gefunden:
1 | void waitMs(uint16_t ms)
|
2 | {
|
3 | while(ms--)
|
4 | {{ \
|
5 | __asm__ __volatile__ ( \
|
6 | " ldi r24,%[lo]" "\n\t" \
|
7 | " ldi r25,%[hi]" "\n\t" \
|
8 | " waitMs2%=:" "\n\t" \
|
9 | " sbiw r24,1" "\n\t" \
|
10 | " brne waitMs2%=" "\n\t" \
|
11 | : \
|
12 | : [lo] "M" (0xFF & (F_CPU/(1000*4))), [hi] "M" ((F_CPU/(1000*4))/0x100) \
|
13 | : "r24","r25" \
|
14 | ); \
|
15 | }}
|
16 | }
|
ich weiß das diese wait-funktionen sowieso keine elegante lösung sind
aber meine frage dreht sich auch eher um verständniss.
was passiert bei diesen ASM-code genau?
wieso bekomme ich probleme wenn ich bei einem F_CPU = 14745600 diese
Funktion verwende?
thx
Black-Devel