Forum: Mikrocontroller und Digitale Elektronik AVRMega8 ist auf einmal taub


von Sternd (Gast)


Lesenswert?

Hallo zusammen,

wer kann mir erklären, warum mein Atmel nicht mehr läuft und was ich
dagegen tun kann?

Aber erstmal im Detail:
Ich habe einen Mega8 via ISP am Rechner, eine reine Testschaltung, nur
eine serielle Schnittstelle und ein Quarz hängen noch am
Mikrocontroller dran. Ich konnte auch völlig problemlos den
Atmelprogrammieren und wollte dann durch setzen der Fusebits von
internen Takt auf den 10MHz-Quarz umschalten (mit 2*18pF gg. GND). Dazu
habe ich die entsprechende Anleitung unter
s.huehn.de/elektronik/avr-prog/avr-prog.htm strikt befolgt. In Kurzform
deren Inhalt:
- SUT1 und SUT0 unchecken, also jeweils auf 1
- CKSEL3-CKSEL0 auf 1111
- CKOPT auf 1
- BODEN auf 0
- BODLEVEL auf 1
Der Rest sollte auf Werkseinstellung bleiben
Muß wohl sagen, den marginalen Unterschied, daß diese Anleitung für den
Anschluß eines 4MHz-Quarz an einen Mega8L gedacht (bei mir 10MHz an
Mega8) ist habe ich erst übersehen.
Nun kann ich weder den Atmel programmieren, noch auslesen, das aktuell
geladenen Programm scheint aber noch richtig zu laufen. Seltsamerweise
konnte ich irgendwann nach dem Auftreten des Problems ein einzelnes mal
noch Programmdaten übertragen, aber was da war oder wieso es ging --
keine Ahnung. Aber vielleicht wißt Ihr weiter. Ich habe zwar noch einen
Anderen, aber möchte natürlich wissen, was da schief ging, zumal ich den
anderen eigentlich auch auf externen Quarz umschalten wollte.

gruß
Sternd

von Feadi (Gast)


Lesenswert?

Hi,

laut Datenblatt ist dein Mega8 jetzt auf 3-8 MHz eingestellt, versuch
einfach ein Quarz in diesem Bereich anzuschliessen, dann sollte es
gehen.

Gruß, Feadi

von Peter (Gast)


Lesenswert?

Hallo,

dass der Quarz nicht schwingt kann ich mir kaum vorstellen, er muesste
zumindest laufen (auch wenn ungenau)
nunja
Wenn alles nciht hilft kannst du einen externen Takt an Xtal1 haenngen
und versuchen auf ihn zuzugreifen.
Evtl war es auch Xtal2

von Hubert.G (Gast)


Lesenswert?

Womit Progst du, Ponyprog? Ich hoffe du hast dir dir Anleitung gut
durchgelesen. Warscheinlich hast du auf externen Takt gestellt da im
Ponyprog die Häckchen eine 0 bedeuten. Auf XTAL1 einen externen Takt
anlegen und nochmal probieren.

Sollte das nicht der Fall sein, richtige C am Quarz gegen Masse?, einen
anderen Quarz probieren.

von StefanK (Gast)


Lesenswert?

Ich weis auch noch was dazu zu sagen:

Ich hatte eine AT90CAN128 in der Kur, bei dem ich aus Versehen auf
externen Takt umgeschaltet hatte. Soweit so gut: Externen Takt angelegt
und wie bei Dir keine Kommunikation mehr moeglich.
Das Ding arbeitete sein letztes Programm aber noch korrekt ab.
Der einzige Ausweg aus diesr Dilemma war die
HighVoltage-Parallel-Programmierung. Somit war es mir wieder moeglich,
die Fuses zu setzen, so dass ich auch letzendlich wieder ueber die SPI
programmieren konnte.

Natuerlich wollte ich der Sache auf den Grund gehen. Dabei stiess ich
darauf, dass die Oszillator-Frequenz mindestens 4mal hoeher sein muss
als die SPI-Taktung (beim AT90CAN128). Also, noch einmal auf externen
Takt umgestellt und die SPI-Taktung von 1/4 bis auf 1/10 der
Oszillator-Frequenz heruntergedreht. Jedoch kein Verbindugsaufbau
moeglich. Erst als ich einen 32KHz-Signal als externen Takt verwendet
hatte und die SPI sogar mit 57,6KHz bediente hatte ich teilweise wieder
Zugriff auf den Controller.

Mein Problem lag letztenendes beim serial clock SCK. Die High- und
LOW-Phasen des SCK muessen deinem Oszillator angepasst sein.
Schau doch mal im Data Sheet deines Controllers unter serial
downloading nach, da findest Du Informationen darueber, wie lange die
high- und low-Phase des SCK bei entsprechender Quarzeinstellung sein
muss.
Also, immer schoen vorsichtig sein, wenn man an Takt dreht und die SPI
als Programmierschnittstelle verwendet.

Gruss,
Stefan

von Sternd (Gast)


Lesenswert?

Danke für die Hinweise, ich werde denen nach dem WE nachgehen. Die
Ideee, einen anderen Quarz zu verwenden oder eine RC-Schaltung
aufzubauen kam mir schon, für erstere werde ich mir nächste Woche einen
anderen Quarz holen, letztere muß ich zwar noch testen, aber ich glaube
nicht, dass es mit dem RC funktionieren wird, weil die Fuses eigentlich
nicht entsprechend eingestellt sein dürften. Einen externen
Taktgenerator kann ich im moment leider nicht testen, der ist
umzugsbedingt unzugänglich.

