PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Avrdude und WIN98



Hilel
24.02.2005, 14:32
Hallo zusammen.
Ich habe mir vor kurzem avrdude 4.3.0 auf einen WIN98-Rechner
installiert und den AVR910 wie von Klaus Leidinger beschrieben,
angepasst. Nun versuche ich über die Kommandozeile den 2313 zu flashen bzw. den EEPROM-Inhalt wie folgt auszulesen:

avrdude -p 2313 -c butterfly -P com2 -U eeprom:r:testeepr.hex

Darauf hin bekomme ich die Meldung:

avrdude.exe: Device signature: 0xffffff
avrdude.exe: Yikes! Invalid device signature

Das veränderte Programmiergerät funktionierte bereits mit avrprog von
Atmel.
Hat jemand eine Idee?
Danke im voraus

fluchtpunkt
01.03.2005, 23:36
avrdude -p 2313 -c butterfly -P com2 -U eeprom:r:testeepr.hex
wenn du den avr910 benutzt sollte da statt butterfly aber avr910 stehen, oder? Keine Ahnung ob das was ändert, aber es is mir aufgefallen...

rc-elektronik
07.04.2005, 21:46
Hallo fluchtpunkt,

versuch mal avrdude in der aktuellen Version 4.4. mit den Patches. In 4.3. hatte einiges noch nicht funktioniert.

phoenix
23.04.2005, 19:06
Hallo fluchtpunkt,

versuch mal avrdude in der aktuellen Version 4.4. mit den Patches. In 4.3. hatte einiges noch nicht funktioniert.


Hallo,

tja, ich habe leider auch das oben beschriebene Problem... hat es sich bei Euch mittlerweile erledigt? Wenn ja, dann wie?

Ich habe den AVR910 Programmer von Klaus Leidinger aufgebaut und mit der Firmware 3.7e beschrieben, beide LEDs leuchten fröhlich beim I/O, und ich bekomme die Firmware-Version "3.7e" und "AVR ISP" einwandfrei am Rechner angezeigt, aber ich bekomme beim AT90S2313 und beim ATTiny2313 immer nur ein 0xFFFFFF. Auch beim AVRProg klappts nicht. Die Hardware ist aber in Ordnung, habe +5V und GND, sowie MISO, MOSI, RST und SCK beim zu schreibenden Chip anliegen. Ich könnte weiterhin meinen LPT-Funny-Prog nutzen, aber der kann keinen ATTiny2313 und Atmel hat ja den AT90S2313 abgekündigt :-/

Woran kann es liegen? Besten Dank für ne Antwort! :)
tschö, Christian!

phoenix
24.04.2005, 15:47
Hi!

Um mein Problem noch zu komplizieren: einen ATtiny2313 konnte ich nach rumprobieren plötzlich programmieren. Danach las AVRProg auch eine ID des AT90S2313 einwandfrei aus. Nach programmieren von ca. 3 Chips gabs wieder nur "FF FF FF" und kein Prozessor wurde mehr akzeptiert...

ich wäre froh über jede Hilfe :)



tschüss, Christian

rc-elektronik
25.04.2005, 22:02
Hallo Phoenix,

welche Softwareversion zum programmieren verwendest Du? Wie sieht die Zielschaltung aus, in der der zu programmierende Chip steckt? Hast Du mal eine andere Zielschaltung probiert?

Der ATTiny2313 kann mit dem avr910 prgrammiert werden mit avrdude und angepasster avrdude.conf (devicecode). Bei AVRProg stelle den ATTiny26 ein zum probieren.
Wenn auch AVRProg nicht den angeschlossenen Chip erkennt, stimmt dort entweder das timing nicht (welcher Quarz?) oder es hängen Verbraucher (LED?, Widerstände?, Kondensatorten?) an den SPI Pins. Oder der Chip spinnt, heisst die ID ist zerschossen, der Rest kann noch gehen (kommt aber bei 2313 sehr selten vor, bei 1200 schon öfter)

Eine kompilierte Windows Version der avrdude 4.4.0 gibts auf der avr910 Seite von www.mikrocontroller-projekte.de

