PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : An ATmega32 Lockbits verstellt, Hilfe!



Walich
11.05.2007, 19:39
Guten Abend zusammen.

Vor paar Tagen hatte ich mein AVR-Board mit einer RS-232-Schnittstelle erweitert. Dabei ist mir eine Leitung am ISP-Dongle abgebrochen. Am Ende vergaß ich sie wieder dran zulöten und habe einfach drauf losprogrammiert. Natürlich klapte das nicht! Als ich bemerkte, dass die Leitung lose war, lötete ich sie wieder dran, aber die Programmierung klapte immer noch nicht. Dann hatte ich versucht den EEPROM auszulesen, und es sind immer wieder verschiedene Daten rausgekommen. Später bemerkte ich, dass sich die Lock- und Fusebits verstellt hatten.

Die Lockbits sollen laut Datenblatt alle auf No... eingestellt sein.

Hier im Forum habe ich gelesen, dass die Lockbits nach einer vollständiger Löschung zurück gesetzt werden müssen. Allerdings geht das bei mir nicht.
Außerdem habe ich noch gelesen, dass man den µC mit einem Parallelem Programmer fast immer zum Leben erwecken kann.

Ist es in meinem Fall irgendwie möglich den µC wieder zu retten?

Ich habe leider nur den einen ATmega32.
Wäre euch ewig Dankbar.

chr-mt
11.05.2007, 20:35
Hi,
stimmt, mit einem Chip Erase löscht man auch die Lockbits.
Scheint, du hast ein anderes Problem und die Kommunikation geht nicht mehr richtig und es wird irgendein Quatsch ausgelesen.
(zumindest macht das AVR-Studio das so ;) )
Also ist die Anzeige der Lockbits eventuell auch falsch.

Bist du sicher, daß dein Quarz schwingt , der richtige Chip angewählt ist etc.?

Gruß
Christopher

Walich
12.05.2007, 02:50
Ich habe einfach einen externen Takt an XTAL1 gelegt (Ohne den Quarz dabei zu entfernen). Und tatsächlich waren die Lockbits beim auslesen alle No... . Ich konnte sogar ein Programm übertragen, aber das Programm funktionierte nicht ganz richtig. Die LED blinkte unregelmäßig, obwohl sie das regelmäßig tun soll. Dann fing ATmega wieder an zu spinnen.

Beeinflusst vielleicht der Quarz den externen Takt?

Beim ersten Auslesen der Fuses mit dem ext. Takt war der Fuse A987 richtig auf den Quarz eingestellt! (Wurde dieser Fuse vielleicht falsch ausgelesen).

Muss ich den Quarz vorher heraus löten und dann den ext. Takt anlegen?

Es wäre wirklich toll, wenn ich mit dem µC weiter machen könnte, denn ich habe noch kein einziges Gerät dadrin (ADC, Timer, …) ausprobiert. Aber so ziemlich viele Probleme schon gehabt!?

Walich
17.05.2007, 23:01
Hallo wieder mal.

Ich habe heute Zeit gehabt, mich mit meinem AVR-Board zu beschäftigen und konnte den Quarz (die Verbindung zw. einem Beinchen des Quarzes und dem Pin.XTAL1) von meinem µC trennen.
Anschließend habe ich an XTAL1 einen externen Takt angelegt und konnte den µC primer Programmieren. Alles funktionierte super!
Aber, als ich wieder den Quarz an den µC dran gelötet habe, funktionierte alles nicht mehr!? Der Fusebit ist richtig eingestellt.

- Sind vielleicht der 16MHz Quarz oder die 22 pF Kondensatoren kaputt?
- Kann ich bedenkenlos die Signale an den Pins XTAL1 u. XTAL2 mit einem Oszi (max. 20 MHz, 300 Vss) messen?
- Oder soll ich einfach einen 4 MHz Quarz nehmen?!

Das Problem ist, dass ich als ext. Oszillator eine Astabile Kippstufe mit einem NE555-Timer nutze. Und da ist die Frequenz nicht so genau.

Hoffentlich kann mir einer von euch helfen.

Walich
18.05.2007, 22:40
Hallo allerseits.

Ich habe mich heute entschieden diesen Thread abzuschließen,
da ich ja die Lockbits zurückstellen konnte.

