Versuche es mal so:
Code:
volatile uint16_t speed=0;
volatile uint16_t dir=0;
volatile uint16_t speedcount=0;
volatile uint16_t dircount=0;
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.
Vorsicht bei 16-Bit-Werten. Sie könnten während der Ausgabe von der ISR verändert werden:
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);
}
Gruß
mic
Lesezeichen