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!
Ach ja, ich habe auch schon die ISP programming frecuency auf die kleinstmögliche Stufe gesetzt - erfolglos.
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.
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?
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
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?
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?
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
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)?
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)
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.
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?
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ß
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?
Deute ich das Schweigen richtig, dass es zu ungenau beschrieben ist? Oder liegt es an meiner Frage an sich, dass keine Antwort kommt? :( Gruß
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.