www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootloader - Interrupt Problem - AT90CAN128


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Forumskollegen!

Meine zugrundeliegende Hard/Software:

Controller: AT90CAN128
Compiler: WINAVR
IDE: AVR Studio 4.17

Mein Problem:

Ich bin dabei einen CAN-Bootloader für den AT90CAN128 zu schreiben, 
jedoch habe ich noch ein gewisses Problem.
Das Szenario sieht folgendermaßen aus:
Ich habe zwei Programme welche in den AVR-geflasht werden. Das 
Hauptprogramm, welches ab Adresse 0 abgelegt wird, und den Bootloader, 
welcher über ein selbstständiges AVR-Studio Projekt erstellt wurde, und 
mittels Linker Kommando (-Wl,--section-start=.text=0x1E000) im 
Flashbereich des Bootloader abgelegt wird.
Ich kann vom Hauptprogramm in den Bootloader und wieder zurück springen 
- kein Problem.
Ich nutze derzeit im Bootloader die selbe CAN-Libary welche ich auch im 
Hauptprogramm verwende. (Ist derzeit einiges an unnötigem Code, aber 
weiß dass er wirklich funktioniert, da das Hauptprogramm mit diesem Code 
schon einige Monate im Einsatz ist und alles zufriedenstellend läuft).
Das Problem ist nun folgendes:
Wenn ich im Bootloader die Interrupts aktiviere und eine CAN-Nachricht 
an das Board sende, dann "hängt" das ganze und der AVR reagiert nicht 
mehr.
Was könnte da das Problem sein?
Da Bootloader und Hauptprogramm wirklich 2 komplett separate Programme 
sind, war ich bis jetzt der Meinung, dass auch jedes Programm seine 
eigene Interrupttabelle verwendet.
Muss ich hier dennoch etwas umstellen?
Ich habe schon einiges an Erfahrung in der AVR-Programmierung, nur im 
Bootloaderbereich bin ich noch etwas neu.

Vielen Dank für Eure Hilfe!

Max

Autor: HolgerT (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max schrieb:
> dass auch jedes Programm seine
> eigene Interrupttabelle verwendet.


..dann studiere mal das Datenblatt zum uC. In der Regel ist es so, dass 
nur eine Interrupt-Vektor-Tabelle (gewöhnlich ab Addr-0) existiert. Ich 
habe ähnliches mit einem 8051-Clone realisiert und aus diesem Grund im 
Bootlader komplett auf Interrupts verzichtet.
MfG
Holger

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max schrieb:
> Da Bootloader und Hauptprogramm wirklich 2 komplett separate Programme
> sind, war ich bis jetzt der Meinung, dass auch jedes Programm seine
> eigene Interrupttabelle verwendet.

Ja, beide haben ihre eigene Interruptvektortabelle. Aber du musst dem µC 
auch sagen, welche jeweils gerade verwendet werden soll. Suche im 
Datenblatt nach dem IVSEL Bit.

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan und Holger,

das Problem ist gelöst. Ich habe nochmals nachgelesen, und hatte das 
Anfangs falsch verstanden.
Es funktioniert jetzt.

Vielen Dank!

Max

Autor: Martin J. (bluematrix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Euch allen...

Ich möchste auch eienn Bootloader via Can und dem AT90CAN realisieren...
Kann mir jemand dazu die entsprechenden programme schicken?

grüße martin

Autor: Martin J. (bluematrix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo euch allen,

ich bin schon seit einiger Zeit auf der Suche nach einem CAN-Bootlader
für den AT90CAN. Leider konnte ich dazu aber kein fertiges Projekt
finden.
Genauere Informationen gibt es unter fogendem Link:

Titel - Beitrag "CAN BUS Bootloader AT90CAN"

Ich hoffe es finden sich einige um dieses Projekt zu realisieren oder
die dabei helfen können.

Grüße martin

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.