Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmgea 32 abgeschossen mit Fuse-Bits???
semicolon
27.05.2006, 12:45
Hallo Leute
Ich hatte Gestern eigentlich im Sinn, den JTAG an Port C zu deaktivieren mittels den Fusebits.
Ich programme meine Atmega 32 mit der Parallelschnittstelle über das avrdude - Tool.
Am Anfang kommte ich die Fusebits zwar ändern, sie wurden aber immer gleich wieder in den auslieferungs Zustand zurück gesetzt.
Nach folgender Eingabe in der Win-Konsole:
avrdude -p m32 -P lpt1 -c bsd -u -U hfuse:w:0xD9:m
ging nichts mehr. Leider weiss ich nicht mehr, ob ich sogar zuerst die lfuse gesetzt habe. Jedenfalls kommt nun folgende Meldung sobald ich auf den AVR zugreiffe:
C:\>avrdude -P lpt1 -c bsd -p m32 -F
avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0xffffff
avrdude: Yikes! Invalid device signature.
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Wie kann ich meinen AVR wieder Retten???? Möchte nicht einen neuen kaufen!
Hi!
Hm.
Interessantes Problem.
Dieses Zurückspringen in den Ausgangszustand hatte ich bis jetzt immer, wenn ich einen Kurzschluss im ISP-Bus hatte.
Überprüfe mal deinen ISP, auf kurzschlüsse, fehlerhafte Verbindungen usw.
Naja... wenn man an den Fusebits etwas verstellt, kann das auch zum Verlust führen. Aber in der Regel meldet sich der AVR noch - ausser du hast eine falsche Taktquelle gewählt oder den ISP abgeschaltet.
Ich empfehle mal einfach einen externen Takt von ca. 2-10MHz an XTAL1 anzuschließen, und wenn das nix bringt, zu versuchen den AVR parallel zu beschreiben.
Da kann man noch das meiste retten.
VLG Tobi
semicolon
27.05.2006, 16:37
Hallo
Vorher war alles in bester Ordnung. Konnte mein Programm auf den Controller laden und funzte.
Ich hatte dann noch ein LCD an Port C angeschlossen und von da an, fing der Schlamasel an. Hab dan in einem Forum gelesen, dass dr JTAG an Port C Probleme machen kann und deshalb entschied ich mich, via hfuse diesen zu deaktivieren. Seit dem läuft nichts mehr.
Ich betreibe meine Controller bereits mit einem Quarz von 4MHz. Von dem her sollte er einen Takt haben, aussert der Controller ist so verstellt, das nichts mehr läuft.
Wie meinst du das mit parallel schreiben??? Habe den Controller via Port B über den lpt Port beschrieben bis jetzt.
Gruss
Hi.
AH. Also hast du schon parallel programmiert.
Ja, ich denke, dass du den Quarzoszillator ausgeschaltet hast.
Händ mal nen ext. oszillator ran.
VG Tobi
semicolon
27.05.2006, 17:41
das habe ich doch bereits gemacht. Hatte von Anfang an im Sinn, meinen Atmega mit 4MHz zu betreiben über Xtal1 und Xtal2. Also was soll ich sonst noch tun. Avrdude erkennt ja nicht mal die Signatur des am32. Irgendwie müsste ich ihn völlig reseten.
Weisst wie weiter?
Hi
Ich betreibe meine Controller bereits mit einem Quarz von 4MHz.
*grins* Du sollst keinen QUARZ sondern einen EXTERNEN OSZILLATOR an XTAL1 hängen.
VLG TS
semicolon
27.05.2006, 18:19
sorry. Bin zu schnell über deine Zeilen hinweggeflogen. Leider habe ich keine auf Lager den ich verwenden könnte. Dann frag ich mich, ob ich doch nicht lieber einen neuen avr kaufen soll. So wie ich das sehe, würde mich ein Oszillator etwa gleich viel kosten.
Wenn ich einen neuen kaufen würde, welche fuse bits muss man zuerst ändern: hfuse oder lfuse?? Damit ich den zweiten auch nicht kaputt machen würde.
Anders kann man das Ding nicht mehr retten? Man sollte doch einfach einen kompletten RESET machen können oder das wenigstens die Werkeinstellungen noch vorhanden wären.
bekoeppel
27.05.2006, 23:49
Hmm wenn du dir einen zweiten ATmega kaufst, dann müsste es eigentlich gehen wenn du am zweiten eine high-low-Abfolge ausgibst an einem digitalen Ausgang und das am ersten (abgeschossenen) ATmega anhängst.
Dann hast du nämlich der externe Oszillator dran und könntest wieder beide nutzen...
Ich mein jedenfalls dass es so gehen sollte, hab das aber noch nie gemacht.
Btw: ich würde die Fuses nicht mit avrdude setzten, sondern mit PonyProg. Da siehst du nämlich eher was man macht^^
lg
semicolon
28.05.2006, 11:03
mir ist noch was in den Sinn gekommen. Ich habe noch ein paar At89c2051 Controller rumliegen. Mit dem könnte ich doch eine Oszillator bauen oder. Den könnte ich auch mit 4MHz betreiben und somit eine Takt-Folge genereieren.
Oder geht das nicht?????
HI
Also ich habe das auch schonmal gemacht, und zwar habe ich meinen damals ersten M16 fusetechnisch geschrottet.
Ich hatte aber noch einen 2313 mit 10MHz rumliegen, und habe einfach das Taktsignal von 10MHz von XTAL1 des 2313 an den XTAL1 des M16 angeschlossen.
Hat perfekt funktioniert. Der M16 ist nach dem Programmieren der (diesmal richtigen Fuses) natürlich wieder abgestürzt, weil er keinen quarz hatte, den hab ich dann aber wieder reingelötet und alles war wieder in bester Ordnung.
Ich weis nicht, ob die 4MHz reichen, es sollten (nach meiner Meinung) schon um die 3MHz sein, sodass alles ungefähr läuft.
VLG ts
semicolon
28.05.2006, 12:00
ich habe leider keinen anderern Quarz für meine alten at80c2051. Ich hoffe dass das reichen wird. Du meinst also, dass ich mit diesem ein Tak-Signal generiere und das mit dem Xtal1 vom mega32 verbinden soll???
semicolon
28.05.2006, 13:22
ok ich habe es geschaft und konnte mit meinem alten at80c2051 ein Clock erzeugen mit etwa 100us Intervall. Das alte Programm auf meinem atmega32 läuft wieder. Wie kann ich nun die Fuses wieder in den Auslieferungszustand stellen und dass er wieder die Signatur des avr erkennt, denn die steht immer noch auf 0xffff.
Muss ich ihn jetzt irgendwie reseten oder so?
semicolon
28.05.2006, 14:01
Also wenn ich versuche die Fuses wieder richtig zu setzten kommt folgende Meldung bei avrdude:
C:\>avrdude -p m32 -c bsd -P lpt1 -F -u -U hfuse:w:0xef:m
avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0xffffff
avrdude: Yikes! Invalid device signature.
avrdude: reading input file "0xef"
avrdude: writing hfuse (1 bytes):
Writing | | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.11s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xef:
avrdude: load data hfuse data from input file 0xef:
avrdude: input file 0xef contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0xef != 0xff
avrdude: verification error; content mismatch
avrdude done. Thank you.
Kann jemand etwas damit anfangen? Was muss ich noch ändern???
HI!
Das ist doch schonmal eine richtig gute Nachricht!
Beschreib mal genauer, was er jetzt tut, und / oder nicht tut.
Da du aber parallel programmierst, sollte es eigentlich keine Probleme beim wiederherstellen der fuses geben.
Kenn nich leider mit avrdude nicht so aus. Ich benutz immer das AVRstudio...
VLG Ts
semicolon
28.05.2006, 14:58
das Problem ist, dasss ich kein STK500 Board habe und deshalb kann ich nicht im AVRStudio programmen oder ich wüsste nicht wie.
Mein einziges Problem ist jetzt nur noch, dass ich die Fuses nicht setzten kann. Kommt eben immer gepostete Meldung die weiter oben steht.
Ich programmiere übrigens mittels lpt1 Port über 220Ohm Widerstände an den Port sck, reset, mosi, miso!
Jedenfalls läuft mein altes testprogramm wieder, welches 2 LED zum toggeln bringt. Jedenfalls geht das wieder.
Ererkennt einfach die Signatur nicht wieder des AVR. Ich kann das verifying unterdrücken aber schreiben kann er die fuses trotzdem nciht. Kommt einfach die Meldung das er nicht an Adresse 0x0000 des hfuse schreiben kann.
Könnte ich auch das AVRStudion einrichten, dass die Methode wie ich programmierer funktioniert?? Kenn mich zuwenig mit avrstudion aus.
VictimOfMyOwn
28.05.2006, 15:28
hi ho...
ich hätte nochmal ne frage zum wiederbeleben des atmega...
hab auch noch nen "verfuseden" atmega8 liegen. habe auf nem anderen experimentierbard noch nen 2051 mit frequenzgenerator - programm drauf gehabt und das signal in den atmega8 eingespeist...wiedererwecken ließ er sich so aber leider nicht.
der 2051 wurde von einem 12mhz quarz getaktet, wodurch er ja mit 1mhz arbeitet. ich dachte immer es geht nicht, weil die frequenz zu niedrig ist.
frage mich wie das bei dir mit einem 100khz signal gefunzt hat o.O
mfg
semicolon
28.05.2006, 15:34
ja sorry habe mich verschrieben. Ist mein Fehler. Ich habe an meinem 2051 einen 4MHz Quarz und da komme ich nur auf 333.33 kHz. Ich denke das ist auch eher zu wenig. Oder was meinst du?
Hast du keine Chance gehabt die Fuses wieder zur richten?
HI
ich habs damals auch mal mit 33KHz probiert... könnt ihr vergessen...
Das teil braucht mindestens ein paar MHz, dass es gescheit funzt.
Wie gesagt, ich würde das Taktsignal direkt am Quarzeingang abgreifen. (Frage: Warum liest hier eigentlich keiner was ich schreibe?!)
Das ist keine schöne Lösung, aber kurzzeitig darf man das.
Wenn ihr ne höhere Frequenz habt, ist einfach mehr spielraum für Toleranzen.
Hm Warum du deine Signatur nichtmehr lesen/schreiben kannst weis ich jetzt auch nicht. KÖNNTE allerdings sein, dass du die Lockbits auch naja sagen wir mal verändert hast...
und wenn das so ist... viel Spaß mit deinem Blinklicht... :D
VLG Ts
Wiederbeleben:
Es reicht ein Takt von 500kHz locker! Es kommt nur darauf an, dass die Programmierfrequenz <1/4 der Taktfrequenz ist.
semicolon
28.05.2006, 17:14
Ok dann kann ich die Geschichte mit dem at80c2051 eh vergessen, da ich nur eine 4Mhz Quarz habe. Dann kann meinen atmega32 so nicht retten.
Ich versteh nicht ganz wie du das gmeint hast:
"Wie gesagt, ich würde das Taktsignal direkt am Quarzeingang abgreifen."
Kann mir das bildlich nicht vorstellen wie das Hardwaremässig aussehen sollte.
Gruss
semicolon
28.05.2006, 17:16
Tja, mit meinem At80c2051 komme ich aber nur auf 333kHz. Das ist ja bekanntlich zu wenig.
Warum soll das zu wenig sein? Du musst nur die Programmiergeschwindigkeit umstellen, also kleiner 80kHz. Dann sollte das klappen. Schliesslich musst Du nur die Fusebits umstellen.
Mit deinem 4MHz Quarz könntest du auch sowas hier aufbauen:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=980
Inverter-Gatter, 1Mohm Widerstand, 22p Kondensatoren.
semicolon
28.05.2006, 18:12
wie und wo kann ich die Geschwindigkeit umstellen?
Ich arbeite mit avrdude zum programmieren via lpt1 Port über sck, miso, mio und reset.
Ansonsten habe ich keine anderer Programmier software.
semicolon
28.05.2006, 18:14
ok danke, leier sind mir die Inverter-Gatter ausgegangen. Habe ich erst am Montag wieder ein paar am Lager.
haste noch NAND da? Daraus lässt sich auch nen Inverter schalten...
VictimOfMyOwn
28.05.2006, 18:40
hi ho...
@semicolon
du sagtest doch, daß du deinen mega32 schon wieder zum laufen gebracht hast...nun bin ich aber verwirrt :-s
die programmiergeschwindigkeit runterstellen...hmmm...ich progge zur zeit mit yaap...da scheint das nicht zu gehen.
mfg
semicolon
28.05.2006, 18:45
nein habe ich leider auch keine mehr. Bin so ziemlich ausgeschossen.
Wie kann ich die Programmmiergeschwindigkeit runterstellen bei avrdude damit ich fuse ändern kann???
semicolon
28.05.2006, 22:47
also ich habs versucht im avrdude.conf die min_writte_delay zu ändern auf unter 80KHz. Aber hat anscheinend nicht funktioniert. Kann die Fuses noch immer nicht ändern.
Kommt immer Fehlermeldung das er nicht schreiben konnte. Langsam weiss ich nicht mehr weiter. Habe jetzt schon so ziemlich alles versucht.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.