HTH,
Klaus Leidinger

rc-elektronik
25.04.2005, 22:12
... noch was vergessen...
mit avrdude -F
kannst Du die falsche Signatur ignorieren. Kannst Du den Chip dann programmieren/auslesen?

Ciao,
Klaus

phoenix
26.04.2005, 08:50
Oh, ja - tschuldigung, also:

Ich nutze das AVR910 von Klaus Leidinger mit der AT90S2313 Firmware-Version 3.7 (die derzeit aktuellste)

Es liegt ein 8MHz Quartz an den XTALs des zu schreibenden Chips und an Zusatzschaltung habe ich nichts anderes dran (nur die beiden LEDs am internen AT90S2313 wie im Schaltplan verzeichnet). Mit meinem Parallelportprogrammer und IC-Prog 1.05c klappt es ja auch einwandfrei, nur eben nicht mit dem Seriellprogrammer. Zwischenzeitlich habe ich die IDs mit der gleichen Schaltung auslesen und die Chips beschreiben können (an unterschiedlichen Rechnern), aber jetzt geht es wieder nicht. Also scheint meine Schaltung doch in Ordnung zu sein...


ich bin derzeit etwas ratlos - habe leider auch keine andere (einfach und günstige) Schaltung für einen ATtiny2313 gefunden - und ICProg unterstützt den Chip (noch?) nicht. Eine Alternativschaltung wäre mir auch recht... da ich sicher nur wenige ATtinys zu programmieren habe, wäre die Anschaffung des STK500s etwas überteuert ;)


übrigens: mit -F bei AVRDUDE klappts auch nicht - aber die HW-Version und SW-Version kann von avrdude und AVRProg aus dem internen AT90S2313 einwandfrei ausgelesen werden, also stimmt die RS232 Verbindung!? Vielleicht ist der Quartz für den zu schreibenden Chip (war neu) jetzt auch schon defekt, kann man den ohne Oszi irgendwie testen?



wenn das nicht geht, muss ich mir was anderes überlegen, vielleicht bei Reichelt noch 20 AT90S2313 kaufen, bevor die aus sind ;)

danke schonmal :)
Christian

rc-elektronik
27.04.2005, 07:40
Phoenix,

mir ist leider immer noch nicht klar, was Du genau machst:
Du schreibst manchmal von 2313 dann von Tiny2313.
Kannst Du irgend einen Chip mit der Programmerschaltung brennen? Mit avrprog und mit avrdude?

Welche avrdude Version benutzt Du?
klappt das schreiben eines 90S2313?
Welchen Chip programmierst Du mit dem Parallelportadapter?
Klappt der gleiche Chip mit avr910 und AVRProg?

Für ATTiny2313:
Hast Du die Änderungen in der avrdude.conf gemacht?
wie lautet der aufruf von avrdude zum brennen des Tiny2313?

Ist der 8MHz Quarz am AT90S2313 (der zu brennen ist) oder an einem Tiny2313 dran?
Der Tiny2313 ist default auf internen Takt eingestellt, wenn Du den mit Quarz betreiben möchtest musst Du zuerst die Fuses umstellen.

Wenn avrdude die Version ausliest, geht schon mal der Programmer. Avrdude 4.3 hatte allerdings ein Problem mit dem avr910, da falsche LED Kommandos benutzt wurden, deshalb 4.4 verwenden (gibts kompiliert für Windows, ebenso wie die geänderte avrdude.conf von meiner Seite)

Den ATTiny2313 hab ich schon mehrfach mit avrdude gebrannt.

Viele Grüsse,
Klaus Leidinger

phoenix
27.04.2005, 13:36
Oh, mir war nicht klar, dass ich mit dem Entwickler selbst spreche :)

Ich bitte nochmals um Entschuldigung, ich werde jetzt nochmal ganz genau mein Problem schildern:

