Forum: Mikrocontroller und Digitale Elektronik Entering programming mode FAILED!


von Peter von Frosta (Gast)


Lesenswert?

Hallo liebe, schlaue Gemeinde!

ich verzweifel schon seit stunden!

Status:
AVR Studio 4
WinAVR
STK500 ISP Programmer
atmega32
atmel Evaluationboar von pollin

Problem ist:
ich habe den Atmega32 bis vorhin noch flashen können.
dann plötzlich nicht mehr!!
ich meine, der Fehler trat auf nachdem ich einmal unter "Fuses" - 
SUT_CKSEL nen anderen wert für die Ozsilation gewählt hatte.
Leider weiß ich nicht welcher zuvor gewählt war. Ich tippe jedoch auf
int. 1 MHz... das ist ja standart.
habe diesen und weitere Werte probiert.
immer:
"Entering programming mode.. FAILED!"
kann also die oszillation garnicht (mehr) verstellen...

bei den ISP-Frequenzen habe ich alle versucht.
habe auch einen anderen atmega32 versucht zuflashen... gleiches problem.

deinstallieren und installieren von avrstudio, winavr und dem 
ispprogrammer-treiber habe den fehler nicht behoben.

BIIITTEE helft mir.
In allen gefunden FOrenbeiträgen war der einzige Vorschlag - und auch 
meistens die lösung, die ISP-Frequenz zu reduzieren...
das habe ich ja a) versucht und b) funktionierte es ja, bis ich 
irgendwas anscheinend verstellt habe!

vllt ncoh als logischen Hinweis für eure überlegungen:
wenn ich eine fuse gesetzt hätte, welche das eintreten in den 
programmingmode verhindert,
dann hätte es bei dem zweiten Amtega32 ja wenigsten funktionieren 
müssen?!

ich bin ratlos und hoffe jemand anderes von euch nicht :)
würd mich rieseig freuen, wenn mir geholfen werden kann!

von A0 S. (as0)


Lesenswert?

klingt klassisch nach

Beitrag "SUT_CKSEL, wa nun?"

oder hv programming. lasse mich aber wie immer gerne eines besseren 
belehren.

mfg

von Christian P. (peterfrosta)


Lesenswert?

Danke dir!
da hab ich ja schon mal nen anhaltspunkt aber richtig weiter weiß ich 
noch immer nicht.
den externen takt an xta1...
a) xta1 ist am uC oder am programmer?
b) wo hol ich mir den externen takt her?

danke danke danke :)

edit: auf dem evalutionsboard ist ein 8 Mhz quartz! also am atmega32 
anliegend...

von Eingehirner (Gast)


Lesenswert?

a) Wie oft hast du ins Datenblatt geschaut, um deine Frage selber zu 
beantworten?
b) Am besten von nem anderen µC...

Ich hatte mal das Problem, daß der USBmkII sich den (falsch 
eingestellten) Takt aus irgendeinem Grund gemerkt hatte... mit avrdude 
konnte ich dann über den Terminal-Modus "sck 10" senden, was ihn wieder 
"vernünftig" gemacht hat. Ich hab schon gedacht, ich dreh durch, jeder 
(frisch gekaufte) µC war nicht ansprechbar, nicht mal die Signatur 
auszulesen... Danach ging alles einwandfrei. Keine Ahnung, ob das bei 
anderen Geräten auch auftritt...

von Christian P. (peterfrosta)


Lesenswert?

hey.. ja sry. für die blöde frage! das xtal am uC ist, wusste ich, aber 
dachte vllt wäre was am programmmer - blöd ok!

also das fehlerbild welches du beschreibst, ist bei mir ja ähnlich!
leider kann mit terminalmodus nciht viel anfangen!

also von anderen board, könnt ich ja leider auch nur den 8MHz takt ( vom 
Quarts) abgreifen?!

ich will auch mein STK500 (ich glaub ichkann auch AVRISP starten) wieder 
vernünftig machen!

wie wo kann ich im Terminalmodus was einstellen? sck10?? das beudeutet 
vermutlich nciht 10 MHz xD sondern im Datenblatt würde ich informiert 
werden?!?

also ich hab zwar nen quartz (8MHz) aufm board, jedoch war der uC bisher 
in einem eigenen Board ohne Quartz ( im Prinzip eine Grundschaltung), da 
hatte ich Ihn standartmäßig auf 1 Mhz.

vllt schreib ich jetzt auch zuviel...
kannst du mir erläutern wie ich meinem STK500 auch per terminal die 
richtige frequenz angeben kann?
danke!

