Habe da noch eine kleine Frage. Wieder außerhalb meines Blog’s (ich glaube da liest nicht wirklich jemand). Mein BootLoader läuft und auch die PC-Software habe ich geschrieben (war auch nicht einfach), nun aber meine Frage: Es könnte passieren dass mein Hauptprogramm bei 0x000 vom Bottloader aufgerufen wird. Dadurch kann es vorkommen dass wohl noch Rücksprungadressen auf dem Stack liegen. Wie kann ich sichergehen das beim Starten des Hauptprogramms der µC jungfräulich ist. Reicht da das Initialisieren der Stack’s? Also ich rufe ein Unterprogramm mit rcall auf. In diesem kann es vorkommen das die Routine aber mit breq HauptStart und in HauptStart: rjmp 0x0000 nie wieder zu seinem rcall zurück kommt. Klar mach ich im Hauptprogramm in 0x000 ein ldi Dummy1, high(RAMEND) out SPH,Dummy1 ldi Dummy1, low(RAMEND) out SPL,Dummy1 reicht das????
Danke! @spess53: Hast Du mal in meinem Blog über meinen Code geschaut?
Kann es sein das die UART bei der Neuinstallation nicht mehr richtig arbeitet?
1 | ; *********************************************************************** |
2 | ; * Baudrate einstellen * |
3 | ; *********************************************************************** |
4 | ldi Dummy1, HIGH(UBRR_VAL) |
5 | sts UBRR0H, Dummy1 |
6 | ldi Dummy1, LOW(UBRR_VAL) |
7 | sts UBRR0L, Dummy1 |
8 | |
9 | ; *********************************************************************** |
10 | ; * RS232 Frame-Format: 8 Bit * |
11 | ; *********************************************************************** |
12 | ldi Dummy1, (1<<RXEN0)|(1<<TXEN0) ; TX aktivieren, RX aktivieren |
13 | sts UCSR0B, Dummy1 |
14 | ldi Dummy1, (1<<USBS0)|(1<<UCSZ01)|(1<<UCSZ00) ; 8 Bit Daten kein Paraty, 1 Stopbit |
15 | sts UCSR0C, Dummy1 |
16 | |
17 | cli ;Alle Interrups aus |
So Installiere ich die UART nach dem ich sie genau so im BootLoader konfiguriert habe. Also im BootLoader mach ich das ganz genau so. Springe vom BootLoader ins Hauptprogramm 0x000 und mach das noch mal. Aber die Ausgabe will nicht mehr so wie sie soll. :-(
Moin, nur so eine kurze Vermutung (und je nach µC vielleicht auch unterschiedlich): Kann es sein, dass du TXEN und RXEN erst löschen musst bevor du die Einstellungen änderst? Ich könnte mir durchaus vorstellen das er damit Probleme hat. Andere Geschichte wäre der Interrupt-Vektor. Wird der korrekt in den Application Space zurück gebogen falls du ihn im Bootloader benutzt? Gruß, Tobi
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.