Ich nutze dein AVR910 Programmer für die serielle Schnittstelle um einen ATtiny2313 zu beschreiben, weil das mit meinem Parallelportprogrammer leider nicht geht. Aber als Ablösung des Parallelportprogrammers wollte ich auch meine AT90S2313 damit beschreiben. Wie bereits erwähnt, klappt der Aufbau der RS232 Verbindung und ich kann mit avrdude 4.4 (mit Zusatzprogramm avrdude-gui und veränderterter conf-Datei) sowie dem AVRProg 1.40 die Versionsnummern des internen AT90S2313 mit deiner Firmware des AVR910 auslesen.

Zu Testzwecken habe ich nun mal mit einem ATtiny2313 frisch von Reichelt Tests gemacht (also mit noch aktiviertem internen Takt) und das hat funktioniert. Ich konnte eine Firmware mit AVRProg und avrdude brennen, verifizieren und auslesen. Danach habe ich einen AT90S2313 mit einem 8MHz Takt anstelle des ATtiny2313 mit internenem Takt angeschlossen. Das hat ebenso mehrere Male gut funktioniert. Leider kam nach ca. 4 Brennvorgängen als Chip-ID bis jetzt immer nur 0xFFFFFF zurück. Das ist genau mein Problem. Jetzt geht weder der Tiny2313 noch der AT90S2313 zu schreiben, lesen, brennen. Aber die Versionsnummern werden weiterhin angezeigt und der Programmer wird auch noch richtig angesprochen. Auch das Umgehen mittels -F Methode von AVRDude klappt nicht.


Die +5V Versorgungsspannung liegt am zu schreibenden Chip an, die anderen Signale scheinen auch da zu sein. Leider habe ich mir meinen ATtiny2313 mit dem letzten Test mit den Fuse-Bits auf Oszillator statt auf XTAL geschaltet *schäm* sodass ich mit dem derzeit nix mehr testen kann. Aber der AT90S2313 müsste doch klappen - das verstehe ich eben nicht, vor allem weil es schonmal ging!


Mit dem Parallelportprogrammer kann ich alle meine AT90S2313 beschreiben, die dann mit dem AVR910 leider nicht funktionieren. Die Aufrufe für avrdude lauten wie folgt:

"c:\avrdude.exe" -p t2313 -c avr910 -C "C:\avrdude.conf" -P com1 -U flash:w:"C:\test.hex":i"



Ich hätte mich hier nicht gemeldet, wenn es noch nie funktioniert hätte, da dann sicher ein fehler in meiner Schaltung gewesen wäre, aber dass es 5 mal ging und jetzt nicht mehr, ohne dass ich was an der Schaltung geändert habe, lässt mich stutzig werden. An meinem Laptop mit USB->RS232 Adapter ging es auch, jetzt aber auch nicht mehr. Was für einen Quartz sollte man denn zum brennen eines AT90S2313 normalerweise nutzen? Vielleicht ist der 8MHz Quartz ja auch falsch?


Ich bin ratlos und weiß nicht, wo ich mit der Fehlersuche anfangen soll, da ja die Com-Verbindung steht...


Danke für die Geduld und vielleicht einige Tipps :)
tschüss, Christian

rc-elektronik
29.04.2005, 07:01
Hallo Phoenix,

OK, versuchen wirs noch mal:

Für das "retten" des auf clock gestellten tiny2313 habe ich auf meiner Homepage (meine Tools) einen externen Taktoszillator beschrieben. (avr-preserver) und auch von der avr910 Seite verlinkt. Den habe ich auch schon gebraucht.

Nach dem was Du beschreibst, sieht es so aus, als ob der tiny2313 ohne Takt, und der 2310 mit gesetzten Lockbits da steht. Ansonsten, kann es noch sein, das eine Unterbrechung oder Kurzschluss auf den Programmierpins anliegt (MISO,MOSI,SPI,RESET) ? Natürlich könnte es auch sein, dass diese Portpins bei dem 2313 im avr910 defekt sind (aber eher unwahrscheinlich)

Bei dem avrdude Programmaufruf in Deinem Beispiel ist ganz am Ende ein überflüssiges " Ich denke aber, das ist beim einkopieren des Textes passiert?

Probiere mal den 2313 zu löschen, bevor Du neu programmierst, am besten mit AVRProg im "Advanced" Fenster (Chip erase). Das würde ev. gesetzte Lockbits rücksetzen.

