Forum: Compiler & IDEs PORTA liest falschen Wert ein


von Hajo (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein mega32, und habe folgendes Programm zum auswerten eines 
binären Tastenwerts an PORTD5-PORTD7 geschrieben.
Auf PORTD klappt auch alles nur will ich es auf PORTA haben.

(Leitungen habe ich natürlich auf PORTA umgelötet.
DDRD,PIND habe ich durch DDRA,PINA ersetzt.)

SREG = SREG | 0x80;         //Interrupt generel freigeben
MCUCR = MCUCR &~ 0x01;      //INT0 Fallende Flanke
MCUCR = MCUCR |   0x02;     //INT0 Fallende Flanke
GICR = GICR | 0x40;         //INT0 Enable
GIFR = GIFR | 0x40;         //INT0 Reset

DDRD = 0x00;                //DDRD Eingang Pin 5-7 = Tastertur A0-A3
...

while(1)
  {
         dis_char(2,10,(glob_Taste+48));
  }

...

//Interrupt Serive Routine für Tastaturwert (externer Interrupt 0)
ISR(INT0_vect)
{
glob_Taste = ((PIND & 0xE0)>>5);//glob_Taste = Tasterturwert
GIFR = GIFR | 0x40;        //INT0 Reset
}

Danke schon mal fürs lesen.

von Gast123 (Gast)


Lesenswert?

Die Taste, die deinen IRQ auslöst, ist aber noch an PortD, oder?

von Hajo (Gast)


Lesenswert?

Habe die drei Leitungen die mir die Tastatur gibt an PORTA 5-7 
umgelötet.
Nur wird mit jetzt in der INT0 Routine der Falsche Wert der Taste 
übermittelt.

von Rolf Magnus (Gast)


Lesenswert?

INT0 hat nichts mit PORTA zu tun. Der wird nur von PD2 ausgelöst.

von Karl H. (kbuchegg)


Lesenswert?

Avcc ist angeschlossen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.