Hallo zusammen Ich hab mir etwas hübsches zusammengebaut, das mit Batterien betrieben werden soll. Deshalb habe ich den stromsparenden atmega168PV-10AU eingebaut und auf einen externen Quarz oder ähnliches verzichtet. Nun versuche ich den Bootloader über das Arduino Uno Board zu installieren, während ich als Zielboard das Lilypad168 angegeben habe, da für dieses die Fuses bereits auf internen Oszillator gesetzt sind. Die Arduino IDE meldet mir nun aber den folgenden Fehler: avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. Nach ein wenig herumgegoogle kam ich zum Schluss, dass das Problem sein muss, dass ich die PV-10AU Variante des atmega168 verwende, womit die IDE nicht rechnet, da das Lilypad mit einer anderen Variante des atmega168 bestückt ist. Allerdings konnte ich noch keine Lösung finden, wie ich meine Variante über die IDE und das ArduinoUno Board mit dem Bootloader meiner Träume beglücken kann Weiss jemand von euch Rat? Nachtrag 1: Mittlerweilen habe ich herausgefunden, dass sich im Arduino.app Paket eine Datei namens boards.txt befindet. Dort konnte ich einfach den Eintrag für das Lilypad kopieren und umbenennen, sodass ich nun in der Arduino IDE ein neues Board zur Auswahl habe. Die Fuses kann ich dort offensichtlich ebenfalls anpassen. Der neue Eintrag lautet nun folgendermassen: 168pv.name= ATmega168PV-10AU 168pv.upload.protocol=arduino 168pv.upload.maximum_size=14336 168pv.upload.speed=19200 168pv.bootloader.low_fuses=0xc2 168pv.bootloader.high_fuses=0xff 168pv.bootloader.extended_fuses=0xff 168pv.bootloader.path=lilypad 168pv.bootloader.file=LilyPadBOOT_168.hex 168pv.bootloader.unlock_bits=0x3F 168pv.bootloader.lock_bits=0x0F 168pv.build.mcu=atmega168 168pv.build.f_cpu=8000000L 168pv.build.core=arduino 168pv.build.variant=standard Allerdings weiss ich nicht, ob ich etwas an den lock und unlock bits ändern muss und was die untersten 4 Zeilen zu bedeuten haben und ob ich die anpassen müsste, weiss ich auch nicht. Ausserdem verweist der Eintrag auf die Lilypad Bootloader Hexdatei, die ebenfalls in diesem Paket zu finden ist. Muss ich möglicherweise diese auch verändern? Und wenn ja, wie? Ich habe keine Ahnung was diese Hexcodes bedeuten... Nachtrag 2: Bei build.mcu atmega168p einzufügen ist auch nicht gegangen und auf den diecimila bootloader zu verweisen hat auch nicht funktioniert.
Hallo, da die Chips soweit gleich sind solltest du in der Konfig eingentlich nur mit dieser Zeile "168pv.build.mcu=atmega168" den Controllertyp einstellen. Wenn die IDE avrdude zum schreiben verwendet müsste der Controllertyp aus der Config noch mal irgendwie umgestetzt werden denn AVRdude würde für den atmega168 -m168 erwarten. Also scheint es so als ob dort der Controller nicht bekannt ist, oder aber einen anderen Namen hat. Sascha
Du hast einen 168P. Den musst du auch einstellen. Jetzt steht er auf 168 ohnewas. Die haben verschiedene Signaturen, daher die Fehlermeldung. Mit 168PV-10AU kann Avrdude nichts anfangen. V ist der Spannungsbereich, 10 die maximale Frequenz und AU das Gehäuse. Das interessiert den Programmer nicht. mfg.
Habe nun also die unten angefügte Boarddefinition übernommen und eine modifizierte avrdude.config installiert, in der der 168p ebenfalls definiert ist. Funktioniert aber noch immer nicht. Ich verstehs nicht. :( Boarddefinition: ############################################################## diecimilaP.name=Arduino Diecimila, Duemilanove, or Nano w/ ATmega168P diecimilaP.upload.protocol=stk500 diecimilaP.upload.maximum_size=14336 diecimilaP.upload.speed=19200 diecimilaP.bootloader.low_fuses=0xff diecimilaP.bootloader.high_fuses=0xdd diecimilaP.bootloader.extended_fuses=0x00 diecimilaP.bootloader.path=atmega diecimilaP.bootloader.file=ATmegaBOOT_168_diecimila.hex diecimilaP.bootloader.unlock_bits=0x3F diecimilaP.bootloader.lock_bits=0x0F diecimilaP.build.mcu=atmega168P diecimilaP.build.f_cpu=16000000L diecimilaP.build.core=arduino Auszug aus der .config: #------------------------------------------------------------ # ATmega168P #------------------------------------------------------------ part id = "m168p"; desc = "ATMEGA168P"; has_debugwire = yes; flash_instr = 0xB6, 0x01, 0x11; eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, 0x99, 0xF9, 0xBB, 0xAF; stk500_devcode = 0x86; # avr910_devcode = 0x; signature = 0x1e 0x94 0x0b; pagel = 0xd7; bs2 = 0xc2; chip_erase_delay = 9000; pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x"; chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x"; timeout = 200; stabdelay = 100; cmdexedelay = 25; synchloops = 32; bytedelay = 0; pollindex = 3; pollvalue = 0x53; predelay = 1; postdelay = 1; pollmethod = 1; pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; progmodedelay = 0; latchcycles = 5; togglevtg = 1; poweroffdelay = 15; resetdelayms = 1; resetdelayus = 0; hvleavestabdelay = 15; resetdelay = 15; chiperasepulsewidth = 0; chiperasepolltimeout = 10; programfusepulsewidth = 0; programfusepolltimeout = 5; programlockpulsewidth = 0; programlockpolltimeout = 5; memory "eeprom" paged = no; page_size = 4; size = 512; min_write_delay = 3600; max_write_delay = 3600; readback_p1 = 0xff; readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", " 0 0 0 x x x x a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", " 0 0 0 x x x x a8", " a7 a6 a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x x a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; mode = 0x41; delay = 5; blocksize = 4; readsize = 256; ; memory "flash" paged = yes; size = 16384; page_size = 128; num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; readback_p1 = 0xff; readback_p2 = 0xff; read_lo = " 0 0 1 0 0 0 0 0", " 0 0 0 a12 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; read_hi = " 0 0 1 0 1 0 0 0", " 0 0 0 a12 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; loadpage_lo = " 0 1 0 0 0 0 0 0", " 0 0 0 x x x x x", " x x a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_hi = " 0 1 0 0 1 0 0 0", " 0 0 0 x x x x x", " x x a5 a4 a3 a2 a1 a0", " i i i i i i i i"; writepage = " 0 1 0 0 1 1 0 0", " 0 0 0 a12 a11 a10 a9 a8", " a7 a6 x x x x x x", " x x x x x x x x"; mode = 0x41; delay = 6; blocksize = 128; readsize = 256; ; memory "lfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", "x x x x x x x x i i i i i i i i"; ; memory "hfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", "x x x x x x x x i i i i i i i i"; ; memory "efuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", "x x x x x x x x x x x x x o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "x x x x x x x x x x x x x i i i"; ; memory "lock" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", "x x x x x x x x x x o o o o o o"; write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", "x x x x x x x x 1 1 i i i i i i"; ; memory "calibration" size = 1; read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", "0 0 0 0 0 0 0 0 o o o o o o o o"; ; memory "signature" size = 3; read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", "x x x x x x a1 a0 o o o o o o o o"; ; ;
immer noch der selbe avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check.
Habe in den Einstellungen die ausführlichen Meldungen für den Upload aktiviert und folgendes Protokoll erhalten, nachdem ich "Bootloader installieren" ausgeführt habe:
1 | /Applications/Arduino-1.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino-1.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pATMEGA168P -cstk500v1 -P/dev/tty.usbmodem1411 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xff:m -Uhfuse:w:0xff:m -Ulfuse:w:0xc2:m |
2 | |
3 | avrdude: Version 5.11, compiled on Sep 2 2011 at 18:52:52 |
4 | Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ |
5 | Copyright (c) 2007-2009 Joerg Wunsch |
6 | |
7 | System wide configuration file is "/Applications/Arduino-1.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf" |
8 | User configuration file is "/Users/meinName/.avrduderc" |
9 | User configuration file does not exist or is not a regular file, skipping |
10 | |
11 | Using Port : /dev/tty.usbmodem1411 |
12 | Using Programmer : stk500v1 |
13 | Overriding Baud Rate : 19200 |
14 | avrdude: Send: 0 [30] [20] |
15 | avrdude: Send: 0 [30] [20] |
16 | avrdude: Send: 0 [30] [20] |
17 | avrdude: Recv: . [14] |
18 | avrdude: Recv: . [10] |
19 | AVR Part : ATMEGA168P |
20 | Chip Erase delay : 9000 us |
21 | PAGEL : PD7 |
22 | BS2 : PC2 |
23 | RESET disposition : dedicated |
24 | RETRY pulse : SCK |
25 | serial program mode : yes |
26 | parallel program mode : yes |
27 | Timeout : 200 |
28 | StabDelay : 100 |
29 | CmdexeDelay : 25 |
30 | SyncLoops : 32 |
31 | ByteDelay : 0 |
32 | PollIndex : 3 |
33 | PollValue : 0x53 |
34 | Memory Detail : |
35 | |
36 | Block Poll Page Polled |
37 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack |
38 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- |
39 | eeprom 65 20 4 0 no 512 4 0 3600 3600 0xff 0xff |
40 | Block Poll Page Polled |
41 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack |
42 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- |
43 | flash 65 6 128 0 yes 16384 128 128 4500 4500 0xff 0xff |
44 | Block Poll Page Polled |
45 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack |
46 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- |
47 | lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 |
48 | Block Poll Page Polled |
49 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack |
50 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- |
51 | hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 |
52 | Block Poll Page Polled |
53 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack |
54 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- |
55 | efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 |
56 | Block Poll Page Polled |
57 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack |
58 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- |
59 | lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 |
60 | Block Poll Page Polled |
61 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack |
62 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- |
63 | calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 |
64 | Block Poll Page Polled |
65 | Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack |
66 | ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- |
67 | signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 |
68 | |
69 | Programmer Type : STK500 |
70 | Description : Atmel STK500 Version 1.x firmware |
71 | avrdude: Send: A [41] . [80] [20] |
72 | avrdude: Recv: . [14] |
73 | avrdude: Recv: . [02] |
74 | avrdude: Recv: . [10] |
75 | avrdude: Send: A [41] . [81] [20] |
76 | avrdude: Recv: . [14] |
77 | avrdude: Recv: . [01] |
78 | avrdude: Recv: . [10] |
79 | avrdude: Send: A [41] . [82] [20] |
80 | avrdude: Recv: . [14] |
81 | avrdude: Recv: . [12] |
82 | avrdude: Recv: . [10] |
83 | avrdude: Send: A [41] . [98] [20] |
84 | avrdude: Recv: . [14] |
85 | avrdude: Recv: . [00] |
86 | avrdude: Recv: . [10] |
87 | Hardware Version: 2 |
88 | Firmware Version: 1.18 |
89 | Topcard : Unknown |
90 | avrdude: Send: A [41] . [84] [20] |
91 | avrdude: Recv: . [14] |
92 | avrdude: Recv: . [00] |
93 | avrdude: Recv: . [10] |
94 | avrdude: Send: A [41] . [85] [20] |
95 | avrdude: Recv: . [14] |
96 | avrdude: Recv: . [00] |
97 | avrdude: Recv: . [10] |
98 | avrdude: Send: A [41] . [86] [20] |
99 | avrdude: Recv: . [14] |
100 | avrdude: Recv: . [00] |
101 | avrdude: Recv: . [10] |
102 | avrdude: Send: A [41] . [87] [20] |
103 | avrdude: Recv: . [14] |
104 | avrdude: Recv: . [00] |
105 | avrdude: Recv: . [10] |
106 | avrdude: Send: A [41] . [89] [20] |
107 | avrdude: Recv: . [14] |
108 | avrdude: Recv: . [00] |
109 | avrdude: Recv: . [10] |
110 | Vtarget : 0.0 V |
111 | Varef : 0.0 V |
112 | Oscillator : Off |
113 | SCK period : 0.1 us |
114 | |
115 | avrdude: Send: A [41] . [81] [20] |
116 | avrdude: Recv: . [14] |
117 | avrdude: Recv: . [01] |
118 | avrdude: Recv: . [10] |
119 | avrdude: Send: A [41] . [82] [20] |
120 | avrdude: Recv: . [14] |
121 | avrdude: Recv: . [12] |
122 | avrdude: Recv: . [10] |
123 | avrdude: Send: B [42] . [86] . [00] . [00] . [01] . [01] . [01] . [01] . [03] . [ff] . [ff] . [ff] . [ff] . [00] . [80] . [02] . [00] . [00] . [00] @ [40] . [00] [20] |
124 | avrdude: Recv: . [14] |
125 | avrdude: Recv: . [10] |
126 | avrdude: Send: E [45] . [05] . [04] . [d7] . [c2] . [00] [20] |
127 | avrdude: Recv: . [14] |
128 | avrdude: Recv: . [10] |
129 | avrdude: Send: P [50] [20] |
130 | avrdude: Recv: . [14] |
131 | avrdude: Recv: . [10] |
132 | avrdude: AVR device initialized and ready to accept instructions |
133 | |
134 | Reading | avrdude: Send: V [56] 0 [30] . [00] . [00] . [00] [20] |
135 | avrdude: Recv: . [14] |
136 | avrdude: Recv: . [00] |
137 | avrdude: Recv: . [10] |
138 | avrdude: Send: V [56] 0 [30] . [00] . [01] . [00] [20] |
139 | avrdude: Recv: . [14] |
140 | avrdude: Recv: . [00] |
141 | avrdude: Recv: . [10] |
142 | ################avrdude: Send: V [56] 0 [30] . [00] . [02] . [00] [20] |
143 | avrdude: Recv: . [14] |
144 | avrdude: Recv: . [00] |
145 | avrdude: Recv: . [10] |
146 | ################################## | 100% 0.06s |
147 | |
148 | avrdude: Device signature = 0x000000 |
149 | avrdude: Yikes! Invalid device signature. |
150 | Double check connections and try again, or use -F to override |
151 | this check. |
152 | |
153 | avrdude: Send: Q [51] [20] |
154 | avrdude: Recv: . [14] |
155 | avrdude: Recv: . [10] |
156 | |
157 | avrdude done. Thank you. |
Daraus schliesse ich einerseits, dass das verwendete avrdude.conf sich im Arduino Anwendungspaket selbst befindet und nicht dieses verwendet wird, welches ich angepasst habe. Der 168p ist in dieser Version allerdings bereits vorhanden, hier kann der Fehler also nicht gesteckt haben. Gegen das Ende des Protokolls verrät er mir zudem, dass die entdeckte Signatur 0x000000 sein soll, die dann eben nicht mit der im .conf file übereinstimmt, was mich ein wenig skeptisch macht. Die Signatur in der .conf entsprechend zu ändern führte allerdings zur selben Fehlermeldung. Könnte es sein, dass ich den Controller bereits bei der Montage irgendwie beschädigt habe? Überhitzt oder mit einer elektrostatischen Entladung? Irgendwo im Protokoll heisst es zwar "avrdude: AVR device initialized and ready to accept instructions", andererseits sehen die Einträge (.) nach recv., was ich als empfangene Daten interpretiere, nicht gerade nach wirklich korrekten Werten aus. Kann jemand von euch das Zeug zuverlässiger interpretieren?
Hallo, also wenn als gelesene Signatur des Chips 0x000000 raus kommt dann ist was faul. * Ist auf dem Arduino das korrekte Programm drauf Hardware Version: 2 Firmware Version: 1.18 Topcard : Unknown <== sollte sowas wie STK500 raus kommen?! * starte den Programmiervorgang mal ohne angeschlossenen µC * Prüf mal die Verkablung zwischen STK500(alias Arduino) und deinem µC. Die Kommunikation die AVRDude im Log anzeigt ist nicht die zwischen µC und Programmer sondern die zwischen AVRDude und Programmer. Wenn du wissen willst was da abläuft, musst du das mal mit dem STK500-Protokoll abgleichen. Sascha
- Die Verkabelung zwischen ArduinoUno (Programmer) und uC sollte in Ordnung sein. - Auf dem Arduino ist das korrekte Programm drauf. Habe auch schon den Prototypen über den Arduino programmiert (Atmega328 mit vorinstalliertem Bootloader). - Hardware sollte ansonsten in Ordnung sein. ArduinoUno Rev. 3, IDE 1.0.5 - wenn ich den uC vom Programmer trenne und den Upload starte, meldet er, der Programmer antworte nicht. Habe auch versucht, im boards.txt die Übertragungsgeschwindigkeit zu vermindern, was in verschiedenen ähnlichen Threads empfohlen wurde. Hat auch nichts gebracht. Gehe nun davon aus, dass der uC kaputt ist. Wahrscheinlich zu lange mit dem Lötkolben dran rumgefummelt oder irgendwie elektrostatisch kaputtgezappt :( Habe in weiser Voraussicht einen zweiten mitbestellt und werde den nächstens versuchen neu einzulöten.
So. Habe nun versucht, den Controller zu entfernen und dabei die Platine kaputt gemacht. Also, neue Platine geäzt, ist besser geworden, als die vorherige - perfekt eigentlich. Neuer uC drauf. Dieser ist mit ziemlicher Sicherheit unbeschädigt und korrekt eingelötet. Beim ersten Versuch, den Bootloader zu installieren verursachte die selbe Fehlermeldung allerdings nun mit device signature 0xFFFFFF, danach wieder immer mit 0x000000. Irgendwo habe ich von baudrate zu hoch oder zu niedrig was gelesen, aber diese in den boards.txt definitionen zu ändern hat nichts gebracht. verzweifle langsam :(
Nun hats dann doch noch funktioniert. Offenbar war einer der 32 Pins nicht richtig angelötet, dummerweise ausgerechnet der mit dem lieblichen Übernamen Mosi. Muss wohl bei den Prüfmessungen durch den Druck der Prüfspitze verbindung hergestellt haben, weshalb ich es zunächst nicht bemerkte. Nun funktioniert alles perfekt. Vielen Dank für die Hilfe und Anteilnahme
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.