Forum: Mikrocontroller und Digitale Elektronik Komplett Reset des Prozessors?


von Hans Deller (Gast)


Lesenswert?

Juten Tag, ich hoffe ihr könnt mir weiterhelfen (wäre sonst ärgerlich!)

Ich habe meinen Mega 128 mit Lancos Ponyprog programmiert und dieses
mal die Configuration Bits verändert (M103 C = 0 / BootSz1, Bootsz2 = 1
/ BootTrst = 1 und ClkSel3 = 0). Normalerweise dachte ich, dass dabei
nicht viel passieren kann, aber nun wird mein Chip von PonyProg nicht
mehr erkannt! Schock! Wie kann ich den Mega wieder zum Laufen bringen?
Bitte helft mir, sonst waren 2h Lötarbeit nur für den Chip umsonst!

von Sebastian Wille (Gast)


Lesenswert?

Hi,

hast Du es schon mit einem externen Quarz versucht?

Sebastian

von Hans Deller (Gast)


Lesenswert?

Ich habe kein Oszilloskop, daher weiß ich nicht, ob der Quarz, den ich
dort angeschlossen habe, funktioniert. Könnte es daran liegen? WEnn ja,
dann fahre ich zu einem Freund, der ein Oszi hat.

von Sebastian Wille (Gast)


Lesenswert?

Hi,

hast Du es dann auch mal ganz ohne Quarz versucht? Vielleicht hast Du
den internen aktiviert.

Mail' doch mal einen Screenshot von Deinen Fuses.

Sebastian

von Hans Deller (Gast)


Lesenswert?

Würde ich ja gerne, wenn ich die mit PonyProg auslesen könnte, aber das
Programm zeigt mir ja an, dass kein Device verfügbar ist - das Problem
ist entstanden, nachdem ich an den  Configurationbits (s.o.)
herumgespielt hatte!

von Sebastian Wille (Gast)


Lesenswert?

Hallo Hans,

Du hast ja recht, mein Fehler!

Ich hab' gerade nochmal darüber nachgedacht:

M103C: Der Kompatibilitätsmodus ist mein Programmieren egal
Boot...: sollte auch egal sein

Aber ClkSel dürfte wichtig sein. Es geht im Moment ja weder ohne Quarz
noch mit, sehe ich das richtig? An den AVR kann man aber auch noch
andere "Schwinger" anschließen. Vielleicht hast Du die ClkSel-Fuses
so ungeschickt gesetzt, daß dies der Fall ist. Schau mal im
Meag128-Datenblatt ab Seite 35ff. Auf Seite 38 ist z.B. ein anderes
"Schwing-System" beschrieben. Probier' notfalls alles mal durch.

Bei meinem AVR hat mir das einmal sehr geholfen, als ich was mit diesen
Fuses verwechselt habe.

Sebastian

von HansHans (Gast)


Lesenswert?

Hi,
Wenn die ClkSel auf 0 stehen
muß der Takt extern zugeführt
werden ,also ein Externer Taktgenerator
nicht nur ein Quarz ....
so habe ich auch schon einen wiederbelebt und
die Configurationbits wieder richtig gesetzt .....

von Hans Deller (Gast)


Lesenswert?

Also einen teuren Quarzoszillator an Xtal1?

von HansHans (Gast)


Lesenswert?

Das ist eine Möglichkeit ,
vielleicht ist ja irgendwo auf einer alten Platine
von einem mainboard oder so einer drauf ,
oder einfach einen Takt selber bauen
z.B. mit einem 74hc132 (oder so was)
Eingang auf Ausgang und ein kleinen Kondensator dran
Hauptsache es schwingt selber
oder von einem anderen AVR abzapfen oder
erzeugen .

von Sebastian Wille (Gast)


Lesenswert?

Hi,

ich weiß nicht, ob es mit einem Quarzoszillator geht.

Hast Du einen 2. AVR? Es reicht ein "kleiner" 2313er oder so. Gebe
auf einem Pin einfach ein Rechtecksignal aus und schließe diesen Pin an
XTAL1 vom Mega128. Die GNDs der beiden Chips noch miteinander verbinden
und Du hast Dein Signal.

Sebastian

von HansHans (Gast)


Lesenswert?

Das habe ich auch gemeint ....

von A. Arndt (Gast)


Lesenswert?

Hallo,

schnapp Dir einfach einen anderen AVR, der noch läuft und schalte einen
Ausgang High/LOw , also Takt und dann ran an XTAL1.

Gruss
A. Arndt

von Ronny Schulz (Gast)


Lesenswert?

Hatte das Problem auch - zwar war der Grund ein anderer. Aber letenendes
lief es mit einem externen Oscillator dann wieder. Die Dinger kosten ja
auch nicht die Welt. Ich glaube für das Auslaufmodell 7.68MHz habe ich
gerade mal 1.50 € bei Segor bezahlt.

