Forum: Mikrocontroller und Digitale Elektronik ATmega8 kann nur einmal gelesen werden


von Holger (Gast)


Lesenswert?

Hallo zusammen,

ich bin absoluter Neuling in der µC-Programmierung und habe mir meine 
erste Schaltung mit einem ATmega8 aufgebaut (nach dem Schaltplan im 
AVR-Tutorial).
Das Problem: Ich kann nach dem Anlegen der Spannung den µC nur einmalig 
lesen bzw. schreiben (Fuses, Flash, EEPROM). Danach wird die Signatur 
des Chips nicht mehr erkannt.
Als Takt benutze ich einen 8MHz Oszillator und zum lesen bzw. schreiben 
(nach etwas rumprobieren) avrdude. Zur Programmierung via ISP kommt ein 
USBasp zum Einsatz.
Habe das Problem zwar im Forum gefunden, aber keine Lösung dazu. Hat 
jemand eine Idee voran es liegen könnte?
Eine Frage vorweg: Ist es notwendig GND und VCC des ISP mit der 
Spannungsversorgung der Schaltung zu verbinden?

Gruß
Holger

von Sauger (Gast)


Lesenswert?

Moin,

Holger schrieb:
> Eine Frage vorweg: Ist es notwendig GND und VCC des ISP mit der
> Spannungsversorgung der Schaltung zu verbinden?

wenn die Schaltung aus dem Tutorial 1:1 umgesetzt wurde, sind diese 
bereits verbunden. Wenn nicht Ja. Was heißt "einmalig"

MfG

von Timmo H. (masterfx)


Lesenswert?

Holger schrieb:
> Eine Frage vorweg: Ist es notwendig GND und VCC des ISP mit der
> Spannungsversorgung der Schaltung zu verbinden?
>
> Gruß
> Holger
Ja

von Holger (Gast)


Lesenswert?

Vielen Dank für die schnelle Hilfe!

Sauger schrieb:
> Was heißt "einmalig"

Nach dem Anlegen der Spannung kann ich über avrdude einen Lese- bzw. 
Schreibbefehl absetzten. Dieser liefert dann die korrekte Signatur, wird 
ausgeführt und ggf. verifiziert.
avrdude: Device siganture = 0x1e9307
Wiederhole ich den Befehl ein zweites Mal (oder versuche einen anderen) 
kommt
avrdude: Device signature = 0x000102
avdude Expected singature for ATMEGA8 is 1E 93 07
Ein weitere Befehl ist erst nach erneutem Anlegen der Spannung möglich.

Dachte da der USBasp über USB versogt wird und die Schaltung eine eigene 
Spannungsversorgung hat könnte das Vebinden von GND und VCC zu Problemen 
führen. Ist ja bei der Verwendung eines FTDI auch so.
Werde es gleich mal versuchen.

Gruß
Holger

von Schieber (Gast)


Lesenswert?

Holger schrieb:
> USBasp

alles klar...

von Oliver (Gast)


Lesenswert?

Holger schrieb:
> einmalig
> lesen bzw. schreiben (Fuses, Flash, EEPROM).

Na, wenn du die "Fuses" schreibst, ohne zu wissen, was du da tust, kann 
das solche Folgen haben.

Oliver

von Holger (Gast)


Lesenswert?

Nope, gleiches Problem...

von Holger (Gast)


Lesenswert?

Oliver schrieb:
> Na, wenn du die "Fuses" schreibst, ohne zu wissen, was du da tust, kann
> das solche Folgen haben.

Stimmt, aber das ändern der Fuses hat mein Problem bisher nicht gelöst. 
Deshalb frag ich ja ob jemand das Problem kennt. Oder bin ich etwa der 
einzige Anfänger, der schonmal Mist gebaut hat?
Benutze zur Zeit:
lfuse: 0xD0
hfuse: 0xCA

Habs auch schon mit nem 8MHz Quarz und entsprechendem lfuse versucht. 
Selbes Problem.

Gruß
Holger

von Schieber (Gast)


Lesenswert?

Holger schrieb:
> lfuse: 0xD0
> hfuse: 0xCA

Und jetzt such uns mal genau raus, was da eingestellt ist. Evtl hat's ja 
den Quartz ausgeklammert?

von ... (Gast)


Lesenswert?

Hast du mal versucht, deinem Oszillator ein bisschen mehr Zeit zum 
anschwingen zu geben? Vielleicht sind ihm 4 ms etwas zu wenig.

von moep (Gast)


Lesenswert?

Holger schrieb:
> avrdude: Device signature = 0x000102
> avdude Expected singature for ATMEGA8 is 1E 93 07

Versuch es einfach nochmal.
Ich habe auch so einen Billig-USBasp und bei mir kommt es auch hin und 
wieder vor, dass aus irgend welchen Gründen die Signatur falsch 
ausgelesen wird.
Einfach den Vorgang mehrfach starten, irgendwann passt es dann wieder.

von Ben _. (burning_silicon)


Lesenswert?

Ich würd mir ja einfach mal was Brauchbares besorgen bevor ich mich mit 
irgendwelchem unbrauchbaren Scheiß abfinde!

