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