Allerdings habe ich weiterhin Probleme mit meinem ATmega32.
Wahrscheinlich wurden nicht nur die Lockbits verstellt, sondern
auch was anderes!?

Danke für die Unterstützung.

Sven1277
18.05.2008, 12:33
Ich habe blöderweise mal mit den Fusebit A987 rumgespielt, da ich nen
Quarz mit rangehängt habe. Alles funktioniert auch super.

In einem Tutorial sollte ich einfach auf 1111:1111 einstellen. Da ich aber schrecklich neugierig bin und wissen wollte was die anderen zu bedeuten haben, habe ich einfach mal einen anderen gewählt.

Naja... BASCOM erkannte meinen ATMega nicht mehr :( Habs dann auch mit mehrmaligen Reset versucht und mit PonnyPong oder so.
Nix hat funktioniert !!!

Habe mich dann damit abgefunden das der Chip im Arsc... ist und einen ersatz besorgt. Zum Glück sind die da nicht so teuer :D


Dann habe ich zufällig im Internet gefunden das man einen Quarz und nen Ossi benutzen kann. Bei dem Quart benötigts du XTAL1 und XTAL2.
Und mein Ossi nur den XTAL1 und natürlich die Masse.

Also dachte ich mir einfach mit dem neuen ATMega auf Porta.0 mit einer Schleife und toggle porta.0 den Pin schnell ein und aus zu schalten.

Habe dann den defekten ATMega in den Sockel gesteckt und mit 4 Dräten VCC, GND (linke seite), GND (rechte seite) und XTAL1 mit dem neuen ATMega angeschalossen. Dabei VCC und GND einz zu einz gelassen und nur porta.0 mit dem XTAL1 verbunden.

Habe also den neuen ATMega als ossi benutzt. Hatte etwas Sorgen weil Spannung widerstand und und und. Aber es funktionierte und BASCOM erkanne den alten ATMEGA. Habe schnell die Fusebit A987 wieder auf Intern 8 Mhz gestellt und den Strom wieder abgestellt.

Beide ATMega funktionieren wunderbar :D

Hoffe jemanden damit helfen zu können !

Gruß

stefan_Z
19.05.2008, 00:42
Es gibt einige Möglichkeiten, sich aus dem Chip "auszusperren"...
- RESET-Pin als I/O definieren - ab da braucht man dann nen HV-Progger :-P
- ISP-Ausstellen - nicht wirklich sinnvoll, erlaubt PoyProg auch nicht
- Anstelle eines externen Quarz Resonator einstellen - da muss man sich dann so ein Dreibein besorgen und kurz dranhalten beim Proggen

BurY
04.07.2008, 19:36
Hi
ich möchte hier nun weiterführen, da ich wahrscheinlich das selbe Problem habe,und nicht noch ein Thema aufmachen will. als ich meinen ATMEGA32 Programmieren wollte, kam plötzlich die Meldung "Could not identify(...)"
Ich denke mir hats irgendwie (ich hab nichts gemacht) die fuse/lock bits verstellt. hab die Lösung von Sven1277 mit einem atmega 8 versucht, aber es kommt immernoch die gleiche Meldung.
Folgender Code auf dem Mega8:


$regfile = "m8def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 8000000
$baud = 9600

Config Portb.0 = Output

Dim I As Integer

Do
For I = 1 To 20
Toggle Portb.0
Waitms 1
Next I
Loop
Testweise eine LED angeschlossen, diese leuchtet auch, flimmern ist keins zu erkennen. sollte so doch aber funktionieren oder hab ich was falsch gemacht? Habe es mit und ohne "Waitms 1" versucht.

Dirk
04.07.2008, 22:07
Hallo BurY,

was erwartest du denn von einer LED, die mit 1ms (d.h. einer Tausendstel Sekunde) an- und ausgeschaltet wird?

Wie wäre es, wenn du es mit Waitms 500 probierst? Da blinkt es richtig.

Gruß Dirk

BurY
05.07.2008, 10:33
ja, stimmt schon, ich dachte mach könnte ein flimmern erkennen. aber eigentlich gehts es ja garnicht um die led sondern darum den Mega8 als taktgeber zu verwenden und den Mega32 wiederzubeleben