mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Entering programming mode FAILED!


Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich versuch mich gerade zum ersten Mal einen µC zu programmieren. Dabei 
habe ich jetzt ein Problem: Ich erhalte ständig die Meldung "Entering 
programming mode.. FAILED!". Das Einstellen der "ISP-Freuqency" geht 
noch.

Meine "Ausstattung":
AVR Studio Ver. 4.18.692 (incl. SP1)
WinAVR 20100110
AVR ISP MKII
ATtiny 25
Ich habe den Baustein bereits programmieren können, also Hardware, 
Treiber und Co. sollten OK sein.

Ich geh davon aus, dass das letzte Programm welches ich auf dem µC 
gespeichert habe den Fehler verursacht. Allerdings kann ICH das nicht 
anhand des Code erkennen.
Hier der Code den ich gespeichert hab:

#include <avr/io.h>
#include <stdint.h>
int main(void)
{
  uint8_t pins;
  pins = 0;

  DDRB = 0x02;
  pins = PINB;
  PORTB = 0x04;

  while (1)
  {
      if( PINB & 0x04 )
        PORTB = 0x02;
      else
        PORTB =0x00;
  }
  return 0;
}

Könnte mir jemand sagen ob es am Code liegen kann, und wenn ja wie ich 
dies beheben kann. An den "Fuses" hab ich nichts geändert.

MfG
Tobias

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mit einem Programm kann man einen Atmel nicht killen, weil im 
Programmiermodus der Resetpin auf Low ist und so das Programm nicht 
ausgeführt wird. Wenn du an den Fuses wirklich nichts verstellt hast, 
dann überprüfe nocheinmal die Hardware. Die ISP Frequenz kleiner 1/4 der 
Taktrate stellen (also kleiner 250k). Was hängt sonst noch an den Pins 
des Controllers außer dem ISP Interface? Irgendwo hohe Lasten, 
Kapazitäten?

Autor: Gastofatz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich geh davon aus, dass das letzte Programm welches ich auf dem µC
>gespeichert habe den Fehler verursacht.

Nein. Es kann an den Fuses liegen, an der externen Beschaltung des 
Controllers, an der Verbindung, an der Programmer-Hardware, der 
PC-Hardware oder an der Software. Aber niemals am Code.

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wow das geht ja schnell. Vielen Dank für die Antowrten. Ich bin zwar 
froh, dass der Code nicht schuld ist allerdings hab ich an der Hardware 
bewusst nichts verändert.

Die Fuses kann ich nur im Tab "Fuses" ändern,oder? da war ich nicht 
drin. Deshalb sollte sich da nichts geänder haben. Allerdings kann ich 
die nicht auslesen.

Ich werd mal die Hardware genau unter die Lupe nehemn. Und dann nochmal 
schreiben.

MfG
Tobias

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie hoch ist die SPI Frequenz?
Hast du 100nF zwischen VCC und GND?

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wie gesagt, dass Hauptproblem ist, dass alles so wie es ist schonmal 
funktioniert hat! Ich habe das Programm gespeichert, wollte ei neues 
drauf machen, da es nicht funktioniert hat und seit dem geht es nicht 
mehr.

Deshalb meine Annahme das es nicht an der Hardware lag, die ich gerade 
auch nochmal überprüft habe.

100nF ist drin
kein große Kapazität o.Ä. an den Pins für die Programmierung
Taktrate ist 6,478k

Ich such weiter...

MfG
Tobias

Autor: Dschadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Farbe haben die LED's am MKII? Beide GRÜN? Oder leuchtet/Blinkt 
die LED am ISP Anschluss Orange?
Geht das Auslesen der Signatur des Chips noch? Vllt hast du einen 
falschen µC eingestellt.

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

beide sind Grün. Wenn ich versuch den µC auszulesen / programieren wird 
die eine orange ( alles wie es sein soll ).
Nein Signatur kann ich nicht (mehr) auslesen. Der richtige Chip ist aber 
eingestellt!

MfG
Tobias

Autor: Gastofatz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du irgendwelche witzigen Sachen angestellt, wie LEDs ohne 
Vorwiderstand anschließen oder dergleichen? (Vielleicht hats den 
MOSI-Pin beschädigt?)

Ansonsten ALLES weg an Peripherie vom Controller, was noch dran ist. 
Dann muss es funktionieren, oder es ist ernsthaft was faul.

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorerst Danke für die ganzen Antworten, allerdings nervt mich das Teil 
jetzt und ich leg es weg bis morgen, ansonsten macht es noch Begegnung 
mit nem Hammer.
Nochmal, die Hardware hab ich jetzt 3 mal geprüft. Und mit der hat es 
die letzten ca. 10 mal auch funktioniert.