von Christian P. (peterfrosta)


Lesenswert?

ich stell gerade fest, dass auf dem board für die verschieden möglich 
aufsteckbaren uCs auch verschiedene Quartze vorhanden sind. der für 
meinen Atmega ist ein 16 MHz quartz... als kleiner nachtrag...
ich kann leider ncoh immer nicht flashen :/

von Christian P. (peterfrosta)


Lesenswert?

hab auf das board jetzt mal nen atmega 48 gesteckt (es ist zwar nur ein 
amtega8 angegben aber im datenblatt sehen die beide pinkompatibel aus).
jedenfalls bekomm ich da sofort wieder die signatur ausgelesen. also 
wird es wohl an irgendwelchen (frequenz) fusebits liegen?! wie bekomme 
ich die bei den atmega32 wieder auf default?

ich raste hier bald aus, weil ichnciht weiter komme :(
noch mals und weiterhin vielen dank!

von Eingehirner (Gast)


Lesenswert?

AVRDUDE bietet einen sogenannten Terminalmodus, das heißt, du kannst 
einfach in der Kommandozeile (Linux) oder im 
Dosprompt/Eingabeaufforderung (Windows)
1
avrdude -p mega32 -t
eingeben (das -t bedeutet "Geh in den Terminal-Modus"), dann hast du ein 
im Programm laufendes Terminal, wo du Befehle eingeben kannst. Statt 
mittels
1
avrdude -p mega32 -t -Ueeprom:r:eeprom.dat:i
das EEPROM aus deinem ATMega32 auszulesen und in der Datei eeprom.dat zu 
speichern, kannst du obigen Befehl eingeben (dann wird als Start der 
Kommandozeile "avrdude" angezeigt) und dann
1
avrdude> dump eeprom 0 512
eingeben, um dir die ersten 512 Bytes deines EEPROM direkt anzeigen zu 
lassen. Hier 
(http://www.nongnu.org/avrdude/user-manual/avrdude_9.html#Terminal-Mode-Examples) 
sind noch ein paaar mehr Beispiele. Wie gesagt, das ist für den sehr 
speziellen Fall, daß du dasselbe Problem hast wie ich damals.

Der Befehl sck 10 bedeutet einfach nur, daß du die AVRDUDE-Frequenz (und 
anscheinend des USB-AVRISPmkII) auf 0.1 MHz setzt (die 10 sind die 
Anzahl an Microsekunden pro Takt). Damit kannst du eigentlich jeden 
nicht-verfusten AVR wieder ansprechen.

von Electronicfox (Gast)


Lesenswert?

Wenn du einen STK500 hast, steck den Jumper AREF ab und prüfe ob am PIN 
XT1 ein CLOCK-Signal anliegt. Das hat bei meinen verfuseten Mega32 oft 
geholfen. Wenn AREF drin steckt steigt die Spannung an TARGET auf etwa 
6,2V an und das AVR-Studio zum Beispiel, kann nicht mehr auf die 
Hardware zugreifen und erzeugt diesen Fehler.

von Christian P. (peterfrosta)


Lesenswert?

danke ihr beiden... also der vorletzte tipp fällt bei mir ja schon ma 
weg, da ich kein avrdude habe( ich hoffe ich verstand richtig, das 
avrdude eine hw ist ;) )

der letzte beitrag hört sich sehr gut an, wenn....

ich habe im avrstudio gsehen, dass stk500 eine board von atmel ist?!
ich tippe das ist ein evaluierungsboard, mit integriertem 
ISP-programmer?!

Also ich habe mir damals (keine ahnung wo) einen ISP-programmer geholt 
der mit stk500 kompatibel ist!
das dingen hat keine jumper, sondern ist komplett in neongrünen 
Kunststoff gegossen.
und mein envaluationsboard von pollin hat keine jumper an aref - soweit 
ich das jetzt spontan aus der ferne entscheiden kann.
also ist der tipp für mich auch nciht hilfreich???

ich glaube ich habe den fehler mittlerweile in der SPIEN Fuse ausfindig 
gemacht, das kätschen ist ohne hacken (ein kleines fragezeichen in der 
ecke ist zusehen) und setzten kann ich den haken nicht  mit dem 
isp-programmer. KLAR, wenn die SPIEN Fuse nicht gesetzt ist :(

wobei: wenn avr den chip nicht auslesen kann, dann kann er ja bestimmt 
auch nicht die fuses auslesen, oder???

seltsam ist, dass ich auf einen zweiten Atmega32 (zuvor ohne fehler) 
auch nciht zugreifen konnte, daher dachte ich es liegt nicht am chip, 
sondern an der programmer hard- oder softwaere.
allerdings, kann ich einen atmega48 (auf gleichem board) problemlos 
auslesen und programmieren!! daher wohl doch der chip?!

(Das das programm auf dem atmega48 nicht die led zum leuchten bringt, 
wird wohl ursachen in meinem code haben, auch wenn die gleichen ports 
verwendet werden und die avr/io.h das ja eigentlich regeln sollte :( )

morgen müssten von reichelt neue atmega32 kommen. ich hoffe das ich auf 
die dann zugreifen kann!!
sonst muss wohl echt ein parallelprogrammer her?!
hab bei conrad ein multi-programmer (auch parallel) für unter 40 € 
gesehen. damit müsste ich ja die die SPIEN Fuse setzten können?

von Eingehirner (Gast)


Lesenswert?

Solange die µCs neu sind, sollten sie funktionieren. Die kommen alle mit 
1MHz intern voreingestellt, wenn du also nix an den Fuses veränderst, 
sollten sie laufen. Tun sie das nicht, liegt es an deiner Hardware.

Die SPIEN-Fuse ist IMMER auf Fragezeichen, solange du sie nicht 
ausgelesen hast. Sollte die bei einem gekauften AVR nicht gesetzt sein 
(SPI not enabled), kann dein AVR nicht seriell programmiert werden! Die 
sind eigentlich immer aktiv.

avrdude ist keine Hardware, sondern wie AVR Studio eine 
Programmiersoftware für die AVRs. Kostenlos und relativ schnell zu 
lernen, der Code muß vorher (z.B. mit avrasm2 von Atmel oder mit 
gcc-avr) compiliert werden, dann kann man damit alles machen, was man 
will -- Code auf den AVR schreiben, von dort auslesen etc etc. Bei mir 
hat die Re-Aktivierung eben nur mit avrdude geklappt, AVR Studio hat 
nichts geholfen.

Ich kenne das STK500 nicht, aber soweit ich weiß, bietet es eine 
parallele Programmierschnittstelle (im Sinn von RS232). Das AVRISPmkII 
hat z.B. eine USB-Schnittstelle, wie man das ans STK500 kriegt, weiß ich 
aber nicht. Ich vermute, mit dem AREF-Jumper meint Electronicfox, daß du 
mal schauen sollst, ob bei deinem µC AREF mit etwas anderem verbunden 
ist.

Grundsätzlich hast du nicht viele Möglichkeiten, einen AVR zu verfusen. 
Entweder er erwartet einen bestimmten Takt vom Quarz -- dann sollte es 
möglich sein, ihn durch seeeeehr langsame Programmierung wieder richtig 
zu fusen -- oder er erwartet einen externen Takt, den du mit einem 
zweiten AVR z.B. via Timer im CTC-Mode erzeugen kannst. Lies dir mal den 
Artikel hier im Wiki dazu durch.

Hast du beachtet, daß eine 1 beim Setzen der Fuses bedeutet, daß die 
entsprechende Einstellung NICHT ausgewählt wurde?

Ansonsten würde ich dir raten, anstelle des Geldbeutels erstmal den Kopf 
einzusetzen... und auch nicht sofort alles zu deinstallieren, nur weil 
was nicht geht. In 99% aller Fälle ist der Anwender schuld, nicht die 
Hard- oder Software. Einfach strukturiert überlegen "Was hab ich 
gemacht?" und die Fehlerursache schrittweise eingrenzen. Hat bei mir 
zumindest am Ende zum Erfolg geführt.

von Christian P. (peterfrosta)


Angehängte Dateien:

Lesenswert?

mist... hatte schon viel geschrieben und dann wachte mein rechner nicht 
mehr aus dem standby :-( also noch mal!

danke einhirner!!!
sehr gut erläutert!

auch wenn ich vom 8051 programmieren hre, in der uni zeit verschiedene 
progs für verschiedene aufgaben kannte, ist beim avrstudio ja alles 
unter einer oberfläache. so dass ich die einzelnen sachen nicht 
unterschied.

also...
aref ist unbelegt allerdings zu ner buchse herausgeführt, so dass ich da 
nen signal drauf geben könnte.
an xtal ist ein 16 MHz quartz.
ich meine, dass ich mal in dem programmerpart von avrstudio 
(avrisp/stk500)
den takt verstellt habe auf "ext. oscil. high".
seid dem kann ich nicht mehr zugreifen. aber ich konnte diesen nicht 
mehr zurück stellen, daher denke ich dass die isp-fuse deaktiviert ist.

IM C-Code habe ich nie solche einstelllungen getättig!
das ist doch auch nicht nötig oder? dieses register oder fuses (?) 
brauch ich doch auch nicht beschreiben, das mach ich doch per 
auswahlfenster in programmerfesnter oder???

die isp frequenzen habe ich alle durch! trotzdem kann ich nicht die 
chips nicht auslesen! also ist die SPIEN fuse doch bestimmt wirklich 
deaktiviert?!

in wieweit hilft mir dann wenn ich auf aref nen takt gebe??

von spess53 (Gast)


Lesenswert?

Hi

> also ist die SPIEN fuse doch bestimmt wirklich deaktiviert?!

Nein. Wenn die Fuses nicht/nicht richtig gelesen werden, wird auch die 
SPIE-Fuse falsch gelesen. Wie soll denn dann eine richtige Anzeige 
zustande kommen?

MfG Spess

von Christian P. (peterfrosta)


Lesenswert?

ja das ist mir schon klar! aber wenn ich mit keiner isp-frequenz den 
chip auslesen kann?! dann muss die ursache ja woanders liegen? deshalb 
SPIEN?!

danke an euch alle :)

von holger (Gast)


Lesenswert?

>den takt verstellt habe auf "ext. oscil. high".
>seid dem kann ich nicht mehr zugreifen. aber ich konnte diesen nicht
>mehr zurück stellen, daher denke ich dass die isp-fuse deaktiviert ist.

Wenn keine ISP Frequenz mehr funktioniert dann hat der
uC keinen Takt mehr. So einfach ist das. Wenn die Fuses
wirklich auf Ext. Crystal programmiert wurden, dann liegt
es nahe das mit dem Quarz oder den Lastkapazitäten
was nicht stimmt. Wenn auf Ext. Clock programmiert wurde
dann nützt der Quarz nichts. Dann muss man einen Takt auf
XTAL1 geben.

von Christian P. (peterfrosta)


Lesenswert?

aber auf extal ist doch der quartz liegend!
du meinst wenn auf clock gestellt ist, müsste nen takt an xtal anstelle 
des quarzes?

nen quarz macht keinen "normalen" takt?? sondern eine schwingung??
:)

von holger (Gast)


Lesenswert?

>du meinst wenn auf clock gestellt ist, müsste nen takt an xtal anstelle
>des quarzes?

Ja. Wenn du auf Ext Clock programmiert hast ist der
Baustein im Chip der den Quarz zum schwingen bringt
abgeschaltet. Dann ist XTAL1 nur ein Eingang und dort
muss ein Takt angelegt werden.

von spess53 (Gast)


Lesenswert?

Hi

>nen quarz macht keinen "normalen" takt?? sondern eine schwingung??
>:)

Aber da muss der Controller auch mitspielen. Wenn der Oszillator des 
Controllers abgeschaltet ist schwingt nichts mehr.

MfG Spess

von Christian P. (peterfrosta)


Lesenswert?

ahhhh ich verstehe -fast ;)

