Probleme mit Bootloader

Hallo Leute,

ich habe vor kuzem ein Lernpaket von Franzis (Arduino Freeduino Board). Nach einiger Zeit Eingewöhnung habe ich mein erstes Projekt (Ansteuerung von Lichtsignalen bei der Modelleisenbahn) fertig. Dann habe ich mir einen Atmega 168 gekauft und wollte den Bootloader brennen. Also alten 168 raus und neuen 168 aufs Board. Brennversuch mit Arduino 0022 und 0018 vergeblich. Bei beiden Versionen tauchen die selben Fehlermeldungen auf (Sinngemäß die Zelle 0x00 ist falsch beschrieben. Nun habe ich einen Programer my_avr MK2 USB. Auch diesen kann ich als Brenner in Arduino anwählen. Hier meldet Arduino einen Time out. Und zu guter letzt noch einen Versuch: Das Blinkprogramm auf den Original 168 laden, mit dem my_AVR als Hex File sichern und auf den neuen 168 brennen o.k. Problem: Die LED blinkt aber nicht wie im Original im 2 sec Takt sondern im 10sec. Takt. Hat jemand eine Idee?

Gruß Gnampf

...Die LED blinkt aber nicht wie im Original im 2 sec Takt sondern im 10sec. Takt. Hat jemand eine Idee?...

fusebits anders setzen, der takt stimmt nicht....intern/extern usw... aber vorsicht....beim setzen....

ich habe mit den bootloader auch die faxen dicke, gehe jetzt nur noch über isp..., wunderbar.

gruss

Danke,

habe die Bits mit my_AVR ausgelesen und in den neuen 168 übertragen. Jetzt funktioniert alles einwandfrei. Ich habe mal die Bits aufgeschrieben.

Low Fuse: Ext. Crystal OSC Frequenz 8,0-MHz Startup-Time 16CK/14CK + 4,1ms High Fuse: SPI und Brown-out detection disabled extendet Fuse: Boot Flashsection size = 1024 und Boot Reset Vector Enablet Log- Bits: Mode 1 und Application Protection Mode 1 und Bootloader Protection Mode 3

Wird beim Übertragen des Bootloaders nur der Bootloader oder auch der Blinkled Sketch mit übertragen ?

Bei der Übertragung mithilfe mit Hilfe des my_AVR MK2 USB (oder einer von Atmel angebotenen ISCP Lösung) wird der gesammte Flash ausgelesen. Also Sketch und Boodloader. Das so abgespeicherte Hexfile enthält, wenn vorher ein Blinkled Sketch auf dem Original Atmel geladen war, auch dieses. Beim anschließenden Brennen des neuen Atmel wird der gesammte Flash entsprechend des Hexfiles gebrannt. Jedoch ohne die Fusebits. Anschließend sind Sketch und Bootloader auf dem neuen Atmel.

Nur wenn man schon einen ISP hat, dann kann man den Bootloader auch gleich weglassen. Vor allem weil ein MKII mit 4 MHz flashen kann. Da kommt der Bootloader niemals hinterher. Bis der anfängt zu erkennen, daß es losgeht ist der MKII schon fast fertig.

Gruß, Udo

Hallo Udo,

Nur wenn man schon einen ISP hat, dann kann man den Bootloader auch gleich weglassen. Vor allem weil ein MKII mit 4 MHz flashen kann. Da kommt der Bootloader niemals hinterher. Bis der anfängt zu erkennen, daß es losgeht ist der MKII schon fast fertig.

Dazu habe ich eine Frage. Wie geht das mit Arduino? Wo finde ich die Hexfiles, falls Arduino solche erstellt. Ich kann das MKII zwar als Bootloader Brenner auswählen nicht aber als Arduino Bord zu übertragen der Sketches.

Guckst Du hier: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1273518090

Udo

Danke für den Link.

noch funktioniert es nicht. Ich muss wohl noch ein bischen probieren. Leider ist der Link zur Einbindung anderer Hardware auf der Arduinohompage nicht mehr aktuell. Ich gelange da auf eine neue Übersichtsseite und habe noch keine vernünftigen Parameter für die Einbindung des MKII gefunden.

Gruß Gnampf

Hab's jetzt auf die Schnelle nicht ausprobiert ob es noch klappt weil ich die IDE nur noch sehr selten verwende, aber es hat bei mir schon mal mit folgenden Einstellungen geklappt:

boards.txt:

##############################################################

atmega328ispmk2.name=Arduino ATmega328 AvrISPmkII

atmega328ispmk2.upload.maximum_size=32768
atmega328ispmk2.upload.using=avrispmkii

atmega328ispmk2.build.mcu=atmega328p
atmega328ispmk2.build.f_cpu=16000000L
#atmega328ispmk2.build.f_cpu=1000000L
atmega328ispmk2.build.core=arduino

##############################################################

atmega328isp.name=Arduino ATmega328 StangeISP

atmega328isp.upload.maximum_size=30720
atmega328isp.upload.using=stangeisp

atmega328isp.build.mcu=atmega328p
#atmega328isp.build.f_cpu=16000000L
atmega328isp.build.f_cpu=1000000L
atmega328isp.build.core=arduino

##############################################################

programmers.txt:

avrisp.name=AVR ISP
avrisp.communication=serial
avrisp.protocol=stk500v1

avrispmkii.name=AVRISP mkII
avrispmkii.communication=usb
avrispmkii.protocol=stk500v2

stangeisp.name=StangeISP
stangeisp.communication=/dev/serial/by-id/usb-Stange_Distribution_DX-ISP-if00
stangeisp.protocol=stk500v2

usbtinyisp.name=USBtinyISP
usbtinyisp.protocol=usbtiny

parallel.name=Parallel Programmer
parallel.protocol=dapa
parallel.force=true
# parallel.delay=200

arduinoisp.name=Arduino as ISP
arduinoisp.communication=serial
arduinoisp.protocol=stk500v1
arduinoisp.speed=19200

Achtung: das ist für Ubuntu Linux. Für Windows sind vermutlich andere Einstellungen bei ".communication" nötig. Mußt Du wohl etwas Googlen. Schreib Deine Erkenntnisse in den Thread damit andere das davon auch profitieren.

Udo

Nachtrag: wenn es nicht klappen sollte schauen was von folgenden Aktionen funktioniert bzw. auf welche Weise schief geht:

1) AVR Studio erkennt Programmer

