Forum: Mikrocontroller und Digitale Elektronik AVR verhält sich mir unerklärbar


von Michael Dierken (Gast)


Angehängte Dateien:

Lesenswert?

Guten Tag.

Ich hatte vor ein kleines Programm zu schreiben, welches auf einem 
Display die über den UART empfangenen Daten anzeigt und diese 
abspeichert.
Sobald nun ein Taster (PB0) betätigt wird soll er den Speicher einmal 
über den UART ausgeben und bei erneutem empfang von Daten neu auffüllen.


Das Anzeigen der Daten auf dem Display funktioniert einwandfrei.
Sobald ich den Taster zum Senden der Daten betätige kommt nur Müll an. 
Der Müll ist eig. nahezu immer der gleiche egal was ich zuvor versucht 
habe ein zu speichern.
Nachdem ich den Müll gesendet habe kann ich ganz normal wieder Daten 
senden welche auch wieder richtig auf dem Display angezeigt werden.

Zeitweise aber ist es so das er nach dem Senden der Daten die 
Empfangenen Daten gleich wieder vom Display nimmt.

Ich habe versucht den Fehler ein zu kreisen indem ich erstmal mein Reset 
Programm übersprungen habe und einfach sachte das der zu 0x000 springen 
soll.

Meine Probleme:

Speichert er die Daten überhaupt richtig ab?
Warum kommt da nur Müll raus wenn ich sende?
Und vor allem: Was ist das für ein Problem welches zwar mit einem Reset 
aber nicht mit Sprung zu 0x000 gelöst wird?

von Michael Dierken (Gast)


Angehängte Dateien:

Lesenswert?

Entschuldigung .. habe mich verklickt .. hier ist die .asm

von Purzel H. (hacky)


Lesenswert?

Ein Jump zu Null macht keinen Reset der Hardware. Eine Seite ...
http://www.ibrtses.com/embedded/avrasmuartint.html

von zappie (Gast)


Lesenswert?

Du springst mit "rjmp  Senden" in die Senderoutine und beendest diese 
dann mir einem "ret", das kann nicht gut gehen...

von Vuvuzelatus (Gast)


Lesenswert?

Interrupthandler int_rxc ohne Sicherung/Wiederherstellung des SREG?

>welches zwar mit einem Reset aber nicht mit Sprung zu 0x000 gelöst wird?

Möglicher Grund: Bei einem echten Reset werden die Register (r0...r31) 
von der Hardware gelöscht.

von H.Joachim S. (crazyhorse)


Lesenswert?

Vuvuzelatus schrieb:
> Möglicher Grund: Bei einem echten Reset werden die Register (r0...r31)
> von der Hardware gelöscht.

Ist das tatsächlich so?

von spess53 (Gast)


Lesenswert?

Hi

Der Hase liegt woanders im Pfeffer:

>Senden:               ldi ZH,LOW(Speicher)
>                      ldi ZL,HIGH(Speicher)

MfG Spess

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
Noch kein Account? Hier anmelden.