Funktionstüchtiger AVR kann nur einmal geflasht werden

OP #1912922
Lesenswert?

Ich habe ein C-Programm: "ADC auslesen und auf LCD ausgeben" 
geschrieben. Es funktioniert prima in einer Testschaltung. Aber wenn ich 
den Controller wieder in den Programmer (stk500) einsetze komme ich 
nicht mehr rein. (AVR-Studio). Ich habe dann einen neuen Controller 
(ATMEGA8) in das stk500 eingesetzt und das Programm geflasht. Dann habe 
ich versucht, es ein zweitesmal zu flashen (ohne den Controller 
herauszunehmen oder etwas zu verändern) und kam wieder nicht in den 
MEGA8.


Woran könnte DAS liegen?
OP #1913274
Lesenswert?

spess53 schrieb:
> Vor dem Programmieren gelöscht? Fuse-Einstellungen?

Ja erst gelöscht dann geflasht. Fuses kann ich außschließen, die habe 
ich mir bei beiden Controllern vor dem flashen angeschaut. Und bei dem 
zweiten garnicht verändert. Weil der schon auf externen Quarz 
eingestellt war. Ich sitze schon eine Woche an dem Problem und hab schon 
viel probiert. High-Voltag-Programming, externen Takt anlegen etc. Ich 
fürchte so einfach ist es nicht.
OP #1913330
Lesenswert?

Sepp schrieb:
> Deine Schaltung im Zusammenhang mit dem Programm zerstört den Prozessor
> durch falsche Beschaltung.

Nein. Das ist nicht so. Ich habe auch schon einen AVR im Stk500 
geflasht. Die Connection im AVR-Studio zu gemacht und versucht nochmal 
zu verbinden. Hat aber nicht geklappt.
Ich habe im Anhang mal das Hex-file angehängt. Vielleicht möchte es ja 
jemand riskieren. Direkt kaputt ist der AVR dann nicht. Aber man bekommt 
kein neues Programm drauf. Das Programm misst eine Spannung an PC5 und 
PC4 und gibt die beiden Werte über PD4-PD7 (= DB4-DB7) ans LCD weiter. 
RS und EN sind PB1=RS und PB2=EN. RW muss auf masse gelegt werden. Es 
kann eine Spannung von 0-5V gemessen werden mit 3 Nachkommastellen. Bei 
dem einen ADC-WERT steht Ampere dahinter und beim anderen Volt.
z.B. .....3.569 Ampere
..........1.409 Volt
Persönliche Seite #1913352
Lesenswert?

Versuch mal auf einen neuen ATmega8 auf dem STK500 mit HV-Programming 
zuzugreifen. Wenn dieses Programmiersetup funktioniert, steckst du 
deinen verhunzten ATmega8 auf das STK500 und probierst das Selbe 
nochmal.

Wenn schon der Zugriff auf den neuen µC nicht funktioniert hast du ein 
Problem in deinem HV-Programming Setup.

Wenn allerdings nur das HV-Programming des verhunzten µCs nicht geht, 
hat sich der Controller vermutlich in deiner Schaltung eine tödliche 
Verletzung zugezogen.

Gruß,
Magnetus
OP #1913367
Lesenswert?

Danke. Das werde ich mal versuchen. Leider habe ich gerade keine 
Controller mehr. Ich hatte nur vier und mit allen vieren herumprobiert. 
Es sind aber schon neue bestellt. Sind vielleicht morgen da.

Magnus Müller schrieb:
> sich der Controller vermutlich in deiner Schaltung eine tödliche
> Verletzung zugezogen.

Das dachte ich auch am Anfang. "Bestimmt ist der Controller kaputt...". 
Und hab auch gleich den ersten weggeschmissen.

Ich habe aber ja auch schonmal probiert:

1) den Controller flashen.
2) Die Verbindung im AVR-Studio schließen.
3) Und ein zweitesmal zu verbinden.

