Vielen Dank für die schnelle Antwort. So was ähnliches hatte ich ja befürchtet. Bei den zwei Registern kann man ja auch eigentlich nicht viel falsch machen...
@Markus: wie kommst du auf 72kHz? Der Mega rennt mit 18,432Mhz und der PWM soll mit 1,125kHz laufen.
Also tiefer ins Detail: Am PortD wo die OC2A&B Pin's sitzen habe ich noch den INT0 beschaltet. Der zündet den INT0_vect:
Code:
ISR( INT0_vect ) // Int2 liest DynamoImpulse ein
{
if (ImpulsCheck == 0) // kein DynamoImpuls vorweg
{
TCCR1B |= (1<<CS12) | (1<<CS10); // Prescaler für Timer1 auf 1024 setzen,
// dadurch 'füllt' sich TCNT1 mit 18kHz bei 18,432Mhz Fcpu
ImpulsCheck=1;
}
else // DynamoImpuls vorher kam, also Timer auswerten für Frequenzmessung
{
Timer1Register = TCNT1; // Übergabe des Timer1 Registers an globale Var zur Verrechnung in main
TCNT1=1; // Register Nullen um Messung neu zu beginnen
}
Impulse++; // Impulse um eins erhöhen um DynamoImpulse zu zählen, daraus Strecke
}
Hier wird aber meiner Meinung nach nichts am PortD geändert was die beiden OC2A&B "verwirren" könnte.
An die Variable ImpulsCheck ist eine (andere) LED gekoppelt, die bei ImpulsCheck=1 an ist, sonst eben aus. Eine einfache visuelle Kontrolle für mich:
Code:
if (ImpulsCheck == 1)
{
PORTD= (1<<PD3);
}
else
{
PORTD &= ~(1<<PD3);
}
So das war's was ich an PortD veranstalte. Vllt ist hier ja was bei, was den Timer nicht starten lässt. Ich komme dem Problem einfach nicht auf die Schliche 
Vielen Dank für Eure Hilfe
MfG
Eddy
Lesezeichen