Forum: Mikrocontroller und Digitale Elektronik Großes Problem mit uC -> Entering programming mode failed


von al3ko (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
ich versuche mich mit uC vertraut zu machen. Dazu habe ich mir vor knapp 
nem halben Jahr das Starterkit gekauft.
http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=108

Das habe ich nach Anleitung zusammengelötet, die Software aufm PC 
installiert und ein Beispielprogramm (blinkende LED) laufen lassen. Es 
hat alles wunderbar geklappt. Da mir die Teile für das AVR Tutorial 
fehlten und ich mir anderen Sachen beschäftigt war, habe ich den uC in 
die Ecke gepackt und nicht weiter beachtet. Nun habe ich Zeit gefunden 
und will mich wieder damit beschäftigen, gehe wieder nach Anleitung und 
versuche die LED zum blinken zu bringen. Jetzt bekomme ich allerdings 
eine Fehlermeldung von AVR Studio. Entering programming mode... Failed!

Siehe dazu den Screenshot.

Schlau wie ich bin, habe ich Google benutzt und nach einer Lösung 
gesucht. So wie ich es verstehe, ich bin aber ein absoluter Anfänger, 
hat das irgendwas mit Fuse Bits zu tun (was bitte soll das heißen?)?

Um ganz ehrlich zu sein:
Ich habe keinerlei Ahnung, warum es jetzt nicht mehr geht oder was ich 
tun kann, damit es wieder geht.

Alles, was ich über google finden konnte (z.B. hier:
http://www.roboternetz.de/community/showthread.php?22372-quot-Entering-programming-mode..-FAILED-quot-AVRISP-MKII)

bringt mich nicht weiter. So wie ich das verstehe, erzähle ich dem uC, 
dass ein externer Oszillator verwendet werden soll ohne einen externen 
Oszillator angesteckt zu haben. Wenn das der Fehler ist, wo kann ich das 
denn rückgängig machen? Ich benutze AVR Studio so gut wie zum ersten Mal 
und bin ein wenig ratlos, was ich machen kann.

Ich bitte wirklich um Hilfe, weil ich frustriert und ratlos bin. Falls 
ihr weitere Informationen benötigt, lasst es mich bitte wissen.

Ich danke euch sehr!

von al3ko (Gast)


Lesenswert?

Ach ja, ich habe auch schon die ISP programming frecuency auf die 
kleinstmögliche Stufe gesetzt - erfolglos.

von Sebastian (Gast)


Lesenswert?

Wenn das einmal falsch eingestellt ist, muß ein Oszillator dran, um die 
ganze Sache rückgängig machen zu können. Funktionsgenerator tut's, man 
kann sonst auch einen Oszillator aus Quarz und Schmitt-Triggern bauen, 
oder mit einem Timer-IC, oder einen Quarzoszillator als Bauteil kaufen.

von al3ko (Gast)


Angehängte Dateien:

Lesenswert?

Ah Leute,
tut mir Leid, wenn ich hier so spammend bin :D

Im Anhang findet ihr einen Auszug aus einer beiliegenden PDF Datei. Das 
ist das Starterkit, welches ich verwende. Der Crystal Q ist doch ein 
externer Oszillator. Falls es tatsächlich daran liegen sollte, wie kann 
ich diesen Crystal oscillator verwenden?

von Frank K. (fchk)


Lesenswert?

al3ko schrieb:

> Schlau wie ich bin, habe ich Google benutzt und nach einer Lösung
> gesucht. So wie ich es verstehe, ich bin aber ein absoluter Anfänger,
> hat das irgendwas mit Fuse Bits zu tun (was bitte soll das heißen?)?

Die Fuse-Bits sind Schalter, mit denen man bestimmte Eigenschaften und 
Funktionen des Chips ein- und ausschalten kann: Takterzeugung, 
Spannungsüberwachung, Funktionen gewisser Pins, etc etc.

> bringt mich nicht weiter. So wie ich das verstehe, erzähle ich dem uC,
> dass ein externer Oszillator verwendet werden soll ohne einen externen
> Oszillator angesteckt zu haben. Wenn das der Fehler ist, wo kann ich das
> denn rückgängig machen? Ich benutze AVR Studio so gut wie zum ersten Mal
> und bin ein wenig ratlos, was ich machen kann.

Bei den AVRs kannst Du Dich im Gegensatz zu den PICs wirksam aussperren.

Die Programmierschnittstelle, über die Du Deinen Programmcode reinlädst, 
braucht einen funktionierenden Prozessortakt, sonst geht sie nicht. Wenn 
der Prozessor über die internen Schalter(Fuses) so geschaltet ist, dass 
er einen externen Takt braucht, dann musst Du ihm den halt geben. 
Besorge Dir am Besten einen Quarzoszillator (kleine Blechkiste mit 4 
Pins, +, -, und Taktausgang, ein Pin ist frei) und 8 MHz Taktfrequenz, 
damit Du ihm den Takt an OSC1 geben kannst.

Es gibt noch eine andere beliebte Methode sich auszusperren. Die 
Programmierschnittstelle beinhaltet unter anderem das Reset-Signal, mit 
dem der Prozessor neu gestartet werden kann. Es gibt aber einen 
Schalter, mit dem man aus dem Pin für das Reset-Signal einen normalen 
Ein-Ausgabe-Pin machen kann (falls einem genau ein Pin fehlt). Das 
kannst Du EINMAL über die Programmierschnittstelle einschalten, aber 
dann wird die normale Programmierschnittstelle (ISP) nicht mehr 
funktionieren, weil sie eben genau dieses Signal braucht.

In diesem Fall hilft nur noch eine spezielle 
Hochvolt-Programmierschnittstelle. Dazu musst Du den Prozessor in der 
Regel aus der Schaltung nehmen und in ein spezielles Programmiergerät 
stecken, das diese Programmiermethode kann. Von denen gibt es nur 
wenige, das verbreitetste ist das STK500. Über die 
Hochvolt-Programmierung kommst Du auf jeden Fall wieder auf den Baustein 
drauf.

Da das STK500 aber nicht das billigste Programmiergerät auf dem Markt 
ist und zudem noch eine serielle Schnittstelle braucht, die viele PCs 
nicht mehr haben, nehmen die meisten Anfänger etwas anderes und kommen 
dann in genau diese Situationen, in der Du jetzt steckst.

fchk

von al3ko (Gast)


Lesenswert?

Hallo Frank, hallo Sebastian,

danke schon mal für eure Beiträge. Wo und wie kann ich festellen, ob die 
Fuse Bits verstellt sind? Irgendwo muss man die ja verstellen können.

Hier mal das C-Programm, das ich damals vor einem halben Jahr in den uC 
geladen habe:
1
#include <avr/io.h>
2
3
#define F_CPU 1000000UL
4
#include <util/delay.h>
5
6
int main()
7
{
8
9
  DDRC = (1 << PC5); /* Output */
10
  PINC = (1 << PC5); /* internal Pullups */
11
12
  while(1){
13
14
    PORTC |= (1 << PC5);/*LED OFF*/
15
    _delay_ms(250);
16
    PORTC &= ~(1 << PC5);
17
    _delay_ms(250);
18
19
  }
20
21
  return 0;
22
}

Und dieses Programm will ich jetzt wieder laden. Meine Frage:
Wo und wie könnte ich Fuse Bits verstellt haben?

von al3ko (Gast)


Angehängte Dateien:

Lesenswert?

Hi Leute,
ich hab mich ein wenig im Programm umgeschaut und folgendes gefunden. 
Unter "SUT_CKSEL" war "Ext. Crystal/Resonator High Freq. ...." gewählt. 
Sehe ich das richtig, dass hier möglicherweise der Hund begraben liegt?

von Fchk (Gast)


Lesenswert?

Die Fuses sind nicht Bestandteil des Quelltextes oder des HEX-Files, 
sondern werden in der Programmiersoftware direkt eingestellt.

Die einzige Möglichkeit, die Fuses wieder auszulesen, ist der 
Hochvolt-Programmiermodus, da der immer funktioniert und seinen eignen 
Takt zuführt.

Fchk

von al3ko (Gast)


Lesenswert?

Hi Fchk,
einen neuen MUC habe ich für ein paar Euro auf Farnell gesehen. Ich 
glaube, dass ich lieber einen neuen MUC kaufen würde als das 
Hochvolt-Programmiergerät.

Um aber noch mal auf meinen Beitrag von 14:43 Uhr zurückzukommen:

Habe ich da nicht meinen externen Oscillator (Crystal Q - dieses 
silberne Teil direkt neben dem MUC)?

von Uwe (Gast)


Lesenswert?

Wenn du die FUSE Bits nicht verstellt hast tippe ich auf ESD. Oder die 
Programmiersoftware ist nicht mehr ganz in ordnung.
Tests :
1. Kabel mit anderem uC testen
2. wenn anderer uC auch nicht geht :
   a) Softwar neu installieren
   b) Kabel prüfen
   c) An anderem Rechner testen