von Krapao (Gast)


Lesenswert?

Ich würde mich darauf konzentrieren, die Signatur oder die Fuses oder 
das Flash fehlerfrei mehrmals hintereinander zu lesen bevor irgendwelche 
Schreibaktionen gemacht werden.

USBasp
http://www.fischl.de/usbasp/

Schaltplan USBasp
http://www.fischl.de/usbasp/bilder/usbasp_circuit.png

Selbstbau im AVR-Tutorial
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment#Selbstbau

> Das Problem: Ich kann nach dem Anlegen der Spannung den µC nur einmalig
> lesen bzw. schreiben (Fuses, Flash, EEPROM).

Mir ist nicht klar, wie du die Spannungsversorgung machst.

Man kann die Selbstbauschaltung über die ISP-Buchse vom USBasp versorgen 
lassen. Dazu muss der Jumper JP1 (Supply Target) auf dem USBasp-Board 
gesteckt sein.

Man kann die Sebstbauschaltung extern mit 5V versorgen. Dann darf der 
Jumper JP1 (Supply Target) auf dem USBasp-Board nicht gesteckt sein.

In beiden Fällen muss GND von Selbstbauschaltung und USBasp miteinander 
verbunden sein.

Die Versorgungsspannungen von USBasp und Selbstbauschaltung sollten so 
wenig wie möglich voneinander abweichen. So gesehen ist es vorteilhaft, 
wenn die Selbstbauschaltung vom USBasp aus versorgt wird.

Das setzt aber eine ordentliche Selbstbauschaltung voraus. Wenn in der 
Selbstbauschaltung zu viel Strom gezogen wird (aktive 
Hardwareerweiterungen, Kurzschluss) schlägt das über USB auf den PC 
durch und kann Probleme verursachen.

von S Hahn (Gast)


Lesenswert?

Hast du mal versucht, den Programmiertakt zu reduzieren? Das hilft 
meistens.

Bei avrdude einfach als Kommandozeilenoption "-B 100" oder auch mal "-B 
500" übergeben.

Natürlich geht das Programmieren dann langsamer, aber dafür funktioniert 
es. :-)

von Krapao (Gast)


Lesenswert?

> Ich habe auch so einen Billig-USBasp und bei mir kommt es auch hin und
> wieder vor, dass aus irgend welchen Gründen die Signatur falsch
> ausgelesen wird.

Holger, hast du das Fischl-USBasp oder einen "Billig-USBasp" Nachbau?

von Holger (Gast)


Lesenswert?

Vielen Dank für die vielen Tips!

... schrieb:
> Hast du mal versucht, deinem Oszillator ein bisschen mehr Zeit zum
> anschwingen zu geben? Vielleicht sind ihm 4 ms etwas zu wenig.

Danke, habs mal mit 64ms versucht. Hat leider nichts gebracht.

Krapao schrieb:
> Holger, hast du das Fischl-USBasp oder einen "Billig-USBasp" Nachbau?

Einen Billig-USBasp. Ich denke ich werde mir nächste Woche was anderes 
zulegen. Welche Programmer sind zu empfehlen?

Krapao schrieb:
> Mir ist nicht klar, wie du die Spannungsversorgung machst.

Die Schaltung sitzt auf einem Steckbrett und wird von einem 
Steckmodul(Spannungswandler) über USB mit 5V versorgt.

von S Hahn (Gast)


Lesenswert?

Holger schrieb:
> Einen Billig-USBasp. Ich denke ich werde mir nächste Woche was anderes
> zulegen. Welche Programmer sind zu empfehlen?

Lass dich nicht verwirren, meistens liegts nicht am Preis. Ich verwende 
auch einen China-ISP, und der läuft prima.

Hast du es jetzt mal mit -B 500 probiert?

von Andreas B. (andreasb)


Lesenswert?

Das Problem kenne ich.

Reset ist auf Masse (GND) kurzgeschlossen. Danach lässt sich der 
Controller ein mal Programmieren / lesen.

Kontrolliere mal den Pegel am Reset, wenn du nicht gerade am 
programmieren bist müsste der ~5V sein.



mfg Andreas

von Holger (Gast)


Lesenswert?

S Hahn schrieb:
> Hast du es jetzt mal mit -B 500 probiert?

Ja, danke, hats aber leider auch nicht gelöst.

von Holger (Gast)


Lesenswert?

Andreas B. schrieb:
> Das Problem kenne ich.
>
> Reset ist auf Masse (GND) kurzgeschlossen. Danach lässt sich der
> Controller ein mal Programmieren / lesen.
>
> Kontrolliere mal den Pegel am Reset, wenn du nicht gerade am
> programmieren bist müsste der ~5V sein.

DANKE!!! Genau das wars! :-)
Mein eigentlich überflüssiger Resetknopf (Taster) hatte nen Kurzschluss.

Gruß
Holger

von Andreas B. (andreasb)


Lesenswert?

Ich denke ich sollte das mal irgendwo passend ins Wiki schreiben.

Du bist nicht der erste mit genau diesem Problem;-)



mfg Andreas

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.