Hallo allerseits,
ich wollte mal zu Übungszwecken, möglichst ohne zu Denken dieses
Tutorial
http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung
ausprobieren, da ich erst Erfahrung mit dem Bootlader sammeln wollte,
bevor ich das IRMP nachbaue. Also habe ich mir das erst mal ausführlich
durchgelesen.
Nun hatte ich mir extra bei Reichelt mehrere Mikrocontroller-Typen
bestellt, damit ich in solchen Fällen genau den richtigen aus der Kiste
ziehen kann, der im Tutorial vorgeschlagen wird. In diesem Fall war der
Mega88 defekt!! Kam schon mit verbogenen Pins an. Ebenso die beiden
Mega168-Exemplare. Was geht, sind die Mega8-8-Typen und die
Mega8-16-Typen, die einwandfrei ankamen. Mega48er sind auch einwandfrei.
Deshalb stehe ich jetzt in der Not, das Programm aus dem Tutorial an den
Mega8 anpassen zu müssen, denn es macht schlicht nichts! das heißt,
nicht ganz: eine Kontroll-LED vor der Schleife eingefügt, blinkt.
Startet das Programm immer wieder neu? Ich mußte im Datenblatt nachlesen
wegen der "BOOTRST-Fuse" und der Einstellung "BOOTSZ auf 1024 words".
Folgende Fuses habe ich auf 1 (=unprogrammed) gesetzt: BOOTSZ1, BOOTSZ0,
BOOTRST, CKSEL2 ->8MHz
hier noch ein Ausschnitt aus main.c:
/* Interrupt Vektoren verbiegen */
char sregtemp = SREG;
cli();
temp = GICR;
GICR = temp | (1<<IVCE);
GICR = temp | (1<<IVSEL);
SREG = sregtemp;
....
cli();
Enable change of Interrupt
GICR = (1<<IVCE);
Move interrupts to boot Flash section
GICR = (1<<IVSEL);*/
Also wenn die Geschichte mit den IVCE und IVSEL-Bits nicht stimmt, geht
es im nächsten Schritt wieder schief, wenn der "echte" Bootlader dran
kommt. Siehe "main.c"
Diese UART-Library habe ich verwendet:
http://beaststwo.org/avr-uart/Updated%20_UART_Library.zip
Der Programmcode erscheint in Ponyprog ab Adresse 1800 hex. Wie
erwartet.
Es erscheint in AVR-Studio 4.18 folgende Warnung:
../main.c:38: warning: unused variable 'p_mode'
Hat da jemand vielleicht eine Idee, was ich da ändern könnte?
mit freundlichem Gruß