atmega 169 bootloader int problem

Gast #2411019
Lesenswert?
• ▲
▼
Hallo,

ich habe ein hier bereits öfter beschriebenes Problem. Ich habe für 
meinen Atmega169 einen Bootloader geschrieben. Der soll einen externen 
Interrupt benutzen. wenn der Interrupt auslöst, wir nicht die ISR, 
sondern ein RESET ausgelöst. ich vermute, dass bei der Adressierung 
etwas schief läuft, finde jedoch nicht das Problem.
Zu meiner Configuration:
Fuses:
1
BOOTSZ1 = 0
2
BOOTSZ0 = 0
3
BOOTRST = 0
Laut Tabelle 113 auf Seite 264 im Datenblatt habe ich so 1024 words, 
also 2048 bytes oberhalb von addr 0x1C00. Deshalb gebe ich dem Linker 
"-Ttext=0x1C00" mit (Ich benutze den avr-gcc).
Der Code ist kleiner als 2k und läuft auch an.
Das Umrouten der Interruptvektoren mache ich mit folgendem Code:
1
uint8_t sreg = SREG;
2
cli();
3
uint8_t mcucr = MCUCR;
4
MCUCR = mcucr | (1 << IVCE);
5
MCUCR = mcucr | (1 << IVSEL);
6
SREG = sreg;
7
sei();
Der externe Interrupt wird mit
1
DDRD &= ~(1 << DDD1);
2
PORTD |= (1 << PD1);
3
EICRA = 0;
4
EICRA |= (1 << ISC01);
5
EIMSK = 0;
6
EIMSK |= (1 << INT0);
initialisiert, die ISR sieht folgendermaßen aus:
1
ISR(INT0_vect) {
2
    switch (m_radio_mode) {
3
    case RADIO_MODE_RX:
4
        m_rx_active = true;
5
        break;
6

7
    case RADIO_MODE_TX:
8
        m_tx_active = false;
9
        break;
10
    }
11
}
Wenn ich das als "normale" Application baue, dann läuft's, jedoch im 
Bootloader mode schmiert's mit dem eintreffenden Interrupt ab. Jemand 
'ne Ahnung, was ich da falsch mache?

Gr.
Gast #2411280
Lesenswert?
• ▲
▼
Hallo,

's scheint die Adresse gewesen zu sein, wenn ich auf 0x3800 umstelle, 
dann gibt's keinen reset mehr (allerdings löst der interrupt auch nicht 
aus...)
ich schau halt noch 'n bisschen weiter...

Gr.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.