Gast
#148628
Hallo.
ich habe in mein Programm eine delay funktion aus einem anderen
Programm reingebaut:
static inline void _delayFourCycles(unsigned int count)
{
if ( count == 0 )
asm volatile( "rjmp 1f\n 1:" );
else
asm volatile("1: sbiw %0,1" "\n\t" "brne 1b" : "=w"
(count) : "0" (count));
}
/***********************************************************************
**
delay for a minimum of <us> microseconds
the number of loops is calculated at compile-time from MCU clock
frequency
************************************************************************
*/
#define XTAL 8000000
#define delay(us) _delayFourCycles( ( ( 1*(XTAL/4000) )*us)/1000 )
allerdings erzeugt die funktion delay viel zu kurtze delay zeiten.
wenn ich delay (1000000) schreib wäre das normal eine seckunde aber
selbst wenn ich die funktion 10x untereinander schreib hab ich nur ca.
1/4 sekunde. die quarzfrequens stimmt. an was kann es noch liegen ?
Hat jemand eine idee ?
MfG