Hallo,
die ISR ist def. nicht zu lang. Ich denke Besserwessi hat den Fehler schon gefunden.
Code:
static volatile uint16_t _Ticker1ms;
.
.
.
uint8_t getTicker1ms( void )
{
return _Ticker1ms;
}
Sind die unterschiedlichen Typen gewollt?
Wenn du ansonsten innerhalb der ISR bei einem 8Bit Controller eine 16 Bit Variable (_Ticker1ms) änderst, solltest du bei Zugriffen außerhalb der ISR den Interrupt abschalten, sprich die Stelle atomar machen. Es könnte sonst passieren, dass die Variable während des Lesezugriffes von der ISR geändert wird, ist uncool.
Falls du den 16 Bit Wert zurückgeben möchtest.
Code:
uint16_t getTicker1ms( void )
{
uint16_t Rückgabewert;
cli();
Rückgabewert = _Ticker1ms;
sei();
return Rückgabewert;
}
Wenn du eh nur 8 Bit zurück gibst ist es egal.
Gruß
Jens
Lesezeichen