Also, da die Kommunikation geht, das suchen bei den SPI Pins anfangen (Leitungen durchmessen) und dann auf die Zielschaltung ausdehnen (Leitungen mit LED oder Wirdertänden belegt?, kommt das Reset Signal an?)

8MHz im Zielcontroller sind absolut OK. Wen Du schreibst mit dem Parallelport Adapter geht es, benutzt Du dann die gleiche Zielschaltung mit dem gleichen 2313?

Viel Erfolg,
Klaus

phoenix
29.04.2005, 08:46
Hallo und guten Morgen :)


Die Gänsefüsschen (") habe ich am Anfang und Ende des Kommandos hinzugefügt - daran liegts also (leider) nicht *g*

Den AVR Preserver habe ich schon gefunden - aber hatte damit noch keinen Erfolg - muss ich in Ruhe nochmal testen (oder ich habe mir den tiny so verammelt, dass ich nicht mehr drankomme - habe die Hinweise auf deiner Page zu spät gesehen, aber nur so lernt man...)



Die Zielschaltungen zu den jeweiligen Programmern sind jeweils unterschiedlich. Ich habe mir zu jedem Programmer einen kleinen 20-pin-Sockel gebastelt (nur beim AVR910 mit zusätzlichem 8MHz Quartz), damit ich die µProzessoren direkt programmieren kann. Beim Parallelportprogrammer wird das XTAL Signal direkt vom LPT-Port erzeugt, vielleicht funktioniert es deswegen dort?


Ich werde jetzt erstmal auf meinen neuen Tiny2313 warten, wahrscheinlich gehts dann ohne Probleme - so wie es aussieht liegt mein Problem ja wirklich nur am Quartz, da der Tiny2313 mit damaligen internem Takt ja lief...



Ich werde mich dann nochmal melden :) soweit schonmal vielen vielen Dank

beste Grüße,
Christian :D

rc-elektronik
29.04.2005, 15:13
Hallo Christian,

>>Die Gänsefüsschen (") habe ich am Anfang und Ende des ...
OK, dann fehlen die am Anfang O:)

>>AVR-Preserver...
Dann hast Du den tiny2313 vielleicht auf Quarz ? Mal damit probiert?

>> Takt vom LPT Port...
? Das dürfte dann bei 90S2313 sein. Mit avr910 brauchst Du auf jeden Fall einen Quarz beim 90S2313 (Hattest Du doch auch geschrieben, 8MHz Quarz) Das wäre auch noch eine Fehlerquelle, wenn der nicht schwingt. (Kondensatoren 27pf gegen Masse?)

Der 90S2313 muss ja auf jeden Fall auch gehen mit dem avr910 Solange das nicht tut, hast Du immer noch die Möglichket, das was defekt ist. Probier also zuerst mal den 90S2313 erfolgreich zu Programmieren. Da gbts nur den Quarz als Taktmöglichkeit.
Miss mal den Reset Pegel während des Programmierens.

Viel Erfolg,
Klaus

phoenix
04.05.2005, 20:57
Hallo,

ich habe heute mein Windows nach einem HD-Crash neu installieren müssen, und habe jetzt meinen AVR910 Programmer nocheinmal getestet - z.T. erfolgreich. Also ich habe zuerst einen AT90S2313 in die IC-Fassung gesteckt und mit AVRProg sofort programmieren, verifizieren und auslesen können. Danach habe ich meinen geblockten ATtiny2313 eingebaut, welcher wieder nicht ging.
Danach wollte ich einen weiteren AT90S2313 brennen, aber jetzt läuft der Programmer schon wieder nicht. Also muss doch irgendwas faul sein? Meine Schaltung ist korrekt - das habe ich jetzt eben bestätigt bekommen, aber warum läuft der Programmer jetzt schon wieder nicht?

Mir ist klar, das ich jetzt wohl nur weitere Fragen aufwerfe, aber falls jemandem noch was einfällt, bin ich für alles offen - ich bin immer noch/wieder etwas ratlos...


tschüss,
Christian :D