3. Wenn anderer uC geht :
   a) Oszillator bauen (KEIN QUARZ MIT KONDENSTOREN)
      sondern mit Verstärkerstufe (findet man auf alten motherboards)
kaufen loht sich nicht weil teurer als uC (oder selber bauen aus allem 
möglichen)

von Uwe (Gast)


Lesenswert?

Q ist nur ein Quarz ! Er bildet zusammen mit einem Inverter im uC und 
zwei Kondensatoren daneben einen Oszillator. Wenn die FUSES jedoch auf 
Externen Oszillator eingestellt sind dann erwartet der uC auch eine 
Komplette Oszillatorschaltung ausserhalb und deaktiviert seinen internen 
Inverter.

von al3ko (Gast)


Lesenswert?

Uwe schrieb:
> Wenn du die FUSE Bits nicht verstellt hast tippe ich auf ESD. Oder die
> Programmiersoftware ist nicht mehr ganz in ordnung.
> Tests :
> 1. Kabel mit anderem uC testen
> 2. wenn anderer uC auch nicht geht :
>    a) Softwar neu installieren
>    b) Kabel prüfen
>    c) An anderem Rechner testen
> 3. Wenn anderer uC geht :
>    a) Oszillator bauen (KEIN QUARZ MIT KONDENSTOREN)
>       sondern mit Verstärkerstufe (findet man auf alten motherboards)
> kaufen loht sich nicht weil teurer als uC (oder selber bauen aus allem
> möglichen)

