Forum: Mikrocontroller und Digitale Elektronik ATMega32 falsche Signatur


von Guiller J. (guiller)


Lesenswert?

Hallo,

ich bin im Mikrocontrollerbereich ganz neu. Ich führe momentan ein paar 
Tests durch, leider hab ich schon ziemlich am Anfang Probleme.

Ich habe einen ATMega32 und einen (USB) ISP Programmierer (von Diamex). 
Zum testen hab ich jetzt mal mit Kabeln die entsprechenden Pins 
miteinander verbunden (GRD, VCC, MOSI, MISO, RESET & SCK).

Dann hab ich einfach mal getestet (Mit avrdude) ob alles passt, leider 
ist die Signatur falsch. Meine Frage ist, ist daß wichtig, kann ich 
weiter machen und ein Programm drauf laden? Interessanterweiße ist die 
Signatur aber nur im ersten Byte zur richtigen Signatur verschieden. 
Habe auch wiederholt untersucht ob die Zuordnung der Pins so stimmt.

Hier der Aufruf und dessen Ausgabe:

1
[~]> avrdude -p m32 -c stk500v2 -P /dev/tty.usbmodemfa131
2
3
avrdude: AVR device initialized and ready to accept instructions
4
5
Reading | ################################################## | 100% 0.00s
6
7
avrdude: Device signature = 0x009502
8
avrdude: Expected signature for ATMEGA32 is 1E 95 02
9
         Double check chip, or use -F to override this check.
10
11
avrdude done.  Thank you.

Hat jemand eine Idee was ich falsch mache? Kann der Controller oder der 
Programmierer kaputt sein?

Vielen Dank, Guiller

Nachtrag:
Ab und zu ist die Signatur richtig und alles wird richtig erkannt, es 
gibt keine Fehler. Leider nur ab und zu. Kann das daran liegen dass ich 
es provisorisch mit Kabeln gemacht habe?

: Bearbeitet durch User
von Charles H. (scientificum)


Lesenswert?

Also ich habe z.B. einen USBasp da tritt folgendes Problem auf:
Wenn die CPU noch frisch aus der Tube ist, dann ist werksmäßig der 
interne RC-Oszillator aktiv (siehe Fuse-Bits). Versuche ich normal den 
Controller zu flashen, bekomme ich ständig falsche Signaturwerte.

Der Programmer hat extra einen Jumper für "slow clock" Modus, dann 
schreibt er wesentlich langsamer und dann klappt das Flashen sofort beim 
ersten mal.

Sobald ich die Fuse-Bits für Quarzbetrieb umstelle, klappt es auch ohne 
slow-clock Jumper und deutlich schneller. Mein längstes Programmierkabel 
ist 2m und machte bisher nie Probleme...

Vielleicht hilft es Dir weiter, hatte lange auch Terz damit, bis ich 
kapiert habe, warum.

von Georg A. (georga)


Lesenswert?

In was für einer Schaltung sitzt denn der Chip? Stromversorgung korrekt? 
Hängt noch irgendwas anderes am MISO-Pin?

von Guiller J. (guiller)


Lesenswert?

Sonst hab ich nichts anderes daran. Ich will dann erstmal estmal nur an 
einen Pin einen Widerstand + LED hängen, hab ich aber momentan noch 
nicht.

Einen solchen Jumper hat mein Programmierer leider nicht. Wie 
funktioniert das mit den Fusebits genau? Was sind Fusebits und wozu 
dienen sie? Muss ich dann eine externe Uhr, also einen Quartz (nehme ich 
an) dranhängen?
Kann ich die Geschwindigkeit vielleicht anders steuern z.B. mit der 
Baudrate?

Danke!

von T.roll (Gast)


Lesenswert?

Die Fusebits sind vollkommen egal. Auch einen Quarz brauchst du nicht.

Der Programmer wird einfach zu schnell schreiben.
Lösung (ist zwar für den Parallelport geschrieben, funktioniert aber auf 
USB genauso):
http://www.mikrocontroller.net/articles/AVRDUDE#Geschwindigkeit_begrenzen

von Magic S. (magic_smoke)


Lesenswert?

Wenn sie manchmal stimmt und manchmal nicht, liegt das mit ziemlicher 
Sicherheit an einer zu hohen ISP-Frequenz. Ich hab diese Probleme mit 
dem Diamex-Adapter auch gelegentlich bei neuen AVRs (die noch ab Werk 
mit 1MHz laufen). Nach dem Löschen der CLKDIV8-Fuse gehts dann 
problemlos.

von Oliver R. (orb)


Lesenswert?

Pack ein -B10 mit in den Aufruf bis Du die Fuses passend gesetzt hast, 
das reduziert die Geschwindigkeit auf 100kHz.

von Pete K. (pete77)


Lesenswert?

Hast Du auch Abblockkondensatoren verwendet, also Beschaltung nach 
Datenblatt?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Guiller J. schrieb:
> Sonst hab ich nichts anderes daran. Ich will dann erstmal estmal nur an
> einen Pin einen Widerstand + LED hängen, hab ich aber momentan noch
> nicht.

Bitte versehe zumindest die Betriebsspannung mit mindestens einem 100nF 
Abblockkondensator von Vcc gegen Masse. Nicht vergessen, AVcc (Pin 30) 
mit Vcc zu verbinden und den 2. GND (Pin 11 und 31) Anschluss mit GND zu 
verbinden. Die Pinnummern sind für die DIL Variante.
Bei jedem lesen der Fuses oder der Signatur bringt der Programmierer den 
MC in den Reset Zustand. Da anscheinend oft das erste Byte nicht richtig 
rüberkommt, check auch bitte nochmal, ob du am Reset evtl. einen 
Kondensator dran hast. Ein leichter Pullup im Bereich von 4k7 bis 22k 
kann jedenfalls nicht schaden.
Edit: Hehehe, Pete beats me :-)

: Bearbeitet durch User
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.