Keine Interrupts im Bootloader

#1545009
Lesenswert?

Hallo Leute ich vesuche gerade einen Bootloader zu schreiben, im Prinzip 
iss alles klar, nur bekomm ich die Interrupts für die UART nicht ins 
laufen.
Ohne ints funzt der UART, aber dass iss ja nicht sinn der Sache.
Ich habe die BTL Startadresse 0xC00
und die Interrupttabelle habe ich auch verschoben, fehlt da noch was ?
Ich benutze die UART LIB von Peter Fleury

Gruß Andreas

hier mein Code:

#include<avr/io.h>
#include<avr/boot.h>
#include <avr/interrupt.h>
//#include"i2cmaster.h"
#include <avr/wdt.h>
#include "uart.h"


#define cbi(REG,bit) REG &= ~(1<<bit)
volatile unsigned int  PageSize;
volatile unsigned int  PageStartAdress;
volatile unsigned int  Pagecount;
volatile unsigned char Bootloader_Request_Flag;

void (*jump_to_main_application)( void ) = 0x0000;


int main(void)
{
/*
  unsigned int wait=0;

        GICR=(1<<IVCE);
  GICR=(1<<IVSEL);

   uart_init ( UART_BAUD_SELECT  (9600 ,16000000 ));

  sei();
  while ( 1 )
  {
  wait ++;
    if ( wait == 0 )
    {
         uart_putc('H');
    //UDR  = 'H';
    }
  }
}
#1647253
Lesenswert?

Andreas schrieb:
> mein controller ist ein Atmega88

Tatsächlich? Und wie passt das mit diesen Zeilen zusammen?
> GICR=(1<<IVCE);
> GICR=(1<<IVSEL);
Der ATmega88 hat überhaupt kein Register "GICR".
Und was hat das vereinzelte "/*" gleich am Anfang von main da zu suchen?
Und wo ist überhaupt die ISR, die nicht funktionieren soll?

Poste mal den echten Code, dann kann man vielleicht auch was Konkretes 
zu deinem Problem sagen.
Gast #1784002
Lesenswert?

Ich empfehle für das Verbiegen der IRQ-Tabelle Assembler-Routinen zu 
nutzen, um sicherzustellen, dass die Taktanforderung (Umschaltung 
innerhalb von 4 Taktzyklen) garantiert eingehalten wird - auch ohne 
Optimizer. Entsprechende Beispielcodes findet man in den Datenblättern/ 
ANs der Controller. Wenn du uns nicht mitteilst, welchen Controller du 
tatsächlich einsetzt, dann können wir dir nicht weiterhelfen.

Gruß,
Saga

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren