Hallo, ich habe mal den Bootloader ausprobieren wollen.. http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung Ich verwende Ihn mit einer eigenen uart lib. AN der Stelle " uart_puts("Hallo hier ist der echte Bootloader\n\r"); _delay_ms(2000); " sollte ich normal per Uart ein zeichen senden, jedoch wenn ich das tue geht garnichts mehr, er bleibt stehen sobald das Interrupt ISR(USART_RX_vect) aufgerufen wird. Ich bin mir sicher ich hab nur irgend was kleines Übersehen. Dieser Teil wird wie im Artikel angegeben auch benuzt /* Interrupt Vektoren verbiegen */ temp = MCUCR; MCUCR = temp | (1<<IVCE); MCUCR = temp | (1<<IVSEL);
Ich bin ein Stückchen weiter..
wenn ich die
temp = MCUCR;
MCUCR = temp | (1<<IVCE);
MCUCR = temp | (1<<IVSEL);
weg lasse, dann geht es komischerweise wieder, was mich wundert ist
das trotz dem -TText=1800 paramenter die .lss sowie die .hex identisch
sind.
Müsste in der .lss nicht zu sehen sein das der Interrupt z.B. für
USART_RX an einer anderen Adresse sein müsste?
.lss:
24: 39 c0 rjmp .+114 ; 0x98 <__vector_18>
Hier ists dabei.. avr-gcc -mmcu=atmega88pa -Wall -gdwarf-2 -std=gnu99 -Ttext=0x1800 -DF_CPU=11059200UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT uart.o -MF dep/uart.o.d -c ../uart.c
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.