Hallo!
Ich habe einen 4bit up/dwn timer an einen Port des Atmega angeschlossen.
Der Timer wird mit 1Khz ausgelesen. Als return möchte ich die differenz als int8_t
von -8 bis +8.
Zudem soll der Code, aufgrund der hohen Frequenz, effizient sein!
So funktionierts schonmal... aber da kann man sicher mächtig optimieren!
Jemand nen Tipp??? Viele Dank!Code:ISR, 1Khz { static int old; // alter Zählerstand int new, dir, diff; new = PINC & 0x0F; // neuer Zählerstand, 4 bit ausmaskiert if (new > old) { diff = new - old; dir = 1; } else { diff = old - new; dir = -1; } if (diff > 8) { diff = (16 - diff); dir *= -1; } diff *= dir; old = new; return diff; }







Zitieren

Lesezeichen