Forum: Mikrocontroller und Digitale Elektronik Problem beim Flashen des Arduino-Bootloaders


von Florian K. (bardaky)


Lesenswert?

Hallo,

ich möchte einen ATmega8-16 PU mit dem Arduino Bootloader flashen.
Ich habe es bisher mit einem Minimal-Parallel-Programmer, dem originalen 
USBasp und einem Arduino als ArduinoISP versucht.
Sowohl in der Arduino IDE als auch mit avrdude in der Konsole kommt bei 
mir immer wieder der Fehler "verification error, first mismatch at byte 
0x0000 0xd9 != 0x00"

Eine Anomalie, die mir aufgefallen ist, ist die Tatsache, dass an dem uC 
nur 4,88 V ankommen.

Momentan habe ich ihn am Arduino angeschlossen, über die minimale 
Schaltung, also ohne Quarz etc. um den Bootloader zu flashen.

Das USBasp funktioniert interessanterweise nur an mega8'ten nicht, an 
einem mega168 funktioniert es genauso wie das ArduinoISP.

Ich bedanke mich jetzt schonmal für jede Hilfe.

MFG Bardaky

von EGS (Gast)


Lesenswert?

4,88V sind doch noch keine Anomalie...

Wenn du den Arduino als ISP programmiert daziwschen hast, ist der ATMEGA 
so eingestellt dass er, wenn du keinen Quarz hast auch seinen internen 
Takt benutzt oder hat der nen quarz?

Auch den 10µF Kondi zwischen Reset und Ground eingebaut und den 
ArduinoISP Sketch angepasst?

MfG, EGS

PS: schau doch mal die ANleitung an unter : 
http://arduino.cc/en/Tutorial/ArduinoISP

von Florian K. (bardaky)


Lesenswert?

Anomalie in Hinblick darauf, dass ich da bisher eigentlich immer 5V 
messen konnte, aber egal.


Nein der hat keinen Quarz, allerdings habe ich die Fuses so eingestellt 
(hoffe ich zumindest), dass der seinen internen Takt nutzt.

Wofür ist denn der Kondi da? Ich habe den auf der Anleitung auf der 
Arduino Hp, die du auch verlinkt hast nicht gefunden, und danach habe 
ich schließlich gebaut, und danach hat es mit einem mega168 auch 
funktioniert.

Wie muss ich denn den Sketch anpassen? Den vom ArduinoISP ?
Denn auf den mega8 will ich eigentlich erstmal nur den Bootloader 
flashen.


Mfg Bardaky

von Florian K. (bardaky)


Lesenswert?

Was mich viel mehr wundert ist, dass ich den Chip mit avrdude erasen 
kann, seine Fuses setzen kann, er aber bei der verification von der 
hfuse den fehler ausspuckt

von Florian K. (bardaky)


Lesenswert?

so, ich arbeite zwar schon seit mehreren tagen dran, aber mir kam grade 
die idee, das dochmal ohne die fuses zu testen. und siehe da, ich kann 
den chip flashen!

ABER: dann kommt der schöne verification fehler bei byte 0x0000 mal 
wieder zum vorschein!

und ich versteh nicht ganz, wie aus einem 2,9 kB großem HEX-File 8170 
Bytes werden, die auf den Chip geflasht wurden. Zumal der Chip ja nur 
8kB Flash hat....

So langsam versteh ich gar nix mehr :D

von Florian K. (bardaky)


Lesenswert?

UPDATE:

Inzwischen ist es mir gelungen, dass ich .hex-files draufflashen kann.
Jedoch habe ich Probleme, was den Arduino Bootloader angeht. Laut 
Website braucht der Bootloader für den Mega8 nur 1kB Flash.
Wenn ich jedoch die .hex davon flashe, sagt er mir, dass er 8107 Bytes 
geflasht hat, aber der Mega8 hat ja gar nicht so viel Platz.
Weiß jemand woran das liegen kann?
Ich bin da inzwischen ziehmlich ratlos.....

Leider weiß ich auch nicht, ob ich den verfused hab, ich hatte zwar 
eigentlich die richtigen fuses gesetzt, laut dem burn-o-mat online 
fuserechner, aber irgendwie funktioniert auch das simpelste Programm, 
das lediglich Pin PB5 (interne LED auf dem Arduino) aktiviert.

#include <avr/io.h>


int main(void)
{
    DDRB |= (1 << PB5); // PB5 als Ausgang festlegen
  PORTB |= (1 << PB5); // PB5 aktivieren
}


Ich bin mir aber auch nicht ganz sicher, ob ich bei dem Programm noch 
mehr dazuschreiben muss.

Bin für jede Hilfe dankbar

MfG

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
Noch kein Account? Hier anmelden.