Anfänger braucht Hilfe

Gast #317586
Lesenswert?
• ▲
▼
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
Angehängte Dateien:
Gast #317588
Lesenswert?
• ▲
▼
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.
Gast #317589
Lesenswert?
• ▲
▼
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
Gast #317590
Lesenswert?
• ▲
▼
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
Gast #317591
Lesenswert?
• ▲
▼
...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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.