Hi,
ich habe hier einen drehencoder den ich mit einem mega16 auswerte, Ausgang A ist an INT1 und Ausgang B an PIND.4 wen ich ihn mit diesem code auswerte funktioniert das ganze nur wen ich schnell am encoder drehe. Bei langsamem drehen egal in welche richtung geht der wert immer in den minus bereich.

Hier mein code:
Code:
ISR(INT1_vect)
{
char cSREG;
 cSREG = SREG; // Statusregister puffern in Variable cSREG //
if bit_is_clear(PIND,PIND3) //falling edge!
{
      if bit_is_clear(PIND,4) //linksrum
         {
         enc--;
         }
      else
         {
         enc++;
         }
}
else //rising edge
{
      if bit_is_clear(PINC,4)  //rechtsrum
         {
         enc++;
         }
      else
         {
         enc--;
         }
}

SREG = cSREG; 	// Statusregister aus Variable cSREG retten //
}
Der interrupt ist auf steigende und fallende flanken eingestellt.
Code:
GICR |= (1<<INT1);
MCUCR |= (1<<ISC10);
Danke schonmal im vorraus.

MfG Martin