Hallo zusammen,
ich habe mehrere kleine Platinen mit einem Atmega328 herstellen lassen.
Sie basieren auf einem Design welches ich schon mal hab herstellen
lassen und welches auch wunderbar funktionierte.
Die Neuen machen jedoch Ärger. Bei der Eingabe von:
[code]avrdude -c stk500 -P com6 -p atmega328p -n -v[code]
kommt Folgendes:
avrdude: Version 5.10, compiled on Jan 19 2010 at 10:45:23
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is
"C:\WinAVR-20100110\bin\avrdude.conf"
Using Port : com6
Using Programmer : stk500
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 Max
W ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------
----- ---
-- ---------
eeprom 65 5 4 0 no 1024 4 0
3600 36
00 0xff 0xff
flash 65 6 128 0 yes 32768 128 256
4500 45
00 0xff 0xff
lfuse 0 0 0 0 no 1 0 0
4500 45
00 0x00 0x00
hfuse 0 0 0 0 no 1 0 0
4500 45
00 0x00 0x00
efuse 0 0 0 0 no 1 0 0
4500 45
00 0x00 0x00
lock 0 0 0 0 no 1 0 0
4500 45
00 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 : STK500V2
Description : Atmel STK500
Programmer Model: STK500
Hardware Version: 10
Firmware Version Master : 2.10
avrdude: stk500v2_command(): command failed
avrdude: stk500v2_getparm(): failed to get parameter 0x9a
Topcard : Unknown
Vtarget : 5.0 V
SCK period : 2.2 us
Varef : 5.0 V
Oscillator : Off
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100%
0.03s
avrdude: Device signature = 0x1e9514
avrdude: safemode: lfuse reads as 62
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as 7
avrdude: safemode: lfuse reads as 62
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as 7
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Sieht soweit ganz gut aus. Bei der nächsten Eingabe des gleichen Befehls
kommt zum Schluss:
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100%
0.02s
avrdude: Device signature = 0x000102
avrdude: Expected signature for ATMEGA328P is 1E 95 14
Double check chip, or use -F to override this check.
avrdude done. Thank you.
... und bei jedem weiteren Versuch bleibt die Device Signature bei
0x000102 bis ich den Programmer entferne und wieder anschließe. Manchmal
meldet er auch einfach nur, dass er nicht verbinden kann.
Ich habe die Kabellängen der Programmierkabel schon gekürzt und alle
Verbindungen überprüft. Auch funktioniert der Programmer (Diamex-USB)
bei anderen Boards einwandfrei.
MOSI, MISO, SCK sind auch korrekt mit dem Chip verbunden.
Könnt ihr mir vielleicht aus der Patsche helfen? Ich wäre euch mega
dankbar.
Beste Grüße,
Marian
Bei mir kamen solche Phänomene eigentlich nur, wenn der ISP-Takt bei 'frischen' AVR zu hoch war. Mit '-B20' als avrdude-Parameter konnte ich dann aber trotzdem ohne Probleme flashen. Grüße Oliver
Hey Oliver, vielen Dank für die Info. Aus irgenden einem Grund hat sich mein Problem verschärft. Über Nacht haben nun alle µCs entschieden ihren Geist auf zu geben und mir noch nicht mal die Signatur 0x000102 zu senden. Jetzt bekomme ich überhaupt keine Verbindung mehr. Habe nun auch das Verbindungskabel komplett neu gelötet, aber das bringt auch keine Besserung. Deinen Tip hab ich folgendermaßenangewendet:
1 | avrdude -c stk500 -P com4 -p atmega328p -n -B20 |
Ist das korrekt?
ich habe es auch mal mit -i20 probiert worauf sich der µC plötzlich
korrekt gemeldet und mich in den folgenden Versuchen mit der bekannten
Signatur 0x000102 geärgert hat. Irgendwann hat er die Verbindung wieder
ganz eingestellt.
Dieses Verhalten ist einfach überhaupt nicht zu reproduzieren. Ich bin
soweit mit meinem Latein am Ende. Liegt es vielleicht an den verbauten
selbst? Habe gehört es schwirren auch gerne Imitate rum.
Mit verzweifeltem Gruß,
Marian
Nu ja, wenn die Signatur beim Lesen nicht richtig ankommt, ist irgendetwas faul. entweder falsch verbunden, keine richtigen Pegel auf den ISP-Leitungen oder kein passender Takt. Bevor weitergemacht wird, muss das halt stimmen. Aber ISP alleine ist doch nur ein Teilproblem, das man durch probieren in den Griff bekommen kann. Am Kontroller liegt es eigentlich nie.
hängt denn noch Hardware an den SPI Leitungen? ohne Plan wird das nichts.
Marian K. schrieb: > avrdude: Version 5.10, compiled on Jan 19 2010 at 10:45:23 -------------------^^^^^--------------------^^^^^----------- Problem wegen alter Version? Kenne den STK500 nicht, muss da irgendwo ein Bootloader sein? Der vielleicht nicht richtig funktioniert?
@Grübler: Vielen Dank für den Hinweis. Ich habe jetzt die neueste Version installiert, nur leider ohne besseres Ergebnis. @Peter: Du hast recht. Irgendwas ist faul. Ich habe die Schaltung noch mal überprüft und es stimmt alles. Am Freitag ist mir jedoch aufgefallen, dass ich reproduzierbar einmal eine korrekte Verbindung zum µC aufbauen kann wenn ich mit einer bestimmten Anzahl an Veruchen den folgenden Befehl eingebe:
1 | avrdude -c stk500 -P com6 -p atmega328 -n |
Ich bekomme dann genau einmal die korrekten Daten vom µC und danach nur
Müll. Versuche ich es weiter habe ich irgendwann keine Verbindung mehr,
bis ich nach einer gewissen Anzahl an Versuchen wieder einmalig eine
Verbindung habe.
Ich muss dazu sagen, dass ich einen externen Quarz angeschlossen habe,
den ich über die Fuses aber noch nicht aktivieren konnte. Kann mir
dieser Quarz den Kommunikationstakt versauen??
Ich habe das Gefühl das es wirklich an einem falschen Takt liegt. Was
kann ich in diesem Fall tun??
Vielen Dank euch,
Marian
Hallo, nur eine kleine Anmerkung von mir. Ich hatte neulich ein ähnliches Problem. Ich wollte auch einen 328 zum flashen bekommen. Und habe keine Verbindung zum dem Chip aufbauen können. Ich habe keinen stk500 sondern nur einen usbasp. Auch mit anderen Chips wie dem Atmega8 funktionierte es nicht mehr. Naja was soll ich sagen. Ich hab lange probiert, Treiber neuinstalliert und und und... Das Problem lag am Ende an einem Windows 10 Update. Ich weiß nicht was du für ein Betriebssystem benutzt aber probiers mal auf nem Älteren. Ich hatte zum glück noch einen Windos 7 Rechner rumliegen, da geht alles einwandfrei.
@Svenster: Ich arbeite auf Win7. Aber dieses Problem hört sich interessant an. Ich versuche es vielleicht mal auf einem anderen Rechner vielleicht mit Linux probieren. Vielen Dank
Eigentlich schalten die fuses zuverlässig zwischen "interner Oszillator" und extern angeschlossenem Quarz um. Der Quarz dürfte also keinen Einfluss haben. Wenn aber der Takt "tröpfelt", dh.ein Oszillator läuft nicht stetig sondern liefert sein Signal mit kurzen Unterbechungen, könnte so etwas passieren. (z.B. beim Lesen der Signatur bricht die Spannung wegen einem zu niederohmigen MISO-Eingang kurzzeitig zusammen und stört den internen Taktoszillator) Eine andre Ursache könnte die Spannungsversorgung sein: Wenn diese Einbrüche hat, kommt der Kontroller evtl. schon beim Lesen der Signatur ins Stolpern. Also, versuchsweise die Stützkondensatoren vergrößern, ob sich dadurch etwas ändert. Der aber am häufigsten vorkommende Fehler ist doch der, dass die ISP-Verbindung mit zu hoher Taktfrequenz läuft. Der Kontroller hat für ISP 125kHz mit über 10% Toleranz, wenn der interne RC-Oszillator verwendet wird. Wenn da beim PC 125 kHz oder 100kHz eingestellt ist, klappt das dann unzuverlässig, besonders wenn die Spannungsversorgung des IC grenzwertig ist. Also auch versuchsweise den Takt des ISP herabsetzen. Beschränke Dich vorerst ausschließlich auf das Signatur-lesen. Wenn das klappt, gehts dann mit dem Programmieren sowieso.
@Peter: Klasse Hinweise, Danke! Ich verwende den Diamex USB Programmer und AVRDUDE. Wir kann ich hier den ISP-Takt varrieren??
Marian K. schrieb: > AVRDUDE. Wir kann ich hier > den ISP-Takt varrieren?? http://www.nongnu.org/avrdude/user-manual/avrdude.html
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.