Forum: Mikrocontroller und Digitale Elektronik Verbindungsprobleme Atmega328


von Marian K. (majanao)


Lesenswert?

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

von Oliver J. (skriptkiddy)


Lesenswert?

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

von Marian K. (majanao)


Lesenswert?

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

von Peter R. (pnu)


Lesenswert?

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.

von Joachim B. (jar)


Lesenswert?

hängt denn noch Hardware an den SPI Leitungen?

ohne Plan wird das nichts.

von Grübler (Gast)


Lesenswert?

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?

von Marian K. (majanao)


Lesenswert?

@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

von Svenster (Gast)


Lesenswert?

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.

von Marian K. (majanao)


Lesenswert?

@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

von Peter R. (pnu)


Lesenswert?

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.

von Marian K. (majanao)


Lesenswert?

@Peter:

Klasse Hinweise, Danke!

Ich verwende den Diamex USB Programmer und AVRDUDE. Wir kann ich hier 
den ISP-Takt varrieren??

von Alexander S. (alesi)


Lesenswert?

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