Die 2. Verbindung ging schon nicht. Ich habe den Controller nicht in die 
Schaltung eingesetzt. Zudem ist sie sehr übersichtlich auf einem 
Bread-Board aufgebaut und ich habe schon sehr oft drübergeschaut.
Persönliche Seite #1913380
Lesenswert?

Tobias R... schrieb:
> Die 2. Verbindung ging schon nicht.

Was meinst du damit? Hat AVR Studio den PROGRAMMER oder den CONTROLLER 
nicht gefunden?

> Ich habe aber ja auch schonmal probiert:
>
> 1) den Controller flashen.
> 2) Die Verbindung im AVR-Studio schließen.
> 3) Und ein zweitesmal zu verbinden.

Wenn du beim Programmieren versehentlich die RSTDISBL-Fuse gesetzt oder 
die SPIEN-Fuse gelöscht hast, kannst du über SPI nicht mehr auf den 
Controller zugreifen. In diesem Fall könntest nur noch mit 
HV-Programming auf deinen Controller zugreifen (und diesen Fehler 
rückgängig machen).

Gruß,
Magnetus
Gast #1913394
Lesenswert?

Hi

>Wenn du beim Programmieren versehentlich die RSTDISBL-Fuse gesetzt oder
>die SPIEN-Fuse gelöscht hast, kannst du über SPI nicht mehr auf den
>Controller zugreifen.

SPIEN-Fuse lässt sich über ISP nicht löschen.

MfG Spess
OP #1913397
Lesenswert?

Magnus Müller schrieb:
> Was meinst du damit? Hat AVR Studio den PROGRAMMER oder den CONTROLLER
> nicht gefunden?

Er hat das ganze STK500 mit eingesetztem Controller nicht erkannt. Ohne 
Controller erkennt er es

Wenn du beim Programmieren versehentlich die RSTDISBL-Fuse gesetzt oder
die SPIEN-Fuse gelöscht hast, kannst du über SPI nicht mehr auf den
Controller zugreifen. In diesem Fall könntest nur noch mit
HV-Programming auf deinen Controller zugreifen (und diesen Fehler
rückgängig machen).

Ich kann mit 100% Sicherheit sagen, dass der Controller nicht verfused 
ist.
Weder mit SPIEN oder RSTDISBL oder Taktquelle.

Mit HV-Programming habe ich es schon versucht. Ich kann nur noch deinen 
ersten Vorschlag versuchen:

Magnus Müller schrieb:
> Versuch mal auf einen neuen ATmega8 auf dem STK500 mit HV-Programming
> zuzugreifen. Wenn dieses Programmiersetup funktioniert, steckst du
> deinen verhunzten ATmega8 auf das STK500 und probierst das Selbe
> nochmal.
Gast #1913441
Lesenswert?

Hi

>Ein 9V Steckernetzteil mit 560mA. Das Board wurde mit diesem Netzteil
>schon oft verwendet.

Na und. Es liegt trotzdem ausserhalb der Spezifikation:

The minimum hardware and software requirements are:
....
10-15V DC power supply, 500mA min

Das du mit dem Netzteil keine HV-Programmierung hinbekommst wundert mich 
nicht.

MfG Spess
OP #1913532
Lesenswert?

spess53 schrieb:
> Na und. Es liegt trotzdem ausserhalb der Spezifikation

yep. stimmt. Ich hab im stk500 user guide nochmal nachgeschaut.
Aber sollte ich HV-Programming überhaupt verwenden? Der Controller ist 
nicht verfused.

Magnus Müller schrieb:
> Mach doch mal bitte ein Foto von deinem STK500 mit gestecktem ATmega8 in
> dem Zustand wie du es zum Programmieren benutzt. Womöglich hast du noch
> irgendeine Verbindung gesetzt, die dir dann die Probleme bereitet.

Ich habe leider keine Kamera da.
Handy hat zu geringe auflösung.
Aber viel ist ja am stk500 nicht zu machen.

