if(overflow0 > 3906)
{
low = TCNT0 ;
TCNT0 = 192 ;
high = overflow1 ;
overflow1 = 0 ;
newflag = 1 ;
}
low = TCNT0 ist falsch.
Da muß low = TCNT1 hin.
Danach sollte man TCNT1 gleich wieder auf 0 setzen
TCNT1=0;
Der "SEI" Befehl soll einen Overflow Interrupt des Zählers vor der Abfrage ermöglichen.
Mit dem "CLI" Befehl wird diese Möglichkeit wieder verhindert.
Wenn der Controller die Interrupt Routine verlässt sollte SEI automatisch ausgeführt werden.
Man könnte auch das Timer 1 Overflow Flag abfragen und entsprechend darauf reagieren.
Das sind aber erstmal Future Optionen. Erstmal muß das Ding laufen.
Code:
if(overflow0 > 3906)
    {
   #asm("sei");
   low = TCNT1 ;
   #asm("cli");
   TCNT0 = 192 ;
   TCNT1=0;
   high = overflow1 ;
   overflow1 = 0 ;
   newflag = 1 ;   
   }
Hast Du deinen Code schon mal im Simulator vom AVR Studio laufen lassen ? Ist wirklich hilfreich!