von Hans Deller (Gast)


Lesenswert?

Hallo,

ich habe es heute einmal mit einem 10Mhz Quarzoszillator versucht - das
klappte aber nicht. Dann habe ich die Konstruktion mit dem zweiten
Mikrocontroller ausporbiert mit folgendem Code:

    ldi    zl,Low(255)
    out    DDRD,zl
    ldi    zl,Low(255)
    out    DDRB,zl
L0000:
    ldi    zl,Low(1)
    out    PORTB,zl
    Nop
    Nop
    Nop
    Nop
    ldi    zl,Low(3)
    out    PORTB,zl
    Nop
    Nop
    Nop
    Nop
    rjmp  L0000
L0001:

Das sollt ja eigentlich funktionieren, oder? (Ich habe es auch einmal
ohne nop 's probiert - vergeblich) Heute Nachmittag werde ich mit
einem Oszilloskop messen, was da für ein Takt herauskommt.
Was kann man denn tun, wenn das wieder nicht funktioniert - gibt es
eine art TOTAL Reset, bei welchem der ganze Mikrocontroller auf
Werkseinstellungen zurückgesetzt wird?

von Sebastian Wille (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Hans,

einen "Werksrückstellungs-Reset" ist mir nicht bekannt. Es gibt nur
noch den High-Voltage-Programmier-Modus, was Dir - wenn es am
Taktsignal liegt - aber auch nichts hilft. Das bringt nur was, wenn Du
den Seriell-Programmier-Modus abgestellt hast usw.

Ich habe mal einen 1200er als Taktgeber eingesetzt. Das Programm hängt
an. Bei Deinem Programm ist mir nicht klar, für was Du PortD definierst
usw. Schau' Dir mal mein Programm an, mußt halt die Interrupt-Vektoren
anpassen und den SPL setzen.

Sebastian

von Hans Deller (Gast)


Lesenswert?

Ich habe mit Assembler eigentlich noch nie gearbeitet, daher weiß ich
nicht so genau, was ich in deinem Beispiel noch ergänzen muss - ich
benutze einen AT90S4433 zum Test.

von Sebastian Wille (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Hans,

ich hab' das Programm für den 4433 "umgeschrieben".

Ich hab's zwar nicht mehr getestet, sollte aber dennoch laufen.

Sebastian

von Hans Deller (Gast)


Lesenswert?

Vielen Dank - das Programm läuft (AVR Studio), allerding habe ich noch
keine Erfolge mit meinem Mega128 Problem feststellen können - ich leihe
mir jetzt ein Oszi aus und dann melde ich mich wieder.

von Hans Deller (Gast)


Lesenswert?

ich habe nun mal mit einem Oszi überprüft, ob der Takt wirklich direkt
am Xtal1 anliegt - das tut er auch, allerdings ist er nicht sooo
sauber, aber das dürfte keine Rolle spielen(ca. 1,8 Mhz). Der CHip wird
aber immer noch nicht von Ponyprog erkannt - was soll ich nun machen?

von Hans Deller (Gast)


Lesenswert?

Hey Leute, dank eines Tricks von AVRFreaks.com kann ich nun die Bits
wieder setzen und löschen, doch wie muss ich die einstellen, damit ich
einen externen Quarz benutzen kann?

von Sebastian Wille (Gast)


Lesenswert?

Hi,

schau' mal im Mega128-Datenblatt unter "System Clock and Clock
Options" und da unter "External Crystal/Ceramic Resonator".

Die Einstellung basiert auf den MHz des Quarzes.

Aber Achtung: Die Angaben sind invertiert. Unter PonyProg gilt z.B.
folgendes: Eine "1" im Datenblatt bedeutet KEIN Häckchen und
umgekehrt.

Kannst Du den Trick, wie Du die Fuses setzen mußt - beschreiben?!?
Danke!

Sebastian

von Hans Deller (Gast)


Lesenswert?

Willst du wissen, wie man einen Mikrocontroller rettet, der falsche
Fuse-Bits hat? Man muss ein 500kHz Signal an Xtal1 legen - dann kann
man mit Ponyprog auf den Chip zugreifen.

Ich habe das gestern mal versucht mit dem Einstellen der Fusebits -
kannst du mir nicht mal einen Screenshot von den fertig configurierten
Mega128-Fusebits zuschicken? Ich benutze ein 16Mhz Quarz, welches über
2 22pF Kondensatoren an GND gelegt ist. Als Spannungsquelle benutze ich
ein altes PC-Netzteil.

von Sebastian Wille (Gast)


Lesenswert?

Hallo Hans,

Screenshot geht gerade leider nicht, da ich PonyProg nicht mehr laufen
habe, weil ich das AVR-Studio nehme. Aber die Beschreibung ist auch
nicht schwer:

Hier machst Du ein Häckchen rein:
- CKOPT

Hier machst Du KEIN Häckchen rein:
- CKSEL3
- CKSEL2
- CKSEL1
- CKSEL0
- SUT1
- SUT0

Probier's mal aus. Falls es nicht geht, kann ich Dir noch beschreiben,
wie Du den internen Quarz zum Laufen kriegst.

Sebastian

von Hans Deller (Gast)


Lesenswert?

Vielen Dank dafür! Ich wusste gar nicht, dass man mit AVR Studio flashen
kann - geht das auch mit der freewareversion von der Atmel-Homepage?
Wie geht das?

von Sebastian Wille (Gast)


Lesenswert?

Hallo Hans,

man kann zwar mit dem AVRStudio wunderbar und superschnell (!!!) per
ISP flashen, man braucht allerdings den "AVRISP"-Adapter (ca. 50
Euro) oder das STK500. Das hat das "AVRISP" schon drauf.

Dann dauert der Mega8 aber nur noch 0,4 Sekudnen anstatt 1 Minute mit
PonyProg!

Tip: Kauf' Dir das AVRISP, beim Mega128 lohnt es sich! Bei 12K Code
ca. 7 Sekunden mit PonyProg Minuten... da wird man irre!

Geht Dein Mega128 nun wieder?

Sebastian

von Hans Deller (Gast)


Lesenswert?

Tja, also noch funktioniert der chip nicht, aber was muss ich denn bei
Lock1, Lock2, Bootlock1, Bootlock2, Bootlock11, Bootlock12,WDTON,
OCDEN, JTAGEN, EESAVE, BODLEVEL, BODEN, BOOTSZ1, BOOTSZ0, BOOTRST
einstellen? UNd wie bekomme ich einen 16Mhz oder 8 Mhz Quarz zum laufen
- alternativ könnte ich auch noch einen 10Mhz Quarzoszillator
anschließen, aber das nur sehr ungern.

von Sebastian Wille (Gast)


Lesenswert?

Hallo Hans,

schade, daß es immer noch nicht geht...

Die anderen Fuses sind für Dein Problem eigenlich egal. Die ganzen
Bootlock* sind verschiedene Lesesperren (damit niemand Dein Programm
ausspioniert), JTAGEN aktiviert das JTAG-Interface (brauchst Du nicht)
usw.

Hier sind mal die Einstellungen für den internen 8MHz-Quarz:

Hier ein Häckchen:
- CKOPT
- CKSEL3
- CKSEL1
- CKSEL0
- SUT0

Hier KEIN Häckchen:

- CKSEL2
- SUT1

Nach der Umstellung der Fuses Dein Quarz bzw. 500KHz-Takt gleich weg.

Vielleicht klappt's ja nun!

Sebastian

von Hans Deller (Gast)


Lesenswert?

Einen 8 Mhz Quarz hat das Ding integriert?

von Sebastian Wille (Gast)


Lesenswert?

Hi,

ja, es hat sogar 4 Varianten integriert:

- 1 MHz
- 2 MHz
- 4 MHz
- 8 MHz

Siehe auch Datenblatt S. 39.

Ist das Dein 1. Atmel?

Und geht's nun endlich?!?

Sebastian

von Hans Deller (Gast)


Lesenswert?

Hallo,

das ist nicht mein erster Atmel, aber mein erster Mega! Die AT90S -
Chips und die Tinys mussten in Sachen Clock ja nicht programmiert
werden. Es funktioniert übrigens immer noch nicht - ich kann zwar auf
den Chip zugreifen,aber nicht programmieren - schreiben fehlgeschlagen.
Nur wenn ich auf die internen 8Mhz umschalte, dann steht beim 2. oder
3. Versuch "SChreiben erfolgreich" ~ mein Programm funktioniert aber
trotzdem nicht

von Hans Deller (Gast)


Lesenswert?

Mit diesen Settings funktioniert es nun endlich!

<img
src="http://www.avrfreaks.net/phorum/download.php?f=3&file=PonyProgSecBitsSet.JPG">;

von Sebastian Wille (Gast)


Lesenswert?

Hi,

so geht es aber mit einem externen Quarz, oder?

Komisch, daß der interne nicht geht...

Naja, hauptsache nun geht er wieder! :-)

Sebastian

von Ronny Schulz (Gast)


Lesenswert?

Naja warum das mit dem internen nicht geht, wäre doch auch interessant
zu wissen. Ich hatte damals das Problem meinen Stack falsch eingestellt
zu haben. Mit dem externen ging er dann meistens ... seltsam aber
wahr..

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.