Gast
#6265814
Hallo, ich möchte eine Function bauen die mithilfe des Timer1 ein Signal bestimmter Länge an einen Pin sendet. Der Timer(im normal-mode) funktioniert auch soweit (mit Interrupt getestet) aber die Schleife in der Funktion wird nicht ausgeführt. Hier der Code: >void _impulse_en(uint64_t microseconds) >{ > PORTB |= (1<<_en); > > uint16_t current = TCNT1; > while(microseconds > 0) > { > if(TCNT1 < current) > { > current = TCNT1; > microseconds --; > } > } > > PORTB ^= (1<<_en); >} Wenn ich allerdings TCNT1 in der Schleife inkrementiere, wird sie ausgeführt. Offensichtlich denkt der Compiler, dass die Bedingung in der Schleife nie zutrifft. Dabei beachtet er aber den Timer nicht, der TCNT1 jede Millisekunde inkrementiert. Kann ich dieses Phänomen irgendwie umgehen? Danke schonmal!