Sollte ich die "Fuses" doch unbeabsichtigt verändert haben, können 
dadurch noch andere Probleme entstehen als das, dass der Takt von extern 
zugeführt werden muss?

MfG
Tobias

Autor: Gastofatz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach das Zeug beiseite tun und ne Nacht drüber zu schlafen ist 
manchmal wirklich die beste Entscheidung.

>Nochmal, die Hardware...

OK :-)

>Sollte ich die "Fuses" doch unbeabsichtigt verändert haben, können
>dadurch noch andere Probleme entstehen als das, dass der Takt von extern
>zugeführt werden muss?

Der Fuse-Verstell-GAU ist, den Reset-Pin zum I/O-Pin umzufunktionieren. 
Das ist im normalen ISP-Programmiermodus möglich, aber sobald es 
geschehen ist, ist der µC nicht mehr ISP-programmierbar und somit die 
Aktion nicht wieder rückgängig zu machen. Das geht nur noch im 
High-Voltage-Programmiermodus, der nicht von allen Programmern 
unterstützt wird.

Autor: Dschadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Programmer würde dann aber meckern und die Orange LED würde blinken, 
was so viel heißt wie das er den Controller nicht resetten konnte.
Es gibt jetzt noch zwei Fehlerquellen: Du hast andere Hardware an den 
ISP Leitungen dran (LED's, widerstände...) oder der Controller hats 
zeitliche gesegnet.
Ich hatte das Problem auch schonmal, das es mal ging, mal gings nicht. 
Woran es lag, weiß ich bis heute nicht! Setz einfach mal nen anderen 
Controller ein zum testen.

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich werd mich heut mal dran machen den µC auf ner anderen Platine 
ohne alles aufzubauen, nur mit dem Anschluß zum ISP.

Also die orange LED leuchtet nur beim Versuch zu Lesen / Programmieren, 
somit ist der GAU auszuschließen.

Ich bin Anfänger und hab die gesamte Hardware geliehen. Den Chip 
austauschen geht vorerst nicht, da ich keinen weiteren hab.

Also die Schaltung hat an MISO und MOSI noch weitere Komponenten dran. 
Werd mich mal versuchen die SMD Bausteine auszulöten um den Chip 
"freizulegen".

MfG
Tobias

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du den Strom des AVRs messen? Durch den Stromverbrauch des AVRs 
im normalen Betrieb kann man eine Aussage machen ob der Takt noch 
vorhanden ist oder er irgendwie verfused ist.

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

messen können ja, allerdings wie genau muss das sein? Ich selber hab nur 
ein 15€ Handmultimeter.

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So jegliche "unnötige" externe Beschaltung ist weg.
Die Leds des Programmiergerätes sind immernoch beide grün. Der Fehler 
ist immernoch vorhanden.

Ich befürchte langsam das der Chip kaputt ist.

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach den Strom zwischen 5V und VCC messen. Da reicht auch ein 
einfaches Multimeter. Benutze den 20mA bereich.

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab den Strom gemessen, zuerst 350µA (ja µ!) und nach 10 oder 20 
sekunden hab ich dann 250µA. Allerdings hab ich ne Vcc von 4,1V.
Da du den 20mA bereich vorgeschlagen hast würde ich behaupten, dass die 
Werte nicht gut sind....

Autor: Sascha Weber (sascha-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also wenn er mit deinen 6,.. MHz laufen würde, sollte er schon 3mA - 5mA 
brauchen, also liegt es nahe das er tatsächlich keinen Takt hat.

Sascha

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke die 6,** von denen er geredet hat, das ist die ISP Frequenz 
und nicht der Takt des AVRs. Aber trotzdem sind 350µA zu wenig. Bei 
internen 1MHz benötigt er (@4,1V) 900µA. Und bei 128KHz Taktfrequenz 
dürfte er nur 120µA ziehen. Also dürfte etwas mit dem Takt nicht 
stimmen.

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Frequenz muss ich mindestens an den Chip anlegen, damit ich ihn 
wieder programmieren kann?

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, 6kHz waren die ISP Frequenz.
Den Takt hab ich selber nicht eingestellt. Wenn ich es richtig weiß war 
er von Anfang an auf 128kHz eingestellt.
Das "Erasen" des Bausteins löscht nicht die "Fuses" oder?

Autor: Gastofatz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denk, es wär nen Versuch wert, irgendwie einen Takt von ~100 kHz 
herzustellen und den mal auf Pin CLKI zu geben. Dann (bei angelegtem 
externem Takt) das Programmieren mit ~10 kHz ISP-Frequenz nochmal 
versuchen.

Autor: Gastofatz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das "Erasen" des Bausteins löscht nicht die "Fuses" oder?

Datenblatt: "The status of fuse bits is not affected by chip erase."

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, vielen Dank für eure Hilfe, allerdings hab ich keine Möglichkeit 
einen 100kHz Takt zu erzeugen. Somit muss ich wohl bis Montag warten...
Sobald ich dann weiß woran es lag geb ich bescheid

MfG
Tobias

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, des Rätsels Lösung: Chip liegt im Müll :)

Mein Dozent von dem ich den Chip hab hat bereits bei einigen ATtiny 
festgestellt, dass die beim Verbinden mit dem Programmierkabel einen ESD 
Schaden bekommen können.

Er hat das Problem dadurch behoben, dass er eine dauerhafte elektrische 
Verbindung zwischen der Versorgungsspannung des Chip und der Masse der 
Programmierleitung hergestellt hat. Seither hat er keine Probleme mehr.

MfG
Tobias

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Anfänger_Tobias schrieb:
> So, des Rätsels Lösung: Chip liegt im Müll :)
>
> Mein Dozent von dem ich den Chip hab hat bereits bei einigen ATtiny
> festgestellt, dass die beim Verbinden mit dem Programmierkabel einen ESD
> Schaden bekommen können.
Es ist oft weniger ein ESD Problem als eine erhebliche 
Potenzialdifferenz zwischen Programmer-GND, also meist Schutzleiter über 
PC-GND->PE.
Netzteile, die keine Verbindung zwischen AVR-GND und PE haben aber z.B. 
Entsörkondensatoren auf der Primärseite, die mit GND der Ausgangsseite 
verbunden sind.
Da entlädt sich dann der auf rund 120V aufgeladene Kondensator über 
einen Eingangspin von AVR oder Programmer, wenn nicht GND zuerst Kontakt 
bekommt.

