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'; } } }
Sollte prinzipiell gehen. Welcher AVR Controller? Wie verbiegst Du in deinem makefile die .text section nach 0xc00? xelarep
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.