also guck ich ob und was an xtal anliegt.
oszilloskop zwischen xtal 1 und xtal2 und jeweils gegenüber masse 
angelegt... keine takt!
also hab ich vermutlich nciht die SPIEN Fsue deaktiviert, sondern durch 
(mal kurz) nen falschen Oszilator die dinger (zunächst) nicht 
ansprechbar gemacht... hm...

also müsste ich jetzt den atmega48 auf welchen ich noch zugreifen kann, 
auf ext. crystal high programmieren, damit an xtal ein takt raus kommt. 
den leg ich bei dem atmega32 dann auf xtal1 (oder xtal2???).
dann sollte ich den atmega wieder mit isp zugreifen könnne? :-))
hab ich das richtig verstanden?
und bitte sagt mir noch an welchem xtal er den takt wünscht ;)

klasse klasse jungs (oder auch mädchen)

von Christian P. (peterfrosta)


Lesenswert?

tja ich wollte jetzt das mal testen, aber da steh ich schon wieder vor 
einer entscheidung, welche mir gleiches problem verursaachen könnt.

ich will jetzt den atmega48 auf den 16 MHz quartz programmieren.
jedoch hab ich die wal zwischen:
-ext. low freq. crystal
-ext. full-swing crystal
-ext. osc. crystal

