Forum: Mikrocontroller und Digitale Elektronik Master Reset- AVR?


von Volker Klanke (Gast)


Lesenswert?

Moin,

gestern habe ich richtig Mist gebaut. Dummerweise habe ich bei meinen
Atmega16 die CKSEL-Fuses mit 1011 überbeschrieben, anstatt 0100
(8MHz).
Jetzt bekomme ich über ISP- Dongle und Ponyprog keinen Zugang zum
Controller mehr. Was kann man machen?

Passiert ist es, weil ich zu schnell im Ponyprog rumgehackt habe und
die inverse Logik der blöden Häkchen übersehen hatte.

Was mache ich, wenn ich einen externen Quarz (16Mhz) anschließen
möchte? Sind die 33pF C richtig? Und müssen die Fuses so gestellt
werden, CKOPT=0 und CKSEL=1111?

Gruß

Volker

von Volker Klanke (Gast)


Lesenswert?

Leute, ich brauche Hilfe.

Kann es überhaupt sein, dass ich durch falsche CKSEL-Bits keinen
Zugriff mehr auf den Controller habe, oder ist der Fehler woanders zu
suchen?

Gruß

Volker

von Joerg Wunsch (Gast)


Lesenswert?

> Kann es überhaupt sein, dass ich durch falsche CKSEL-Bits keinen
> Zugriff mehr auf den Controller habe, oder ist der Fehler woanders
> zu suchen?

Ja, effektiv kannst Du Dir damit den Zugriff schon abklemmen, wenn Du
am Ende keinen Oszillator mehr hast, der schwingt.

Wenn ich das richtig lese, ist 1011 ein externer Quarz < 0,9 MHz.
Vielleicht hast Du ja Glück, daß ein 1 MHz Quarz gerade noch schwingt
damit, 33 pF müßten dafür noch hinkommen.  Quarze geringerer Frequenz
sind erstens noch seltener, zweitens kann es gut sein, daß Du keine
Programmiersoftware mehr finden wirst, die langsam genug ist, damit
umzugehen.  (Die ISP-Programmierung erfolgt ja synchron mit dem Takt,
d. h. wenn Du einen langsamen Takt hast, mußt Du auch sehr lange
warten.)

von Volker Klanke (Gast)


Lesenswert?

Ah, danke Jörg. Sowas ähnliches habe ich mir auch schon gedacht. Mal
angenommen ich hätte jetzt keinen passenden Quarz, oder ich wüßte
nicht, mit was ich die Clock- Bits überschrieben hätte, dann säße ich
doch ganz schön auf dem Trockenen.
Es muss doch irgendwie hardwaremäßig möglich sein, die AVRs in den
Auslieferungszustand zurück zu setzen.

Gruß

Volker

von Joerg Wunsch (Gast)


Lesenswert?

> angenommen ich hätte jetzt keinen passenden Quarz, oder ich wüßte
> nicht, mit was ich die Clock- Bits überschrieben hätte, dann säße
> ich doch ganz schön auf dem Trockenen.

In der Tat.

> Es muss doch irgendwie hardwaremäßig möglich sein, die AVRs in den
> Auslieferungszustand zurück zu setzen.

Mit paralleler Programmierung.  Allerdings sind die Programmiergeräte
dafür eben aufwendiger, außerdem kannst Du den Controller nicht mehr
in der fertigen Schaltung programmieren.

Beim ATmega8 kannst Du Dir per Fuse-Bit sogar das /RESET-Pin
wegdefinieren...  Es gibt also viele Wege, sich ins Knie zu
schießen. ;-)

von Peter (Gast)


Lesenswert?

Hallo Volker,

mir ist leider so was ähnliches passiert, und zwar hab ich den CKOPT
gesetzt. Das wars ich kann nicht mehr auf meinen Controller
zugreifen..
Ich brauch auch sowas wie einen Master Reset (Auslieferungszustand)

Weiteres siehe mein Beitrag unter programming mode....

MfG

Peter

von Joerg Wunsch (Gast)


Lesenswert?

> und zwar hab ich den CKOPT gesetzt.

Hmm, Auslieferungszustand ist `unprogrammed', und das ist eigentlich
die Variante, die mehr Einschränkungen hat.  Laut Datenblatt wird
dabei die Oszillatoramplitude reduziert, so daß zwar Strom gespart
wird, aber nur ein eingeschränkter Frequenzbereich nutzbar ist und
keine externen Lasten getrieben werden können.  Damit sollte ein
bloßes versehentliches Setzen dieser Fuse außer einer höheren
Stromaufnahme keine negativen Folgen haben.

von Peter (Gast)


Lesenswert?

tja leider hat es doch erhebliche Folgen...

Bin ebenfalls für alle Hinweise dankbar,

Hab schon einen ext. oszillator angeschlossen, nützt auch nichts...
Ich bin ratlos...

von GUHA (Gast)


Lesenswert?

Hallo Volker
Ich hatte dasselbe Problem mit einem ATMega8 mit einem 8MHz Quarz. Was
mir half war folgendes:

Ich entfernte C2 (siehe ATMega16 Datenblatt, Seite 24), und loetete
einen Widerstand (ca. 4.7k) zwischen der positiven Versorgungsspannung
(Vcc) und XTAL1. Beachte dass ich den Quarz nicht entfernen musste.
Damit hatte ich nun einen externen RC Oszillator kreiert, der mit ca.
2MHz lief (mein C1 war ca. 33p. Siehe auch ATMega16 Datenblatt, Seite
26). Die Schwingungswellenform sah zwar nicht sehr schoen aus, aber es
reichte, um den ISP Dongle wieder verwenden zu koennen. Ich selektierte
"external RC Oscillator" als clock source, und konnte damit an die
Fuse bits ran. Ich aenderte die Fuse bits dann entsprechend fuer einen
Quarz. Dann entfernte ich den Widerstand, und loetete C2 wieder ein.
Beim naechsten Einschalten war alles wieder funktionsfaehig (mit dem
Quarz).

Hoffe das dies hilft!

GUHA

von Volker Klanke (Gast)


Lesenswert?

Hallo Guha,

danke für die Antwort. Ich probiere es bei Zeiten mal aus.
im Endeffekt entspricht deine Schaltung ja der "externen RC-
Configuration" (Atmega16, S.26). Mit welchem Programm flasht du den
Controller? Ich nutze Ponyprog und den ISP-Dongle für den Par.-Port.

Warum benutzt du einen externen 8Mhz- Quarz? Der ATmega8 kann doch
intern 1,2,4 und 8MHz.

Gruß

VolKkr

von GUHA (Gast)


Lesenswert?

Hallo Volker
Du hast voellig recht, die Schaltung entsprict genau der externen RC
Schaltung. Ich wollte auch nicht eine 'gefinkelte' Schaltung
kreieren. Das ganze diente als Notmassnahme.
Ich verwende uebrigens den ISP Dongle (Serielle Schnittstelle) und AVR
Studio 3.54 als Entwicklungsplatform.
In Bezug auf den Quarz benutze ich gern eine hochstabile Frequenzquelle
fuer den Mikro, falls ich genaue Frequenzen fuer spezielle Anwendungen
brauche.

Gruss
GUHA

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.