mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Komme nicht in Programming-Mode


Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits!

Erstmal kurz ein Wort zum Forum hier: Ich finds toll, wie viele sich 
hier beteiligen, dieses Forum hat mir schon das ein oder andere Mal 
weitergeholfen! So, jetz aber genug geschleime ;)

So alltäglich das Thema auch klingen mag, ich hab bisher keine Lösung 
dazu gefunden, deshalb muss ich zum ersten Mal eure Hilfe beanspruchen.

Das ganze sieht so aus: Ich hab einem ATmega16 auf nem Steckbrett (im 
Mom einziger IC) per AVR Studio und USB AVR Lab, das ein STK500 
emuliert, ein Test-Programm zum Ansteuern und umschalten eines 
7-Segment-Treibers (per BCD) draufgespielt. Dabei hab ich auch Fuses 
umprogrammiert (verdächtig!), weil der uC ein 4MHz-Quarz verwenden soll. 
Die Fuse-Bytes wurden beide auf 0xFF geschrieben, was eigentlich die 
richtige Einstellung sein sollte. Außerdem hat meine 7-Seg-Anzeige auch 
ein bisschen Stuss angezeigt, am uC müsste also ein Takt anliegen...

Na ja, jedenfalls hab ich aufgrund der verwirrenden Anzeige einen 
Programmfehler ausgebessert, und BÄM!  -  ich kann meinen uC nicht mehr 
erreichen! (Entering Program Mode... FAILED!)

Hab schon mal ein bisschen rumprobiert, z.B. die ISP-Frequenz variiert 
(immerhin funktioniert das noch), oder erfolglos versucht, die 
Signature-Bytes auszulesen. ISP-Freq kann ich ja verwirrenderweise 
auslesen...
Wie siehts mit HW Settings aus? Muss ich da iwas bestimmtes einstellen 
(hier hab ich bisher auch nur erfolglos rumgeschraubt)?

Noch kurz zur Schaltung: Ein Abblockkondensator ist vorhanden, auch der 
Quarz ist mit 2x 22pF gegen Masse abgeblockt.

Also, danke ersmal fürs durchlesen dieser Wall of Text! Mein Problem 
ist, dass ich keinen Schimmer hab, woran das liegen könnte... anfangs 
dachte ich, es wären die Fuses, aber des wär ja auch iwie unlogisch...

LG Hannes

Autor: Frühschichtler (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du das rot markierte Bit auf '1' gesetzt hast, hast du dich 
ausgesperrt.
Da hilft dann nur noch HV-Programming - z.B. mit dem STK500.

Autor: ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn du das rot markierte Bit auf '1' gesetzt hast, hast du dich
> ausgesperrt.

Meines Wissens nach, kann man dieses Bit im SPI-Modus garnicht 
verändern.
mfG ingo

Autor: Hans Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man, und wie Frühschichtler schrieb ist man dann draußen.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans Schmitt schrieb:
> Kann man, und wie Frühschichtler schrieb ist man dann draußen.

Mag sein, aber dann ist das Datenblatt falsch.
Da steht bei mir unter "26.2 Fuse Bits" (S. 265):
SPIEN(1) | 5 |  Enable SPI Serial Program and | 0 (programmed, SPI prog. enabled)
         |   |  Data Downloading              |
...
Notes: 1. The SPIEN Fuse is not accessible in SPI Serial Programming mode.

Irgendwie möchte ich es jetzt aber nicht ausprobieren :-)

Autor: Benjamin Utz (utzus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes schrieb:
> Außerdem hat meine 7-Seg-Anzeige auch
> ein bisschen Stuss angezeigt, am uC müsste also ein Takt anliegen...

Kannst du das noch anders Überprüfen? Oder mal ein Bild von der 
Beschaltung geben.

> ISP-Freq kann ich ja verwirrenderweise
> auslesen...

Ist diese Frequenz nicht nur im Programmiergerät verhanden und nicht im 
µC selber?

Grüße,
Benni

Autor: AVR-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ISP-Freq kann ich ja verwirrenderweise
> auslesen...
Die steht nur im Programmiergerät.

Wenn wirklich die Fuses auf 0xFF sthen ist SPIEN definitiv abgeschaltet.
Ob sich die SPIEN-Fuse im Serial-Mode tatsächlich umprogrammieren läßt
oder nicht möchte ich momentan nicht ausprobieren.

Ist womöglich die Reset-Leitung disabled worden? Auch per Fuse im
seriellen Modus möglich, dann hast du dich ebenfalls ausgesperrt.

Ich vermute etwas in diser Richtung, weil die Signatur-Bits nicht
ausgelesen werden können.

Wenn das Teil, das den STK500 "emuliert", auch dessen HW-Fähigkeit der
HV-Programmierung kann, läßt sich der ATMEGA16 wiederbeleben.

Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die üblichen STK500-clones, so auch das USB-lab mit STK500-Firmware, 
verzichten auf das HV-Programmieren, die 12V Spannungsversorgung dazu 
ist zu viel Aufwand.

Allerdings braucht das Lesen von FF aus den fuse-bits nicht unbedingt zu 
heißen, dass die tatsächlich so gesetzt sind. Das kann auch die Folge 
irgendeines hardware-Fehlers sein.

Ich würde auf jeden Fall mit externem Takt versuchen, die Signatur zu 
lesen.

Die ISP-Frequenz ist Sache des "STK500". Es betrifft den zu 
programmierenden Kontroller nur insoweit, dass der Takt des Kontrollers 
4mal so schnell sein muss wie der des ISP.

Autor: Frühschichtler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiß, wovon ich weiter oben schrieb, habe mir deshalb den Fusebit 
Doctor nachgebaut (und auch schon benutzen müssen :-):
http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp/

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Whoa, das ging ja mal flott :) Danke soweit!