Hi Uwe,
vielen Dank für deinen Beitrag. Einen anderen uC besitze ich leider 
nicht. Ob ich FUSE Bits verstellt habe oder nicht, weiß ich nicht. 
Jedenfalls kann ich mich nicht daran erinnern, dass ich bewusst damit zu 
tun hatte.

Ich bin kurz davor, einfach neue uC zu kaufen und zu gucken, ob die 
gehen.

Frage an dich:
Warum kann ich nicht den Quarz mit Kondensatoren verwenden?

von al3ko (Gast)


Lesenswert?

Uwe schrieb:
> Q ist nur ein Quarz ! Er bildet zusammen mit einem Inverter im uC und
> zwei Kondensatoren daneben einen Oszillator. Wenn die FUSES jedoch auf
> Externen Oszillator eingestellt sind dann erwartet der uC auch eine
> Komplette Oszillatorschaltung ausserhalb und deaktiviert seinen internen
> Inverter.

Ah okay. Also gehört der Quarz zum internen Oscillator. Okay, dann werde 
ich einen neuen MUC kaufen :)

Dank dir.

Gruß

von al3ko (Gast)


Lesenswert?

Hey Leute,
was mir gerade noch einfällt:

Als ich gestern das BlinkLED Beispiel auf dem MCU starten wollte, habe 
ich beim ersten Mal leider vergessen, die (externe) Spannungsversorgung 
anzuschließen. Soll heißen, es war nur eine Verbindung zwischen PC und 
MCU vorhanden.

Frage:
Kann das möglicherweise den Fehler im MCU verursacht haben?

von al3ko (Gast)


Lesenswert?