Ich programmiere übrigens mit PonyProg, daß ich die Fuses falsch
gesetzt habe, halte ich aber für relativ unwahrscheinlich, ich habe
nicht nur alles mehrfach kontrolliert, sondern für MC-DAUs wie mich war
die o.g. Anleitung auch mit Screenshots versorgt ;-).

OK, ich werde also erstmal ausprobieren, was Ihr mir geraten habt.

@Stefan: Deine Mail muß ich  noch ein zweites mal lesen, bevor ich
alles verstanden habe. Was ist denn
HighVoltage-Parallel-Programmierung? 240 V parallel an alle Pins? Ne im
Ernst, sagt mir noch nichts. Der Rest war natürlich verständlich, muß
aber erstmal besagte Infos aus den Datenblättern rauslesen.

so long und danke
Sternd

von Sternd (Gast)


Lesenswert?

Hmm, mit 4MHz und 8MHz Quarzen geht es auch nicht...
Ich kann mir aber auch nicht vorstellen, daß das Umstellen der
SPI-Taktung, wie Stefan vorschlug, funktionieren wird, denn ich bin mir
halbwegs sicher, vor geraumer Zeit den Atmel mit externem Takt und sonst
gleichem Versuchsaufbau programmiert zu haben.

Gibt denn es eine Möglichkeit, die ClkFuses irgendwie zu reseten?

gruß
Sternd

von Conlost (Gast)


Lesenswert?

Hallo,

>Gibt denn es eine Möglichkeit, die ClkFuses irgendwie zu reseten?<

ja die gibt es, man kann am Pin XTAL1 einen
externen Takt anlegen, dann kann man wieder
programmieren und die Fuses lesen und richtig
einstellen.

es grüsst,
Arno

von Sternd (Gast)


Lesenswert?

Gibt es eine Mindestfrequenz für den externen TAkt?

von Sternd (Gast)


Lesenswert?

Solange ich auf meinen externen Taktgeber warten muß frag ich noch mal
nach, ob jemand eine Idee hat, woran es denn nun liegt, daß ich den
Atmel nicht mehr per isp erreiche. Wie gesagt, ein externer Quarz liegt
an, Cs entsprechend des Datenblattes und daß ich den ISP-Takt abändern
muß, kann ich mir empirisch begründet auch nicht vorstellen. Nun habe
ich ja auch den Brown dingsbums eingeschaltet, wenn auch mit einer
Schaltschwelle von 2,7 Volt und mein Vcc liegt bei 5V+-0,05V.

Mir ist absolut nicht klar, warum ich diesen Aussetzer habe. Und meinen
zweiten und derzeit einzigen Atmel Mega8 mag ich nicht auf externen Takt
umschalten, daß mir der nicht auch noch flöten geht.

von Karl H. (kbuchegg)


Lesenswert?

> Solange ich auf meinen externen Taktgeber warten muß ...
> Und meinen zweiten und derzeit einzigen Atmel Mega8 mag ich nicht

Kleiner Tip. Du kannst Deinen zweiten und derzeit einzigen
Mega8 als Taktgeber verwenden. Dann brauchst Du nicht auf
irgendeine dubiose Lieferung warten. Einfach einen Pin
toggeln lassen und an den 'toten' Mega8 haengen.

von Sternd (Gast)


Lesenswert?

Danke Karl,

da hätte ich eigentlich auch drauf kommen können. Aber wie du siehst,
bin ich alles andere als routiniert im Umgang mit MCs.

Aber, leider funkzt nicht. Der zweite Atmel - intern mit 1 MHz getaktet
-  toggelt einwandfrei, und den Ausgang habe ich direkt auf XTAL1
gelegt. XTAL2 hängt, wie auch im Datenblatt beschrieben, in der Luft.
Ich habe verschiedene Takte probiert, aber Nr.1 gibt einfach keinen
Pieps von sich. Ponyprog meldet konsequent, das Device wäre missing
oder unknown...

von Andreas Lang (andreas) (Gast)


Lesenswert?

Versuch mal den SPI-Takt so niedrig wie möglich einzustellen und mit
externem Takt zu arbeiten. Clock(SPI)<Clock(XTAL1)/4, da der
integrierte Microsequencer, der für das Flashen zuständig ist, sonst
nicht nachkommt.

von Sternd (Gast)


Lesenswert?

Da hatte ich neulich schon  mal nach geguckt, aber nicht gefunden, wo
ich den einstellen könnte. Ich vermute mal, daß sollte doch irgendwo in
Ponyprog gehen...

von StefanK (Gast)


Lesenswert?

Mit 'High voltage programming mode' meine ich die Programmierart, die
bei ATMEL unter 'parallel programming' laeuft. High voltage deshalb,
da man an den RESET Pin 12Volt anlegen muss, um in den Programmiermodus
zu kommen. Diese Programmiererei ist etwas komplizierter, da man
zusaetzlich noch die 12Volt braucht. Dafuer funktioniert sie aber so
gut wie immer. Vorgehensweise findest Du im Datenblatt.
Falls die serielle Programmierung gar nicht mehr funktionieren will, so
koennte das die Lösung sein.

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.