Przerabiam kurs AVR-GCC z Elektroniki dla Wszystkich. jestem już w 5 części. Jest tam kod odpowiedzialny za opóźnienia:
Kod: Zaznacz cały
#define delayus8(t)\
{asm volatile( \
"delayus8_loop%=: \n\t"\
"nop \n\t"\
"dec %[ticks] \n\t"\
"brne delayus8_loop%= \n\t"\
: :[ticks]"r"(t) );}
// DEC - 1 cykl, BRNE 2 cykle, + 1xnop. Zegar 4MHz
void delay100us8(uint8_t t)
{
while(t>0)
{
delayus8(100);
--t;
}
}Kod: Zaznacz cały
#define delayus8(t)\
{asm volatile( \
"delayus8_loop%=: \n\t"\
"nop \n\t"\
"nop \n\t"\
"nop \n\t"\
"nop \n\t"\
"nop \n\t"\
"dec %[ticks] \n\t"\
"brne delayus8_loop%= \n\t"\
: :[ticks]"r"(t) );}
// DEC - 1 cykl, BRNE 2 cykle, + 5xnop. Zegar 8MHz
void delay100us8(uint8_t t)
{
while(t>0)
{
delayus8(100);
--t;
}
}
Już nie mam pomysłu jak rozwiązać ten problem.
Pozdrawiam Yakuza