Ich arbeite an einer Platine mit einem ATmega328P darauf. Ich verwende einen Pogo-Stecker, weil wir die Platine draußen programmieren und testen müssen.
Ich programmiere mit usbTiny
, ( mosi/miso/rest/clk/power
)
Wie auch immer, oft bewege ich mich während des Programmierens ein wenig, was die Pogo-Pin-Kontakte stört und einen Verifizierungsfehler erhalte. Dann starte ich neu und flashe es erfolgreich.
Aber manchmal kann ich es nach einer Bewegung und einer Nichtübereinstimmung bei der Überprüfung nicht mehr flashen, wie jetzt.
Ich bekomme :
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
An error occurred while uploading the sketch
Ich wurde immer wieder extrem müde von der Herstellung :( und ich bin mir sicher, dass der Chip noch in Ordnung ist. Das wird wahrscheinlich wieder vorkommen.
Ich habe gelesen, dass es Möglichkeiten gibt, es zu speichern, wie serielle Programmierung oder Oszillator.
Wie genau kann ich das mit Serial machen?
VERBOTE:
Using Port : usb
Using Programmer : usbtiny
avrdude: usbdev_open(): Found USBtinyISP, bus:device: 020:013
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : USBtiny
Description : USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/
avrdude: programmer operation not supported
avrdude: Using SCK period of 10 usec
avrdude: initialization failed, rc=-1
Es ist wahrscheinlich, dass Sie versehentlich die Sicherungen gegen eine der folgenden ausgetauscht haben:
Um dies wiederherzustellen, müssen Sie einen "Hochspannungs" -Programmierer verwenden, bei dem /RESET auf +12 V gehalten wird, während bestimmte Befehlssequenzen durch die meisten anderen Pins gesendet werden. Dies kann mit Ihrer "Pogo-Pin" -Anordnung schwierig sein.
Es kann sogar unmöglich sein, wenn 12 V an /RESET angelegt werden und andere Schaltkreise beschädigt werden (z. B. wenn Sie einen Pull-up-Widerstand haben, der 12 V in die 5-V-Leitung leiten würde).
Ich habe hier einen Beitrag über die Verwendung eines anderen Arduino für die Hochspannungsprogrammierung .
Sie können sehen, dass es viele Drähte gibt, und es ist möglicherweise nicht praktikabel, mit Pogo-Pins etwas zu tun.
Sie können auch ein AVR Dragon-Board verwenden, um die erforderlichen Signale und Pinbelegungen bereitzustellen.
Dies würde jedoch erfordern, dass Sie entweder den Chip entfernen und in den Programmierer einsetzen oder etwa 18 Drähte zur Platine führen, ähnlich wie bei der früheren Lösung.
Ich schlage vor, dass Sie während des Tests einen 6-poligen Header anlöten, der für Ihre SPI-Programmierung geeignet ist. Dadurch werden die Pogo-Pins eliminiert und Sie erhalten einen zuverlässigen Kontakt für die Programmierung. Sobald Sie es debuggt haben, brauchen die Produktionsmodelle das nicht.
Was ist mit externen Oszillator?
Sie könnten meine Chip-Detektor-Skizze verwenden , die zeigen würde, ob der Chip nicht reagiert oder nur einige Sicherungen geändert wurden (z. B. Taktquelle).
Beispielausgabe aus der Skizze:
Atmega chip detector.
Entered programming mode OK.
Signature = 1E 95 0F
Processor = ATmega328P
Flash memory size = 32768
LFuse = FF
HFuse = DE
EFuse = FD
Lock byte = CF
Bootloader in use: Yes
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 512 bytes starting at 7E00
Bootloader:
7E00: 11 24 84 B7 14 BE 81 FF E6 D0 85 E0 80 93 81 00
7E10: 82 E0 80 93 C0 00 88 E1 80 93 C1 00 86 E0 80 93
...
7FE0: E7 DF 80 32 09 F0 F7 DF 84 E1 DA CF 1F 93 18 2F
7FF0: DF DF 11 50 E9 F7 F4 DF 1F 91 08 95 FF FF FF FF
MD5 sum of bootloader = 0F 02 31 72 95 C8 F7 FD 1B B7 07 17 85 A5 66 87
First 256 bytes of program memory:
0: 0C 94 35 00 0C 94 5D 00 0C 94 5D 00 0C 94 5D 00
10: 0C 94 5D 00 0C 94 5D 00 0C 94 5D 00 0C 94 5D 00
20: 0C 94 5D 00 0C 94 5D 00 0C 94 5D 00 0C 94 5D 00
30: 0C 94 5D 00 0C 94 5D 00 0C 94 5D 00 0C 94 5D 00
40: 0C 94 80 03 0C 94 5D 00 0C 94 C9 00 0C 94 5D 00
50: 0C 94 5D 00 0C 94 5D 00 0C 94 5D 00 0C 94 5D 00
60: 0C 94 5D 00 0C 94 5D 00 E5 01 11 24 1F BE CF EF
70: D8 E0 DE BF CD BF 11 E0 A0 E0 B1 E0 E0 E9 F8 E0
80: 02 C0 05 90 0D 92 A2 32 B1 07 D9 F7 11 E0 A2 E2
90: B1 E0 01 C0 1D 92 A2 3C B1 07 E1 F7 10 E0 CA E6
A0: D0 E0 04 C0 22 97 FE 01 0E 94 42 04 C8 36 D1 07
B0: C9 F7 0E 94 1F 02 0C 94 46 04 0C 94 00 00 08 95
C0: FF 92 0F 93 1F 93 06 EA 11 E0 C8 01 40 E0 52 EC
D0: 61 E0 70 E0 0E 94 FA 00 C8 01 0E 94 44 03 C8 01
E0: 60 E0 71 E0 0E 94 75 03 91 E2 F9 2E E0 E0 F0 E0
F0: F0 92 57 00 E4 91 C8 01 6E 2F 40 E1 50 E0 0E 94
Quelle für Skizze auf GitHub - im Ordner "Atmega_Board_Detector".
Schlimm
Nick Gammon
Nick Gammon
versuchen-fangen-endlich
Nick Gammon
RJR
Nick Gammon