woher weiß ich was mein quarz für eins ist? es war schon auf der 
platine. Frequezen stehen daauch nur bei letzterem hinter allerdingst 
ist das größte:
8MHz bis...

aber darüber werde ich auch im datenblattt schlauer. die frage was aus 
der obenren dreierliste muss ich wählen, damit ich auf den controller 
weiterhin zugreifen kann, er also mit dem 16 MHz quartz arbeitet und er 
mir nen takt auf nen xtal raushaut und ich diese n auf dem atmega32 
legen kann?

ich würds probieren aber ich mööchte nciht noch einen controller 
"unschädlich" machen ;)

danke euch!

von Martin e. C. (eduardo)


Lesenswert?

warum ist der "andere" Controller im Sockel??
es kann damit etwas kaput gehen! es soll bzw. DARF NUR ein Controller im 
Board gesteckt sein.

von Martin e. C. (eduardo)


Lesenswert?

Peter von Frosta schrieb:
> ich meine, der Fehler trat auf nachdem ich einmal unter "Fuses" -
> SUT_CKSEL nen anderen wert für die Ozsilation gewählt hatte.

UPS!! Naja ich hatte nicht alles gelesen Sorry!

von Christian P. (peterfrosta)


Lesenswert?

leider trau ich mich noch immer nicht takt für den atmega48 (um ja nen 
externen takt zubekommen für den atmega32) umzustellen....
kann mir keiner sagen, welcher der 3 optionen die richtig ist?

