Hallo, habe eine Routine geschrieben um ein 2x16 Zeichen LCD zu steuern. Das funktioniert auch alles wunderbar. Nur wenn ich dann ein paar mal hintereinander den INT0 Eingang betätige stürzt das Dingen ab und das LCD zeigt nur noch einen schwarzen Balken. Nach einem Reset läuft es wieder hoch und initalisiert sich. Aufgebaut ist alles auf eine Evolution Board von Pollin.Bei dem INT1 Eingang passiert es nicht. Den Source habe ich mal angehangen ich hoffen mir kann jemand helfen. MFG Andreas
Du hast vergessen, die Interrupttabelle anzulegen. Beim INT0 springt dein Programm hier irgentwo hin ;Datenrichtungen festlegen ldi temp_LOW, 0xff ;Ausgänge out ddrc, temp_low ;PORTC = Ausgänge out ddrb, temp_low ;PORTB = Ausgänge ldi temp_LOW, 0b11100001 out ddrd, temp_low ;PORTD gut, dann werde eben die Ausgänge neu gesetzt. Da du aber nirgentwo ein RETI drinn hast, (wofür auch) wird dein "STAPELZEIGER" immer weniger, bis er ins PRogramm zeigt und die Kiste irgentwann abschmiert. Ich hoffe das stimmt soweit, bzw. dass ich mich so ausgedrückt habe, dass Du was mit anfangen konntest. Man kann mich ja korrigieren. Gruß AxelR.
Hallo, und schonmal danke für die Antwort. Das habe ich mir auch schon fast gedacht wie lege ich denn so eine Interrupt Tabelle an. Hab auch schon versucht sie im GIMSK zu deaktivieren hat aber auch nicht gebracht. MFG Andreas
Interrupt-Tabelle steht in jedem Datenblatt ziemlich weit vorne drin (Mega16 Datenblatt Seite 44). Kannste praktisch 1:1 übernehmen. Habe in Deinem Programm allerdings kein sei gesehen, dürfte also eigentlich gar keine Reaktion geben. Die Vektortabelle wird ja nur dann angesprungen, wenn ein Interrupt auftritt. Oder hab ich das sei ÜBERsehen? Gruß Johnny
...Ergänzung: Bei den Interrupts, die Du nicht benutzt, solltest Du dann natürlich anstelle von 'jmp irgendwohin' ein 'reti' reinschreiben, damit bei einer unbeabsichtigten Fehlkonfiguration der µC nicht ins Nirwana springt und komplett abstürzt.
Hab im Programm kein sei drin. Das machte mich auch stutzig wieso der abk.... Und das komische ist das es nur beim INT0 eingang passiert wenn ich INT1 oft betätige passiert nichts. MFG
stimmt: ohne SEI dürte garnichts passieren. Dann mal ganz blöd denken. Ist der INT0 als Ausgang initialisiert? dann ist es vlt. ein Kurzschluss, wenn Du INT0 nach Masse "tippst"?
Meistens ist es ja was einfaches. leider diesmal richtig Deklariert.:-) Versteh das bald nimmer :-) hab portd mal komplett als eingang geschaltet aber auch das brachte keine verbesserung.
Fehler gefunden. JUHU Also ich habe den eingang einfach mal öfters mit einem Draht direkt auf 5V gebrückt nichts passierte. Neuen Taster rein. und es funzt. MFG
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.