Versuche es mal so:
Läuft das m32 nicht mit 16MHz? Dann sollte OCR1A mit 20 geladen werden um einen 100kHz-Takt zu erreichen. Aber eigentlich ist der absolute Messwert der Impulslänge ja nicht wichtig, es funktioniert auch so.Code:volatile uint16_t speed=0; volatile uint16_t dir=0; volatile uint16_t speedcount=0; volatile uint16_t dircount=0;
Vorsicht bei 16-Bit-Werten. Sie könnten während der Ausgabe von der ISR verändert werden:
GrußCode:uint16_t speed1, dir1; while(1) { cli(); // Interrupts verbieten speed1=speed; dir1=dir; sei(); // Interrupts wieder zulassen writeInteger(speed1, DEC); writeString("\t\t"); writeInteger(dir1, DEC); writeString("\n"); mSleep(100); }
mic







Zitieren


Lesezeichen