UART - Problem

Gast #56487
Ich habe den Sourcecode vom Tutorial zusammenkopiert(Anhang), sodass ich
senden und empfangen kann. Dabei kann ich allerdings nur senden und
nicht empfangen. Die Tutorials einzeln funktionieren.
--> kein Hardwarefehler

Wo liegt der Fehler?
Angehängte Dateien:
Gast #56488
di überschreibst deinen empfangenen wert immer gleich wieder mit

    ldi temp, 255

die befehlszeile ist eingerückt (übersehen?!)

zu finden ist sie im empfangsinterrupt...
Gast #56489
Das liegt daran das ich am Port D keine LEDs sondern ein Relais habe,
welches ich klicken höre.
Da das Relais nicht bei jedem Zeichencode eingeschaltet würde, habe ich
die erwähnte Zeile geschrieben.

Bei einem C-Programm mit WinAVR, tritt das gleiche Problem auf, obwohl
ich dort das ankommende Zeichen auf einem Display ausgebe.

Am ATMega16 (8 Mhz) liegt's auch nicht, den habe ich schon testweise
ausgetauscht.

Danke für's angucken
Gast #56490
verstehe ich nich. wenn du alle anderen pins ausser den des relais
schalten willst müsstest du das aussortieren. aber so wie du´s jetz
machst hat temp in der zeile out PORTD, temp immer den wert 255.
es wird keine rücksicht auf den eingelesenen wert genommen, er wird
sofort wieder überschrieben.
wenn du dir erhoffst durch ein empfangenes byte das relais einmal
klacken zu hören müsstest du den pin wenigstens einmal mit dem
empfangenen wert setzen. würde jedoch auch nichts helfen, denn so
schnell wie der prozessor mit 8mhz ist, hätte das relais eine zu grosse
trägkeit um kurz abzufallen / anzuziehen. das kann innerhalb von 125ns
nicht klappen.

egal was du machen willst, der fehler liegt in der zeile ldi temp, 255
oder der darunter.

int_rxc:
        push temp                         ; temp auf dem Stack sichern
        in temp, UDR
    ldi temp, 255
        out PORTD, temp
        pop temp                          ; temp wiederherstellen
        reti                              ; Interrupt beenden

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.