PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mega8 von ISP abgeschnitten. Hilft HighVoltageProgramming?



31415926
14.06.2006, 14:20
Vorgeschichte:
Meinen ersten ARV (ein Mega8) habe ich im STK500 erfolgreich programmiert (AVRStudio4). Es läuft der Code Demo1.c der bei winavr dabei war. Er läßt eine LED hell/dunkel werden. Da alle anderen LEDs irgendwas angezeigt haben, hab ich den Befehl für die PortB-Direction geändert und 0xff zugewiesen, compiliert und erfolgreich geflashed.

Problem:
Das STK500 wird nun nicht mehr erkannt, wenn der Mega8 drinsteckt.
Habe alle Kombinationen von ausschalten/Reset/Pc booten erfolglos probiert. STK500 ist OK, mein zweiter Mega8 läßt sich programmieren.
Ich vermute, mit der Programmierung von PortB hab ich die SPI-Schnittstelle abgeschnitten.
Bisher traue ich mich an HighVoltageProgramming noch nicht ran, da doch viele Leitungen und Jumper richtig gesetzt sein müssen...

Frage:
Kann man mit HighVoltageProgramming dem Chip wieder ein vernünftiges Programm aufspielen, obwohl PortB komplett auf Eingabe oder Ausgabe programmiert ist, da dabei andere Portpins benutzt werden? Oder könnte das Problem ganz woanders liegen?

ogni42
14.06.2006, 14:53
HV sollte helfen.

31415926
15.06.2006, 06:30
HV hat leider nix gebracht. :(
Also hab ich mich schlau gelesen, was ich da eigentlich verbrochen habe.
Mit DDRB=0xff habe ich mir neben der Kommunikation auch XTAL1 und XTAL2 abgeklemmt und da ich keine Fuse-Bits geändert habe, wird weiterhin der externe Oszillator verwendet. Wahrscheinlich geht deshalb nix mehr.

Sowie das Programm gestartet wird, bleibt also alles stehen.

Frage:
Gibt es eine Möglichkeit, den Programmspeicher zu löschen, ohne dass das geladene Programm gestartet wird?

SeaLion
15.06.2006, 07:13
Mit dem setzen des DDR kan man sich nicht aus dem programmiermodus aussperren.

Das liegt einfach daran, daß das Programmieren im Reset stattfindet und da sind die Register sowieso zurückgesetzt / egal.

Wenn du die Fuses nicht verändert hast, muß der Fehler noch wo anders liegen.

ogni42
15.06.2006, 10:45
HV Programmierung sind die Fusebits egal und der Port wird erst nach dem Reset umgeschaltet. Wie Sealion sagt: Der Fehler muss dann woanders liegen.

Brenn mal demo1.hex.

31415926
15.06.2006, 23:17
Habe von HV wieder auf SPI umverdrahtet und dabei den BSEL2 Jumper vergessen zu ziehen.
Jetzt erkennt der PC das STK500 wieder. Jumper wieder abgezogen. Geht immer noch.
Aber VTarget und AREF auf der Board-Seite sind auf Null. Hab die mal auf 5V gestellt und Write angeklickt.
Nun konnte ich den Chip löschen.

Nach dem Neuprogrammieren kommt aber die Fehlermeldung
WARNING: FLASH byte address 0x0015 is 12 (Should be 0xC0). FAILED!
Hab ein 3 Mal versucht zu programmieren. Immer der gleiche Fehler.

VTARGET auf 5.1V - Programmieren schlägt fehl.
VTARGET auf 4.8V - WRITE des VTarget geht schief.
Mehrfach Ein/Ausgeschaltet. STK500 nicht mehr erkannt.
Irgendwann ging's einfach wieder...
Inzwischen konnte ich auch den "defekten" Mega8 richtig flashen und er läuft wie die Demo das will :)

Gelegentlich bleibt der Fortschrittsbalken beim brennen jedoch hängen.


Letzendlich bleibt die Kommunikation gelegentlich auf der Strecke, wodurch das Programmieren echt hakelig wird. Gestern hab ich genau das Gleiche gemacht - und stundenlang keine Kommunikation hinbekommen.

Die ISP-Frequenz stand auf einem ungewöhnlichen Wert für eine RS232-Schnittstelle.
Ich hab sie einfach mal auf 38.4KHz gestellt. Vielleicht hilft's ja. Bis jetzt (ca. 5 mal Brennen) klappt alles wieder.

ogni42
16.06.2006, 16:44
Bedenke, dass die ISP Frequenz nur 1/4 des uC Taktes betragen darf. Im Auslieferungszustand läuft der Mega 8 mit 1MHz, die ISP Frequenz muss für sicheres Flashen also kleiner als 250kHz sein (besser 128kHz wählen).

31415926
22.08.2006, 23:05
Habe die Ursache gefunden: Lausige Stromversorgung! Zeitweise war ein Ripple von 1V auf der 5V Schiene - kein Wunder das das Teil sich nicht programmieren ließ.
Einen dicken Elko (3300uF) über den 100uF vor dem Spannungsregler haben das Problem endlich behoben.