hi, sollte folgender code nicht dafür sorgen, das bei einer pegeländerung auf PIND0 (ist laut mega128 der pin für int 0) der code des interrupthandlers ausgeführt wird und "INTERRUPT :)" auf dem display erscheint? tuts nur leider nicht. ich habs auch mit anderen externen interrupts probiert...das gleiche. ich kann an den entsprechenden pin anlegen was ich will, da tut sich nix... wo liegt der fehler ? #include <avr/io.h> #include <stdio.h> #include <avr/signal.h> #include <avr/interrupt.h> #include "lcd/lcd.h" INTERRUPT(SIG_INTERRUPT0){ lcd_clear(); sleepms(1); lcd_send_str("INTERRUPT :)"); sleepms(2000); } int main(){ byte i = 0; DDRA = 0xff; PORTA = 0; DDRC = 0x00; PORTC = 0xff; DDRE = 0x00; PORTE = 0xff; sei(); lcd_init(); sleepms(1); lcd_clear(); lcd_send_str("Hallo Welt"); lcd_send_cmd(0xc0); sleep2(20); while(1){} return 0; }
Du solltest noch den Port D, Leitung 0 auf ingang schalten und den entsprechenden Interrupt enablen. Also zB. DDRD=0; // auf Eingang (ist aber default) MCUCR|=3; // Interrupt on rising edge GICR|=0x40; // Interrupt von INT0 enablen
ja okay das hatte ich jetzt in dem code-beispiel nicht aber eigentlich deshalb weil das ursprüngl mal SIG_INTERRUPT4 war un der liegt auf porte. was ist eigentlich GICR ? mein WinAvr kennt das nicht gruß markus
Sorry, da hab ich nicht aufgepasst, ich habe im Datenblatt vom mega8 nachgeschaut, aber Du hast ja einem mega128... Noch ein Versuch: DDRD=0; // auf Eingang (ist aber default) EICRA|=3; // Interrupt on rising edge EIMSK|=0x40; // Interrupt von INT0
hm also ntweder ich bin zu blöd oder man muss noch was an den fusebits ändern. kannst du mir vielleicht mal ein komplettes codebsp posten? das wär echt super. im anhang ist mein aktuelles prog das leider nix macht. gruß markus
Port E beim ATmega128? Du hast die FAQ gelesen? Du hast JTAG in irgendeiner Form abgeschaltet? (Per Fusebit, oder per control register.)
PORTE? ne...im aktuellen progi arbeite ich an PORTD mit INT0 an PORTD.0 da sollte JTAG an/aus nix mit zu tun haben oder? gibt es sonst noch eine einstellung die probleme machen könnte?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.