NACHTRAG: Habe jetzt herausgefunden, dass nach einem Reset der AVR910-Schaltung (Strom weg, und wieder dran) nichts mehr geht... erst wenn ich ein paar mal nach dem Reboot den Mikroprozessor, den ich beschreiben will, in den IC-Sockel ein- und ausgesteckt habe, funktioniert es irgendwann... einen Wackelkontakt schließe ich aber aus - muss beim AVR910 irgendwas zwischen den beiden Atmel-Chips (dem internen ATMEL im Programmer und dem zu beschreibenden Chip) synchronisiert werden? Vielleicht liegt hier das Problem? Besten Dank und tschüss :)

rc-elektronik
05.05.2005, 20:46
Hallo Christian,

na ja, strukturierte Fehlersuche ist noch nicht Deine Stärke :)
Ich versuchs noch mal:

> Also ich habe zuerst einen AT90S2313 in die IC-Fassung
> gesteckt und mit AVRProg sofort programmieren, verifizieren
> und auslesen können.
Na das ist doch schon was...

> Danach habe ich meinen geblockten ATtiny2313 eingebaut,
> welcher wieder nicht ging.
Mit welcher Software hast Du versucht den zu brennen? Vermutlich mit avrdude. War da AVRProg noch am laufen? Wenn ja hat das die com Schnittstelle blockiert.
Wenn nein: falsches vorgehen. Du solltest zuerst den 90S2313 mit avrdude testen um zu sehen ob avrdude den Programmer ansprechen kann.
Ausserdem: nach dem abschalten des Programmers musst Du AVRProg neu starten, damit sich die serielle Schnittstelle wieder synchronisieren kann.
Probier mal den 90S2313 mit avrdude zu programmieren/lesen. Der Tiny2313 steht vermutlich auf externem Takt, oder die Fuses sind sonst irgendwie verstellt.

Sonst fällt mir auch nichts mehr ein...

Viel Erfolg,
Klaus

phoenix
05.05.2005, 21:31
Hi Klaus,

Fehlersuche ist sonst eigentlich nicht mein Problem - ich arbeite die Hälfte meines Lebens mit Computerproblemen... aber eben bisher noch nicht so intensiv mit eigener Hardware...

Also eins vorweg: ich bin kein Neuling, auch wenn das hier anscheinend so wirkt und ich mich zugegebener Maßen etwas umständlich ausdrücke, aber ich dachte mein Anliegen sei von Anfang an klar gewesen, da das erste Posting das gleiche Problem zu sein schien wie ich es habe ;)

Um Missverständnissen vorzubeugen: wenn ich von AT90S2313 rede, meine ich NICHT den Prozessor der internen Schaltung des AVR910 sondern den zu beschreibenden Chip! :)


Ich habe es mit AVRProg versucht und auch jedesmal vernünftig beendet und neu gestartet (ebenso die Hardware). Aber es ist definitiv kein Port-Freigabeproblem.

Also nochmal: ich lege +5VDC (effektiv +4,5VDC aus stabilisiertem Steckernetzgerät) an den AVR910, starte AVRProg und erhalte die Firmware- und Hardwareversion, aber die ID des AT90S2313 wird nicht erkannt (nur FFFFFF). Erst wenn ich bei laufender AVR910-Schaltung den Atmel mehrfach aus dem Programmer-IC-Sockel ausziehe und wieder einstecke funktioniert es irgendwann (sozusagen ein Fehler-Workaround)

AVRDude kann genau wie AVRProg die Schaltung zu jeder Zeit ansprechen und die Versionnummern auslesen, aber der zu beschreibende AT90S2313 wird genau wie bei AVRProg nur mit FFFFFF (also nicht) erkannt. Erst mit dem Workaround funktioniert es bei AVRDude irgendwann.

Das Problem mit dem ATtiny2313 ist jetzt für mich nebensächlich - wenn schon der AT90S2313 nicht korrekt funktioniert...



:) wenn der Fehler nicht rekonstruierbar ist, dann muss ich das akzeptieren. Vielleicht finde ich durch Zufall das Problem.

Noch einen schönen Abend, Christian

rc-elektronik
08.05.2005, 19:26
Hallo Christian,