2) ISP Geschwindigkeit auf 250kHz drosseln. 3) AVR Studio kann Arduino Controller Signatur lesen

4) ISP Geschwindigkeit hochstellen auf 1MHz 5) AVR Studio kann Arduino Controller Signatur lesen

6) ISP Geschwindigkeit hochstellen auf 2MHz 7) AVR Studio kann Arduino Controller Signatur lesen

8) ISP Geschwindigkeit hochstellen auf 4MHz 9) AVR Studio kann Arduino Controller Signatur lesen

10) ISP Zurückstellen auf die höchste Geschwindigkeit die noch erlaubt hat die Signatur zu lesen 11) Optional: herausfinden wo genau die Grenze ist

12) Arduino Bootloader aus Arduino IDE flashen

13) Mit Avrdude eine Verbindung zum Controller herstellen /usr/bin/avrdude -t -p m328 -P usb -c avrispmkII

13b) ggf. andere Einstellungen nach -p (=part = Teil) bzw. -P (=Path = Pfad) versuchen

14) Arduino IDE boards.txt richtig einstellen

15) Versuchen ob die Arduino IDE richtig flasht

Wenn die Schritte vorher nicht klappen, dann wird es mit der IDE eher schwierig. Bei mir geht das alles problemlos, aber ich habe da mittlerweile auch ziemlich viel Übung.

Udo

Hallo Udo,

danke für die Tips. 1 - nein Der my_AVR MKII wird unter AVRISP angesprochen (die entsprechenden LEDs blinken). Es erscheint die Fehlermeldung conectet Fehler. Sorry aber ich bin nicht so gut im Neudeutsch. Ich babe nicht den Programmer AVRMKII von Atmel sondern den my_AVR MKII. Sie sollen laut Beschreibung kompatibel zu AVR910 und AVR911 sein. Aber vielleicht ist genau das ein Problem.

Hmm, das versteh ich jetzt nicht. Wie hast Du den Flash Speicher ausgelesen wenn AVR Studio nicht funktioniert?