Hmmm, dass mit den Fuses für SPI, RESET, usw. hab ich mir auch schon 
gedacht. Komisch ist nur, dass SPIEN im AVR Studio gar nicht verändert 
werden kann, um das verfusen durch Tollpatsche wie mich nicht ganz so 
leicht zu machen (das Häkchen ist übrigens nie gesetzt?!) ;) Trotzdem 
steht dann unten bei den Werten der Fuse-Bytes 2 mal 0xFF... Im übrigen 
bin ich mir SICHER, dass ich die Finger von Bits, die das 
Programmierverhalten oder die Funktionsweise von wichtigen Pins 
verändern, gelassen habe, weil ich schon wusste, was man damit anrichten 
kann...

Peter R. schrieb:
> Ich würde auf jeden Fall mit externem Takt versuchen, die Signatur zu
> lesen.

Wie genau muss ich mir das vorstellen? Wenn die Fuses wirklich so 
gesetzt sein sollten, wie es angezeigt wird, müsste der AVR ja auf den 
4MHz Quarz ansprechen.
Was die Fuses angeht, denke ich, dass es an der Software (AVR Studio) 
liegt, denn ich kann sie ja gar nicht auslesen. Wahrscheinlich zeigt der 
nur irgendwas an und nicht das, was ich letztes Mal reingebrannt hab.


Zum Schaltplan:
Da ich gerade kein gscheites Programm hab (nur FreePCB, nicht mal ein 
ATmega verfügbar, werd mir mal EAGLE besorgen), beschreib ichs mal kurz:

Programmier-Pins alle am Prog angeschlossen (ohne Pull-ups oder -downs), 
zum Betrieb verbinde ich Reset mit +5V.
Vcc & AVcc an +5V, alle GND-Pins an Masse, 100nF von Vcc nach Masse.
Vier Ausgangs-Pins zur Ausgabe des BCD Codes und ein Ausgang zum Latchen 
des 7-Segment-Treibers (der ist vorübergehend von der Stromversorgung 
getrennt).
Und ein Taster, der einen Eingangs-Pin auf Masse ziehen kann (pull-up im 
AVR).

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du ein Eval-Board? Dann setz ihn doch mal da rein.
Sonst kann ja auch der AVR über die Wupper/Jordan/Mississippi
sein.

Autor: Frühschichtler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> zum Betrieb verbinde ich Reset mit +5V  ???
Beim Programmieren wird dieser Pin aber vom Programmiergerät 
beeinflusst. Er muss über einen Pullup-Widerstand (10k) an 5V, sonst 
funzt das Auslesen/Proggen nicht.

Autor: Its me (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem hatte ich auch mal, bei mir wars die Reset Leitung, nicht 
richtung angeschlossen, da zeigte mir die AVR Software auch nur 0xFF bei 
den fuses an.

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, ich dachte den Pullup braucht man nur wenn man den AVR in der 
Betriebsschaltung proggen will. Jedenfalls hab ich den Resetpin über 10k 
/ 4k7 an +3,3V (das Programmiergerät verwendet nur 3,3, im Betrieb sinds 
dann 5V) angeschlossen. Hat leider in keinem der beiden Fälle 
funktioniert...

Klaus Wachtler schrieb:
> Sonst kann ja auch der AVR über die Wupper/Jordan/Mississippi
> sein.

Ähm, ich checks net ganz... meinst du, er is im Eimer? ^^

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entweder der AVR, oder deine restliche Schaltung.
Deshalb probiere ihn doch mal in einem Eval-Board.
Wenn er da auch nicht geht, gibt es für wenige EUR einen neuen
notfalls (bis du jemanden findest, der HV-Programmierung kann).

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, vielleicht kann ich mir mit nem anderen AVR nen "resetter" bauen, 
der per HV die Fuses auf Werkseinstellungen zurücksetzt und einen Memory 
Reset durchführt. Die HV muss doch nur an den Reset-Pin oder?
Ich bräuchte also nur nen passenden Transistor (oder?), aber mit denen 
kenne ich mich überhaupt nicht aus... was wär denn da denkbar?

Autor: Frühschichtler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hm, vielleicht kann ich mir mit nem anderen AVR nen "resetter" bauen

Liest du auch die Antworten, die man dir hier gibt?

> Ich weiß, wovon ich weiter oben schrieb, habe mir deshalb den Fusebit
> Doctor nachgebaut (und auch schon benutzen müssen :-):
> http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp/

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke nochmal für die ganzen Tips! ;)

Hab mir den Doktor vorhin schon mal kurz angesehen, aber für zu 
kompliziert erachtet. Jetz hab ich kapiert, dass man nur den einen 
Controller braucht und der Rest nur verschiedene Sockel sind (umpf^^)
Genauer hinschauen lohnt sich halt doch meistens ;)

Deaktiviert ein nicht gesetztes SPIEN auch den HVSP Mode oder nur ISP? 
Sonst könnte ich das Teil auch auf HVSP beschränken und vlt mit nem 
8-beinigen µC betreiben. Oder gibt es abgesehen von den paar gesparten 
Sekundenbruchteilen noch irgendwelche Vorteile des HVPP?

LG

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich könnte das Prog auch probeweise mal auf nen Mega8 laden, nur hab ich 
Angst, diesen zu verfusen (wie evtl. den 16er).

Die Einstellungen
CKSEL 3..0 auf 1111 (also unprogrammiert)
CKOPT      auf 1
SUT 1..0   auf 11
sollten doch eigentlich für nen 4MHz-Quarz stimmen, oder? Oder hab ich 
da irgendwas falsch verstanden?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.