Hey,
ich habe letztes Wochenende mit dem Themengebiet der microCo.
Programmierung angefangen und bin davon recht begeistert. Auch wenn
meine finanziellen Mitteln gerade schlecht aussehen habe ich mir, wie im
AVR-Tutorial beschrieben, Bauteile bei Reichelt bestellt und die
Schaltung mit ein ATMega8 und ein 4Mhz Quarz nachgebaut. Um den microCo,
zu Programmieren bin ich auf USBProg als ISP gestoßen und gleichmal
bestellt, soweit sogut.
Gestern auch alles zusammengelötet, Programm mit VMLab kompiliert und
wollte es per avrdude in Windows draufspielen.
Nun kam schon der erste Fehler in Windows
avrdude: stk500v2_program_enable(): bad STK600 connection status: Unknown (0x64)
7
8
avrdude: initialization failed, rc=-1
9
avrdude: AVR device initialized and ready to accept instructions
10
avrdude: Device signature = 0x000000
11
avrdude: Yikes! Invalid device signature.
12
avrdude: Expected signature for ATMEGA8 is 1E 93 07
13
14
avrdude done. Thank you.
Nach einigen recherchieren im Internet und in diesen Forum, hatte ich
das gefühl das es ein allgemeines Problem von USBprog war. Irgendwie kam
ich auf die Idee alles unter Debian/Linux zu probiert. Man sehe und
staune ich kam dadurch schon etwas weiter.
1
......selbe Befehl........
2
3
avrdude: stk500v2_command(): command failed
4
avrdude: initialization failed, rc=-1
5
avrdude: AVR device initialized and ready to accept instructions
avrdude: verification error, first mismatch at byte 0x0008
33
0x0f != 0x00
34
avrdude: verification error; content mismatch
35
36
avrdude: safemode: Fuses OK
37
38
avrdude done. Thank you.
soweit sogut, mit viel freude an der Suche nach der Problemlösung habe
ich aus Spaß den Flash ausgelesen was auch ohne Probleme
funktionierte... das selbe ging auch wieder zurück. Den Hex-Code aus dem
mircoCo. kann ich also ohne Probleme Lesen und dann wieder
zurückschreiben.
Hier mal ein auszug.
Was mir an dieser Datei auffällt sind die führenden Bits die auf "2"
stehen den mein kompilierter Code hat nur eine "1"
Mein Hex-Code.
1
:020000020000FC
2
:1000000000000000000000000FEF07BB00E001BB94
3
:0E0010000FEF02BB00B3819B01E208BBFBCFE8
4
:00000001FF
Wenn irgendjemand einen Hinweis hätte wo ich noch ansetzen könnte um das
Problem zu beheben wäre ich dankbar. Ich bin momentan mit meinen Latein
am Ende.
VG Lars
> zu Programmieren bin ich auf USBProg als ISP gestoßen und gleichmal> bestellt, soweit sogut.>> Gestern auch alles zusammengelötet, Programm mit VMLab kompiliert und
Da hapert es an der Kommunikation zwischen PC (AVRDUDE) und ISP-Adapter
(USBProg).
Wenn du den USBProg selbst zusammen gelötet hast, dann solltest du den
Aufbau peinlich genau kontrollieren.
Jeden Schreibversuch zum Atmega8 würde ich unterlassen, insbesondere in
Kombination mit der -F Option! So lange der ISP-Adapter nicht fehlerfrei
läuft, besteht eine grosse Gefahr, dass du den Atmega8 schrottest.
Danke für die Antwort,
beim USBProg, waren nur der USB-Stecker, 3 kleine Leisten und der
Wannenstecker aufzulöten. Habe alle Kontakte überprüft kein Pin
beeinflußt den anderen und alle haben Kontakt zur Platine. Habe auch die
SMD Widerstände geprüft und so wie es aussieht ist keiner zerschoßen.
Für andere Prüfungen fehlt mich schlicht weg die Geräte.
Beim USBprog funktionieren auch alle zwei LEDs genauso wie im Handbuch
beschrieben, ich kann den USBProg auch mit anderer Firmenware bestücken.
Hatte gestern ein wenig damit zu kämpfen die Firmenware von "USBProgOCD"
zu "AvrISPmk2 Clone" wechseln zulassen.
Was mich einfach wundert warum ich den Hex-Code aus dem mega8 auf mein
PC übertragen kann und wieder zurück und das ohne ein Meckern.
PS.:
Kann jetzt AVRdude auf mein Windows Rechner benutzten der Ärger lag an
avrdude V5.10 mit der V5.5 kann ich jetzt die Hex Dateien aus dem mega8
herauslesen.
Ich kann selbse die FuseBits auslesen nur schreiben kann ich keine. Hat
es irgendwie damit zutun?
VG Lars
Abend,
als kleines Gimmick kann man am USBprog einstellen das er das
TargetBoard mit Stromversorgen soll. Also lötkolben angeschmießen und
direkt vom ISP ohne zwischenbauteile die Kabel an die Pins gelötet.
Siehe da das flashen funktioniert einwandfrei :-)
Habe den anderen mircoCo probiert und er wird auch ohne weiteres meckern
erkannt und kann nach belieben beschrieben werden. Das bedeutet jetzt
ich muss mir meine Schaltung neu zusammenlöten oder schauen wo ich ein
Fehler gemacht habe.
Mir sind jetzt zwei Sachen aufgefallen, zum einen hat avrdude nicht
gemeckert als ich den microCo heraugenommen habe. Was mich schon
ziemlich gewundert hat. Den ich konnte immernoch Dateien aus den microCo
herausschreiben. Das bringt mich ja schon fast auf ein Henne-Ei Problem
zurück, nur in meinen Fall war das Ei da, ohne eine Henne.
Zum zweiten sind die herausgeschriebenen Hex-Dateien teilweise immernoch
mit anderen Werten beschrieben. Was mich nun zu der Frage bringt wandelt
der microCo die Hex-Dateien nochmals um?
Achja AVRStudio4 will mein USBprog immernoch nicht haben, ist aber nicht
so schlimm wenigstens weiß ich jetzt das ich auf den richtigen Weg bin
:-)
Gruß Lars
> Mir sind jetzt zwei Sachen aufgefallen, zum einen hat avrdude nicht> gemeckert als ich den microCo heraugenommen habe.
Naja, im Log für den Fall "microCo drin, aber Probleme mit
USBprog/AVRDUDE" oben sind ja schon ein paar Probleme sichtbar. Und der
Inhalt der Hexdatei ist komplett 0.
Möglicherweise ist das nicht gezeigten Log für "microCo draus, aber
keine Probleme mit USBprog/AVRDUDE" ähnlich.
Hallo,
also in der Log für "microCo draus, aber keine Probleme mit
USBprog/AVRDUDE" ging avrdude problemlos durch und hat beim "verifying",
ein okay Status zurückgegeben. Aber wie gesagt das war halt nur wenn ich
die vorher aus dem flash geschriebene Datei wieder eingelesen habe.
Meine Theorie geht langsam dahin das der mega8 zuwenig Strom bekommen
hat. Mein Netzteil gibt nur 1A aus und musste in Ermangelung eines 10k
Widerstandes ein 30k einbauen.
Habe auch noch einmal im Datenblatt nachgeschaut und da steht das mein
ATmega8-16PU eine Betriebsspannung von 4.5V - 5.5V braucht.
Werde also bei der neuen Schaltung besser darauf achten was ich Messe.
Wenigstens kann jetzt das Abendteuer ATmega8 weiter gehen :-)
gruß Lars
> Mein Netzteil gibt nur 1A aus und musste in Ermangelung eines 10k> Widerstandes ein 30k einbauen.
Beides sollte kein Problem sein.
Der Atmega8 Aufbau nur für ISP ggf. inkl. ISP-Adapter ohne
Zusatzschaltung am AVR dürfte max. 1/10 A aufnehmen. Wenn mehr gemessen
wird, Schaltung nachkontrollieren bzw. fühlen, was heiss wird (5V * 1A =
5W).
Der (RESET?)-Widerstand darf höhere Ohmzahlen haben. Die 10K sind nur
ein gängiger Wert. Nur weniger als 4K7 sollte es nach Atmel-Empfehlung
nicht sein, weil es manche ISP-Adapter dann nicht schaffen, RESET auf
low zu ziehen. 30K ist OK.
Wenn du mehrere 30K Widerstände hast, kannst du auch drei parallel
schalten, um auf 10K zu kommen, falls dich der 30K Wert nervös macht.
Lars L. schrieb:> Mir sind jetzt zwei Sachen aufgefallen, zum einen hat avrdude nicht> gemeckert als ich den microCo heraugenommen habe.
Das ist korrekt.
Das ISP-Protokoll hat keine Fehlererkennung.
Die einzige Möglichkeit, zu erkennen, ob ein Target angeschlossen ist,
ist die Signatur zu lesen und zu vergleichen.
Löschen und Programmieren macht der Programmer auf gut Glück. Er kriegt
vom Target keine Quittung.
Erst das Verify sagt Dir, ob was ausgeführt wurde.
Peter
Abend,
also nach weiteren umlötaktionen (ich muss das wirklich nochmal richtig
Üben :D ) funktioniert jetzt auch meine erste Schaltung. Der erste Test
mit einer LED hat auch super funktioniert.
-> microCo geflasht: LED leuchtet
-> microCo gelöscht: LED aus
:D
Jetzt muss ich mal schauen wie ich weiter mache. Danke nochmals für eure
Hilfe ^^
Gruß Lars
Peter Dannegger schrieb:> Das ISP-Protokoll hat keine Fehlererkennung.> Die einzige Möglichkeit, zu erkennen, ob ein Target angeschlossen ist,> ist die Signatur zu lesen und zu vergleichen.
Das stimmt nicht. Das ISP-Protokoll besitzt zumindest am Anfang
der Programmier-Sitzung eine Rückmeldung.
> avrdude: initialization failed, rc=-1
Genau das ist der erkannte Fehler. Wenn man den natürlich mit der
Option -F übergeht, braucht man sich nicht wundern, dass hernach nur
noch Unsinn rauskommt.
Meine Vermutung ist, dass der ISP-Takt am Programmer zu hoch
eingestellt ist. Mal mit der Option -B10 probieren. Und schmeiß
das -F da raus, das -D gleich noch mit. Beide Optionen sollte man
nur benutzen, wenn man genau weiß, was man tut.
@Jörg
Danke nochmals, aber wie schon gesagt Problem ist gelöst lag
höchstwahrscheinlich an meiner Schaltung die ich mir zusammen gelötet
habe.
Mit dem zuhohen Takt hatte ich auch schonmal vermutet und schon gestern
immerwieder probiert hatte aber auch nichts geholfen.
Ich hatte das Forum und die Tutorials hier bis zum erbrechen schon
gelesen, bis ich mich dazu entschieden habe, in die Sache hier Geld zu
investieren ^^
gruß Lars