1) Es ist an der Spannungsversorgung angeschlossen
2) der ISP ist angeschlossen. (RS232 CTRL)
3) Das sechspolige Kabel ist vom ISP an den grünen 6poligen-Header 
geführt
4) Der ATMEGA8 ist in den grünen SCKT3200A2-Sockel richtig herum 
gesteck.
5) Gesetzte Jumper: VTARGET, AREF, RESET, XTAL1 und OSCSEL zwischen
den Pins 2 und 3. (Controller wurde sicher auf externes Crystal 
eingestellt)
6) 4MHz Quarz in den Sockel gesteckt
Persönliche Seite #1913769
Lesenswert?

Tobias R... schrieb:
> Magnus Müller schrieb:
>> Mach doch mal bitte ein Foto von deinem STK500 mit gestecktem ATmega8 in
>> dem Zustand wie du es zum Programmieren benutzt. Womöglich hast du noch
>> irgendeine Verbindung gesetzt, die dir dann die Probleme bereitet.
>
> Ich habe leider keine Kamera da.
> Handy hat zu geringe auflösung.

Definiere "zu geringe Auflösung".
Persönliche Seite #1913821
Lesenswert?

Tobias R... schrieb:
> Magnus Müller schrieb:
>> Definiere "zu geringe Auflösung".
>
> 2 MP.

Nachtrag:

Ich habe mal eben mit meinem Handy (Nokia 6300i) zwei Bilder von 
meinem STK500 gemacht. Das linke wurde mit 2MP (1600x1200) und das 
rechte mit 0,3MP (640x480) aufgenommen. Man beachte dass der 
Informationsgehalt des 0,3MP Fotos aufgrund der Unschärfe im Nahbereich 
derselbe wie beim 2MP Bild ist.

Gruß,
Magnetus
Angehängte Dateien:
OP #1914128
Lesenswert?

Mein Handy hat aber auch eine sehr kleine chip-Größe. Das ist wirklich 
keine gute Kamera. Ihr könnt ja die Bilder morgen anschauen. Aber ich 
denke du hast recht und man wird genug erkennen.

Michael H. schrieb:
> Und genau das ist falsch.
> Am STK ist ein Treiber zwischen Quarzsockel und Controllersockel.
> Du musst auf externen Clock stellen.

Stimmt. Auf dem Blockschaltbild des stk500 ist wirklich ein oszillator 
dem quarz nachgeschaltet.
Und der XTAL2-Pin unbeschaltet. Man müsste dann tatsächlich auf externe 
clock stellen.
Aber komischerweise war ein controller schon auf external crystal 
eingestellt und er hat ihn erkannt. Erst als ich das Programm flashte 
ging es nicht mehr. Ich habe im (C-)Programm eine printf-funktion. Die 
wird normalerweise nicht für mikrocontroller verwendet weil sie relativ 
viel rechenleistung benötigt. Dazu mache ich 100 Messungen am ADC und 
bilde daraus den Mittelwert. Den gebe ich mit printf als float aus. 
Deswegen benutze ich auch printf. Weil es nur für Integer die 
itoa-Funktion in der library gibt. (und ich keine eigene schreiben 
wollte). Kann es sein, dass deswegen ein time out beim Verbinden 
eintritt?
Gast #1914158
Lesenswert?

Hi

>Kann es sein, dass deswegen ein time out beim Verbinden eintritt?

Nein. Zum Programmieren wird der Controller in den RESET-Zustand 
versetzt. Da läuft kein Programm mehr.

> Du musst auf externen Clock stellen.

Das funktioniert auch, wenn auf Quarz gefust ist.

MfG Spess
OP #1914175
Lesenswert?

Hier noch das Bild

spess53 schrieb:
> Das funktioniert auch, wenn auf Quarz gefust ist.

Das ist auch meine Erfahrung.

spess53 schrieb:
> Nein. Zum Programmieren wird der Controller in den RESET-Zustand
> versetzt. Da läuft kein Programm mehr.

hmmn. Dann kommt er garnicht in die main-Funktion rein. Ich bin darauf 
gekommen weil ich in einem anderen Forum jemand gefunden habe, der das 
gleiche Problem hat. Und auch ein Programm zur ADC-Messung mit 
LCD-Ausgabe geschrieben hat. Praktisch das gleiche Programm.