Anwärter simd z.B. kleine Schaltnetzteile (Handynetzteile usw.), die 
sich dank 5V eigentlich gut für AVR-Experimente sind.

> Er hat das Problem dadurch behoben, dass er eine dauerhafte elektrische
> Verbindung zwischen der Versorgungsspannung des Chip und der Masse der
> Programmierleitung hergestellt hat. Seither hat er keine Probleme mehr.

Der einfache und sichere Weg, wenn es weiter keine zuverlässige 
GND-Verbindung gibt.

Gruß aus Berlin
Michael

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfänger_Tobias schrieb:

> Er hat das Problem dadurch behoben, dass er eine dauerhafte elektrische
> Verbindung zwischen der Versorgungsspannung des Chip und der Masse der
> Programmierleitung hergestellt hat. Seither hat er keine Probleme mehr.

Danke fürs Feedback. Kannst du der Sache noch etwas weiter nachgehen: 
Wie genau hat er diese Vebindung gemacht? Man kann ja nicht einfach 
einen Draht einlöten, denn das gäbe einen Kurzschluß. Einen paar zig 
KOhm Widerstand könnte ich mir an der Stelle vorstellen, ist ein solcher 
dort verbaut?

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke mal er meint GND-GND dauerhaft verbunden

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI,

Ihr habt beide Recht :)
GND Pin des ISP dauerhaft mit GND PIN des Chip verbunden. Um 
Ausgleichsströme zu begrenzen ist n Widerstand in der Verbindung. Der 
genaue Wert ist nicht so wichtig, er soll nur dauerhafte 
Ausgleichsströme begrenzen aber trotzdem Überspannung vermeiden als 
irgendwo zwischen 500 und 5000 Ohm.

MfG
Tobias

Autor: Anfänger_Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab gerade erst gesehen, dass ich Vcc und GND geschrieben hatte, das ist 
natürlich FALSCH!
GND(Programmer) GND(Chip) Verbinden!

Alles weitere hat Michael bereits richtig geschrieben, ich habs als ESD 
kurz gefasst, auch wenn es nicht ganz richtig ist.
Meinem Dozent ist es besonders bei Verwendung des Laptop aufgefallen.

Eine weitere einfache Lösung wäre auch alle Pins des ISP Connector bis 
auf den GND etwas zu kürzen. Dadurch sollte stets zuerst GND kontaktiert 
werden.

MfG
Tobias

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.