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?
Ein Jump zu Null macht keinen Reset der Hardware. Eine Seite ... http://www.ibrtses.com/embedded/avrasmuartint.html
Du springst mit "rjmp Senden" in die Senderoutine und beendest diese dann mir einem "ret", das kann nicht gut gehen...
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.
Vuvuzelatus schrieb: > Möglicher Grund: Bei einem echten Reset werden die Register (r0...r31) > von der Hardware gelöscht. Ist das tatsächlich so?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.