Michael H. schrieb:
> Verlassen würde ich mich nicht drauf.
> Hab außerdem gelesen, dass der Takt in diesem Fall auf XTAL2 müsste.
>
> Das Mittel der Wahl ist trotzdem HV-Prog.

Aha. Das Board wird aber mit eingestecktem, geflashten controller nicht 
erkannt. Ich kann also die Fuses nicht mehr ändern und eigentlich auch 
nicht auf HV-Programming umstellen. Oder kann ich HV-Programming im 
Disconnect-Modus einstellen?
OP #1914199
Lesenswert?

spess53 schrieb:
> Hi
>
> Nur mal so: Du hast auch den richtigen RS232 Stecker (RS232 CTRL)
> benutzt?
>
JA!!!

> Außerdem würde ich mal die Versorgungsspannung (VCC) auf dem Board
> messen, wenn es nicht ansprechbar ist.
>
Das board ist ansprechbar. Aber mit eingestecktem Controller, der mit 
dem Programm geflasht wurde ist es nicht mehr ansprechbar. Nehme ich ihn 
heraus, ist es wieder ansprechbar.

> MfG Spess
OP #1914205
Lesenswert?

spess53 schrieb:
> Hi
>
>>Kann es sein, dass deswegen ein time out beim Verbinden eintritt?
>
> Nein. Zum Programmieren wird der Controller in den RESET-Zustand
> versetzt. Da läuft kein Programm mehr.
>
>> Du musst auf externen Clock stellen.
>
> Das funktioniert auch, wenn auf Quarz gefust ist.
>
> MfG Spess

Achso mir ist gerade eingefallen, dass ich ja garnicht zum Programmieren 
komme. Wenn ich den Controller einstecke und das board einschalte wird 
er resetet und arbeitet das Programm ab.
Er ist jetzt also in der wuchtigen Endlosschleife bei der 2 Spannungen 
jeweils 100mal gemessen werden, der Mittelwert gebildet und dann noch 
mit printf ausgegeben werden. Dann müsste es aber doch klappen wenn ich 
beim Verbinden den RESET-TASTER gedrückt halte.... Ich glaube das habe 
ich noch nicht probiert.
Gast #1914275
Lesenswert?

Hi,

ich habe dein Prog auf einen Atmega8 geflasht und habe das gleiche 
verhalten wie du, wirklich fastsinierend, da kann ich ja auch mal 
experimentieren.
Nach dem Proggen wird das STK500 nicht mehr gefunden wenn der Mega 
steckt.
Persönliche Seite #1914281
Lesenswert?

Dass das HV-Programming nicht klappt könnte an dem Steckernetzteil 
liegen:
Die AVRs brauchen ziemlich genau 12 Volt an RESET, damit sie in den 
HV-Programmiermodus gehen; zulässig sind lt- Datenblatt 11,5...12,5V.

Zumindest "nach oben hin" sind die recht empfindlich: "Absolute Maximum 
Rating" sind 13V. Und ich habe schon mal als Versehen (als ich mal einen 
HV-Programmer gebaut habe) ca. 13,8V angelegt - das hat gleich den 
RESET-Pin zerschossen, der Controller funktioniert aber ansonsten noch.

Da kann ich mir sehr gut vorstellen, dass 9V nicht reichen. Selbst mit 
einem unstabilisierten 9V-Netzteil (ca. 12V Leerlaufspannung) wird es 
kaum reichen.

Am besten, du nimmst dir irgendein unstabilisiertes 12V-Steckernetzteil, 
das mindestens so 300mA liefern kann, und betreibst das STK500 damit. 
Natürlich darauf achten, dass es die richtige Polarität hat und 
Gleichspannung liefert!

So ein Netzteil liefert im Leerlauf nämlich ca. 16...18 Volt. Damit hat 
der Regler auf dem STK500 genug Spannungsreserve, um zuverlässig die 12V 
für RESET liefern zu können.

