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';
}
}
}
Gast
#1619147
Sollte prinzipiell gehen. Welcher AVR Controller? Wie verbiegst Du in deinem makefile die .text section nach 0xc00? xelarep
Gast
#1647126
Na in den Projekteinstellungen -> Memory Settings -> neuer Eintrag (add) -> (Typ=Flash),(Name=.text),(Adress=0xC00) mein controller ist ein Atmega88
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
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.