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.