Natürlich kann man auch ein stabilisiertes Netzteil mit so einer 
Ausgangsspannung nehmen. Oder ganz einfach 2 9V-Batterien in Reihe 
schalten ;)

Ich kann mir irgendwie nicht vorstellen, dass die AVRs dabei 
kaputtgegangen sind. Bisher habe ich erst einen wirklich kaputtgekriegt, 
und das unter ganz anderen Umständen (einen Step-Up-Wandler gebaut; 
irgendwie hat die Regelung versagt und die Ausgangsspannung ist so lange 
angestiegen bis es die 500V-Diode zerhauen hat und sich damit der 
Ausgangs-Kondensator (8µF) in die Betriebsspannnug entladen hat...).
Gast #1914290
Lesenswert?

nein Kaputt ist er nicht, ich habe einen Workaround ;)
Das STK wird auch nicht mehr gefunden wenn nicht mal die ISP brücke 
steckt, weiß aber noch nicht warum.

Workaround:
entferne den Mega8, gehe in das Programmierfenster "HW-Settings" stelle 
die ARef Spannung auf 5V setze den Mega ein und lösche ihn.

viel Erfolg
Gast #1914302
Lesenswert?

die LEds verhalten sich normal, Target Power und Main Power leuchten 
normal, Status ist grün, und ist beim Programmieren orange.

Das Board ist nicht mehr ansprechbar wenn ARef ein bischen unter VTarget 
programmiert ist. Wenn das vor dem fashen unter VTarget steht ist das 
Board nach dem Flashen und Verify nicht mehr ansprechbar
OP #1914322
Lesenswert?

leuchtet           leuchtet nicht

Target Power LED    (grün)         [ ᜱ ]                  [  ]
Main Power LED      (rot)          [ ᜱ ]                  [  ]

Status LED          rot [  ]      gelb [  ]     grün [ ᜱ ]     aus [  ]

Faszinierend schrieb:
> nein Kaputt ist er nicht, ich habe einen Workaround ;)
> Das STK wird auch nicht mehr gefunden wenn nicht mal die ISP brücke
> steckt, weiß aber noch nicht warum.
>
> Workaround:
> entferne den Mega8, gehe in das Programmierfenster "HW-Settings" stelle
> die ARef Spannung auf 5V setze den Mega ein und lösche ihn.

Erstmal danke für deine engangierte Hilfe.
Also wenn ich 5V als AREF einstelle wird der Controller erkannt und ich 
kann ihn löschen? Workaround... sagt mir nix
#1914339
Lesenswert?

Tobias R... schrieb:
> Entschuldige. Ich hab ihn eigentlich angehängt. Wahrscheinlich weil ich
> auf Vorschau geklickt habe.

Also ich hab das Hex aus diesem Beitrag geflasht per ISP-Mode.
Testen kann ich es nicht, ich kann nur sagen, daß an PortD die LEDs 
4,5,6,7 leuchten.

Wie sind denn Deine Fuses?
Ich hab mal 0xC5, 0xBF eingestellt.

Nach STK500 ausschalten muß man manchmal neu connecten, aber das ist 
normal.

Also mit dem Programm drauf gibt es bei mir keine Effekte.
Ich kann alles machen: Signatur lesen, Fuses setzen, Erase, Program usw.

Du kannst auch Reset gedrückt halten, das STK einschalten, Connecten und 
Erase. Dann wird Deine Applikation nie gestartet.


Peter
#1914369
Lesenswert?

Faszinierend schrieb:
> @ Peter,
>
> setzte mal im Board die ARef Spannung runter 3V oder 0V und teste
> nochmal

Hab ich grad auf 2,5V gesetzt und nun connectet er nicht.
Ab UREF <=4,4V gehts nicht mehr.

Ziehe ich den Jumper AREF ab oder setze wieder auf 5V oder halte Reset 
gedrückt, gehts.

Ich hab mal gemessen, da fließen aber nur 10mA, warscheinlich in R614 
hinein.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren