SIGNAL mit UART0 und atmega128 funktioniert nicht...

Gast #111394
Lesenswert?
• ▲
▼
hi

habe eine serielle schnittstelle mit interrupt programmiert - leider
werden keine interrupts behandelt .... ???

auch wenn ich den block

SIGNAL(__vector_default)
{
    // user code here z.b. led on
}

einbaue geschieht nichts obwohl die serielle schnittstelle funktioniert
(ohne interrupt getestet)

was kann das sein (stack.fuse bits ) ???

danke
Angehängte Dateien:
Gast #111395
Lesenswert?
• ▲
▼
fuse bits glaube ich nicht, das betrifft eigentlich nur den
bootreset-vektor. stack-probleme würden sich eigentlich erst beim
rücksprung bemerkbar machen. um das auszuschliessen könntest du die cpu
per stop-befehl ganz brutal einfrieren, nach dem LED-Anschalten.

vielleicht nochmal ganz genau im datenblatt die registerbeschreibungen
bzw. das kapitel über den seriellen empfang durchlesen. unter manchen
bedingungen muss immer zuerst das status register ausgelesen werden,
bevor es weitergeht. hab auf die schnelle auch keinen lesezugriff aufs
UDR gesehen, das kann auch erforderlich sein.

läuft denn die schnittstelle im polling-betrieb, ggf. auch ohne die
ganzen buffer? im laufenden polling-betrieb kannst du ja z.B. mal den
transmit-complete vektor aktivieren, der hat eigentlich keine
besonderen bedingungen oder nebenwirkungen. wenn dann alles abstürzt,
hast du ein vektor-problem.

den stack kannst du am einfachsten mit verschachelteten
funktionsaufrufen testen. im detail, oder bei sporadischen fehlern
lohnt sich ein zyklisches überprüfen der letzten stack-speicherstelle
(mit hard-definiertem RAM-Pointer): zu programmbegin was markantes
reinschreiben, und immer mal wieder auslesen. bei einem stacküberlauf
steht dann was anderes drin. (einmalig kannst du aus die erste
speicherstelle testen, ob der stack überhaupt richtig alloziert wird.)

die interruptvektoren sind manchmal auch fehlerhaft (z.B. bei
chip-redesign nach compiler-release), notfalls im generierten
assemblercode prüfen. evtl. kann es auch stress geben, wenn ein RxD/TxD
Pin als I/O Port konfiguriert ist.

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.