Hallo zusammen, habe ein Problem beim Setzen der Interruptvektoren am Anfang der Bootloader-Flash-Section mit dem at90usb1287. Wird der Bootloader gestartet, sollen zuerst die Interruptvektoren am Beginn der Bootloader-Flash-Section aktiv werden. Dies erledige ich in einer Assembler-Startup-Routine: .section .startup .global startup .func startup startup: ; move interrupt vectors to bootloader section lds r16, MCUCR ; get MCUCR ; mov r17, r16 ori r16, (1<<IVCE) ; enable change of interrupt vectors sts MCUCR, r16 ori r17, (1<<IVSEL) ; move interrupts to boot flash section sts MCUCR, r17 ; call main routine call main ret .endfunc Die Interrupt-Vektoren linke ich natürlich an Adresse 0xf000, so dass diese am Anfang der Bootloader-Section liegen. Auch die Bootsz Fuses sind programmiert (0). Startet der Bootloader nun auf, aktiviere ich nach der Initialisierung des UART und des USB die Interrupts durch den sei Befehl. Der Chip führt anschliessend sofort einen Reset aus. Eigentlich sollte an dieser Stelle der USB_GEN Interrupt auftreten. Hat jemand Rat? Danke und Gruss Martin
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.