nachdem die Kompetenzen ja nun geklärt sind O:) ...

Leider kann ich nicht wissen, was Du gemacht hast, ich habe nur das als Hinweis was Du aufschreibst. Da Du vieles anscheinend richtig gamacht hast, hätte es sich doch auch gelohnt, das so hinzuschreiben.

Da dann offensichtlich keine Bedienungsfehler vorliegen muss es was aus der Hardware sein: vielleicht doch ein Wackelkontakt, vielleicht zu lange Leitungen zwischen AVR910 und Zielcontroller, vielleicht ein defekter, oder ausserhalb der spezifikationen liegender 2313 in der Zielschaltung, viellecht reichen die 4,5 Volt doch nicht immer aus?
Das mit fehlerhaften ID Bits kenne ich bisher nur vom 1200. Die lassen sich dann trotzdem programmieren.

Ob Du mal den Reset Pegel und die Quarzbeschaltung geprüft hattest, hast Du leider auch nicht geschrieben. Da die andere Schaltung den Takt liefert und funktioniert, könnte dort auch was sein.

Wenn ein mehrmaliges ein und ausstecken der Zielcontrollers hilft (unter Spannung?) liegt ein wackler in der Fassung nahe.

Per Ferndiagnose ist da schwer was zu machen, wenn die Kommunikation zum AVR910 regelmässig funktioniert.

Einen Bug in der Software zumindest für die gängigen Typen und insbesonder 2313 (mein standart Test) schliesse ich für die Version 3.7e aus, bei mir und bei mittlerweile weit über 100 die die Schaltung bisher nachgebaut haben funktionert das Teil ohne zu murren. Beim Tiny2313 habe ich noch nicht so viele Rückmeldungen, allerdings noch keine Bugs bekommen. Bis hinunter zu einem Takt von 1MHz habe ich getestet.

So, dann auf ein neues... Viel Erfolg,
Klaus

phoenix
08.05.2005, 20:47
Hi Klaus,

:)

tja, leider sind meine Messmöglichkeiten auf Multimeter und LEDs begrenzt, daher kann ich leider nicht per Oszi die einzelnen Signale korrekt durchmessen...

beim nochmaligen Durchsehen der Schaltung habe ich bemerkt, dass die beiden Kondensatoren beim Schingquartz nicht 22pF sondern 27pF haben - da habe ich mich wohl im Dämmerlicht verlesen. Wäre denkbar, das hier der Fehler liegt und der Quartz dadurch nicht richtig Schwingt und nur durch das Ein- und Ausstecken des AT90S2313 (unter Spannung!) durch Zufall irgendwann stimmt. Deshalb ging wahrscheinlich der ATtiny2313 die ganze Zeit, da der noch auf internen Takt geschaltet war.

Nun, ich seh das Problem mal als erledigt - werde die Kondensatoren gegen die 22pF austauschen und dann hoffen, dass es daran gelegen hat. Ansonsten kann ich mit dem mehrmaligen Ein- und Ausstecken der ICs auch leben ;)


Also Klaus, erst mal danke für die geduldigen Ideen und Hilfestellungen... dein Programmer ist trotz meines kleinen Errors ne große Hilfe (vor allem die Geschwindigkeit beim Beschreiben überzeugt!!)


schönen Restsonntag :)
Christian

phoenix
12.05.2005, 23:32
Hallo Klaus und interessierte,

habe heute einen neuen Satz ATtiny2313 bekommen und kann diese einwandfrei beschreiben (mit internem, wie auch externen XTAL - bei mir 8MHz mit je 27pF Kondensatoren gegen Masse).

Zwar funktioniert das Beschreiben der AT90S2313 weiterhin nicht, bzw. nur sporadisch - allerdings habe ich meine 27pF Tantal-Kondensatoren beim Quartz noch nicht durch die 22pF ausgetauscht.


hiermit schließe ich mein Problem, ATtinys klappen ja jetzt, und die AT90S2313 beschreibe ich weiterhin über ICProg mit dem LPT-Programmer




Also nochmals danke an dich, Klaus :D
gute Nacht,
Christian