-ext. low freq. crystal
-ext. full-swing crystal
-ext. osc. crystal

16 Mhz Quartz on board...

von Laszlo H. (laszlo_h)


Lesenswert?

Christian Peskov schrieb:
> leider trau ich mich noch immer nicht takt für den atmega48 (um ja nen
> externen takt zubekommen für den atmega32) umzustellen....
> kann mir keiner sagen, welcher der 3 optionen die richtig ist?
>
> -ext. low freq. crystal
> -ext. full-swing crystal
> -ext. osc. crystal
>
> 16 Mhz Quartz on board...

Ich würde auf Nummer sicher gehen. Keines. Der Atmega48 hat einen 
internen Oszillator mit 1 MHz (eigentlich 8MHZ + 1:8 Prescaler ;) ). 
Verwende diesen, bringt weniger Probleme mit sich.

Im Grunde willst du den mega48 als Takt-Quelle haben. Schalte dafür 
clk-out ein (damit erscheint der System-Takt auf PB0 (Pin 14). Entferne 
den Quarz (wenn es möglich ist) und führe dann CLKO über einen 
Widerstand (sicher ist sicher) an den Xtal-1 des verfusten µCs. Danach 
sollte es wieder ansprechbar sein.

Oder aber, es gibt auch Quarz-Oszillatoren [1]. Wenn du so einen 
Vierbeiner daheim hast, kannst du den Mega48 durch einen solchen 
ersetzten (natürlich mit einer Frequenz <= 16MHz).
gruß
Laszlo

[1] http://de.wikipedia.org/wiki/Quarzoszillator#Integrierte_Schaltung

von Christian P. (peterfrosta)


Lesenswert?

so männers :-))

ich habs gescahft.. zumindest 50%ig!

Laszlo danke aber dein rat kam zu spät bzw ich hab mich doch getraut ;)

also... ich habe den atmega48 auf den quartz gestellt... das datenblatt 
+ des Threads- Beitrag ""Full Swing Crystal" und "Crystal Oscillator""
haben mir geholfen!

danach (wegens martins einspruch) einen der beiden atmega32 in eine 
kleine grundschaltung gesteckt und an xtal1 den takt vom atmega48 
gelegt.
zack konnte ich das device auslesen und die Fuse für den takt auf Quartz 
eingestellt!
voila :-))

bei dem anderen atmega32 ging das leider nicht!!
Ich glaube diesen hab ich irgendwie geschrottet gehabt.
Denn die Frequenz welche ich an xtal anlegte, messte ich (oszilloskop) 
an vielen atmega32 pins! bspw an GND und an VCC (in superposition mit 
der betriebspspannung) oder abgeschwächt an einigen portpins.

dieser ist also wohl fratze??

holger (gast), klang als wenn du genervt gewesen wärst aber...
gute info und selbsterklärend. danke!

Danke an alle anderen natürlich auch, cool wie das hier funktioniert!

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.