mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Nicht verwendete Rücksprünge?


Autor: Holger P. (holg_i)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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????

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>reicht das????

Ja.

MfG Spess

Autor: Holger P. (holg_i)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!

@spess53: Hast Du mal in meinem Blog über meinen Code geschaut?

Autor: Holger P. (holg_i)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein das die UART bei der Neuinstallation nicht mehr richtig 
arbeitet?

; ***********************************************************************
; * Baudrate einstellen                                                 *
; ***********************************************************************
ldi Dummy1, HIGH(UBRR_VAL)
sts UBRR0H, Dummy1
ldi Dummy1, LOW(UBRR_VAL)
sts UBRR0L, Dummy1

; ***********************************************************************
; * RS232 Frame-Format: 8 Bit                                           *
; *********************************************************************** 
ldi Dummy1, (1<<RXEN0)|(1<<TXEN0) ; TX aktivieren, RX aktivieren 
sts UCSR0B, Dummy1
ldi Dummy1, (1<<USBS0)|(1<<UCSZ01)|(1<<UCSZ00) ; 8 Bit Daten kein Paraty, 1 Stopbit
sts UCSR0C, Dummy1 

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. :-(

Autor: Tobias Hagemeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.