Deute ich das Schweigen richtig, dass es zu ungenau beschrieben ist? 
Oder liegt es an meiner Frage an sich, dass keine Antwort kommt? :(

Gruß

von Frank K. (fchk)


Lesenswert?

al3ko schrieb:
> Deute ich das Schweigen richtig, dass es zu ungenau beschrieben ist?
> Oder liegt es an meiner Frage an sich, dass keine Antwort kommt? :(

Eine sichere Antwort ist schwierig. Normal sollte sowas nicht passieren, 
denn wenn der Chip keinen Strom bekommt sollte er überhaupt nix tun.
Mit Sicherheit auszuschließen ist es aber auch nicht, denn er könnte 
sich seinen Strom beispielsweise über die Schutzbeschaltung an den 
Eingangspins geholt haben. Das mag für einen normalen Betrieb nicht 
gereicht, aber womöglich zum Kippen einer Fuse geführt haben. Das ist 
aus der Ferne schwer zu sagen.

Achselzuckend.

fchk

von Martin S. (der_nachbauer)


Lesenswert?

Hey al3ko.

Normalerweise sollte Dein µC ohne angeschlossenen Strom nichts "machen", 
wie Frank vor mir schon richtig bemerkte.

Ein gern gemachter Fehler ist jedoch, vor dem Setzen der Fuses nicht 
erst die Fuses, welche auf dem µC schon geschaltet sind auszulesen.
Das kann dann u.U. dazu führen, dass man zwar augenscheinlich nur genau 
die Änderung vornimmt, welche man auch geplant hätte - da aber dann die 
anderen Fuses auf "irgend einer" Einstellung mit übertragen werden, kann 
es schon mal komisch werden. [Dies hängt natürlich von der verwendeten 
Software ab, ich kenne jene, welche Du verwendest nicht.]

-----

Bei all den [sicher gut gemeinten] Ratschlägen würde ich Dir jedoch erst 
einmal vorschlagen, sich zu überlegen, ob sich die Sache für Dich lohnt.

Hier wurde schon von der Anschaffung eines Programmers für [relativ] 
viel Geld gesprochen - das lohnt imho eigentlich nur, wenn Du wirklich, 
dauerhaft und häufiger mit Deinem Protoboard [und weiteren Anwendungen] 
arbeiten möchtest.

[Was übrigens einen satten Preis hat - wenn ich das richtig sehe, hast 
Du für Deine 60 Schleifen zzgl. Versand das Protoboard, ein (350mA ?) 
Netzteil, einen serial-to-usb Adapter und einen Mega8 bekommen ?

Ein einfaches Protoboard mit ISP und JTAG Schnittstelle gibt es bei 
Pollin als Bausatz für 15, den Atmega8 für 3, Netzteile je nach 
Ausführung für um die 5 Euronen ... ]



Ich würde Dir eher raten, sich einfach einen neuen µC zuzulegen.

Das dürfte für Deine Zwecke derzeit die einfachste und günstigste Lösung 
sein.


Gruss,

Martin

von spess53 (Gast)


Lesenswert?

Hi

>Normalerweise sollte Dein µC ohne angeschlossenen Strom nichts "machen",
>wie Frank vor mir schon richtig bemerkte.

Stimmt so nicht. Man kann einen AVR auch über die Schutzdioden eines 
Ports versorgen. Allerdings dürfte ein Programmierversuch mit dieser 
'Stromversorgung' recht unbestimmte Ergebnisse zur Folge haben.

MfG Spess

von al3ko (Gast)


Lesenswert?

hahahahahah Leute, ich bin so happy. Eben sind meine drei neuen MCU 
angekommen. Ersten eingebaut, LED blinkt. Wawaweewa, nun kann das 
Programmieren los gehen :D

Ich weiß nicht, was ich beim alten MCU gemacht habe, weshalb er nicht 
mehr funktioniert. Jedenfalls habe ich jetzt einen neuen eingebaut und 2 
in Reserve, so dass ich mir darüber hoffentlich keine Sorgen machen 
muss.

Ein dickes Danke an euch alle für die zahlreichen Antworten und 
Hilfestellungen.

MfG
al3ko

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.