Forum: Mikrocontroller und Digitale Elektronik ATMEL STUDIO 7 AVRDUDE USBasp Problem


von Uwe G. (leoti)


Lesenswert?

Hi, mein Name ist Uwe und ich bin bei meinem 4. Anlauf für die 
Programmierung von ATMEGA & Co.

Ausstattung: Win 7, jeweils: neu aufgespielte letzte Versionen von ATMEL 
Studio7, AVRDUDE, libusb
ATmega8-16PU, USBasp von Technology (10-poliger Stecker), Version 2.0

Atmel Studio7 läuft, USBasp in Win7 fehlerfrei erkannt (fischl sei Dank) 
und unter External Tools eingerichtet, AVRDUDE lässt sich darüber 
aufrufen

Der ATmega8 steckt auf dem Steckbrett in der auf mikrocontroller.net 
einfachen ISP-Version mit 4MHz-Quarz und 20pF C's.

Ablauf:
USBasp in Atmel Studio 7 aufrufen (Tools - USBasp)
Fenster USBasp wird geöffnet:
Arguments: -e -p ATmega8 -c USBasp -P usb -B 10 -U 
flash:w:"$(ProjectDir)Debug\$(ItemFilename).hex":a
Command Line: F:\AVR Dude\avrdude.exe -e -p ATmega8 -c USBasp -P usb -B 
10 -U flash:w:"Debug\.hex":a

Da ich mich hier schon ein bisschen eingelesen habe, habe ich etwas 
'rumgespielt, z. B. -B 10, weil es daran gelegen haben könnte (war es 
aber nicht).

Folgendes passiert: der Programmer lässt seine Prog-LED kurz 
aufleuchten. Auf meinem Steckbrett zeigt mir eine andere LED an, 
Spannung (3,3V) wird kurz aufgelegt. Aber leider gibt es immer diese 
Fehlermeldung (die früher zwar an anderer Stelle schon beschrieben 
wurde, aber ohne Lösung für meinen Fall).
AVRdude Meldung:

avrdude.exe: set SCK frequency to 93750 Hz
avrdude.exe: error: program enable: target doesn't answer. 1
avrdude.exe: initialization failed, rc=-1
             Double check connections and try again, or use -F to 
override
             this check.

avrdude.exe done.  Thank you.

Meine Diagnose: Software ok, AVRdude ok, USBasp ok (hard- und 
softwaremäßig)
Verkabelung geprüft
Steckerbelegung geprüft
ATmega8 getauscht (beide neu)
USBasp getausche (beide neu)
Fehler ist reproduzierbar. 2 nagelneue ATmegas sind doch wohl nicht 
defekt?

Vielleicht hat jemand dazu eine Idee - eines noch vorab: ich habe noch 
keine Dateien oder Projekte, weil ich über diese Hardwareproblematik 
noch nicht hinausgekommen bin. Vielen Dank für Eure Hilfe!

von devzero (Gast)


Lesenswert?

Kannst Du mal einen Schaltplan skizzieren, wie genau Du es angeschlossen 
hast?

von Stefan F. (Gast)


Lesenswert?

Mach mal LED's and die Signal-Leitungen (MISO, MOSI, SCK und RESET).

Die RESET Led soll bei Low Pegel leuchten, die anderen sollen bei High 
Pegel leuchten.

Dann sag mal Bescheid, welche Flackern und welche dunkel bleiben. Wenn 
du mit der Bitrate noch weiter runter gehst, kannst du es besser sehen.

von Fern Schätzer (Gast)


Lesenswert?

Uwe G. schrieb:
> Auf meinem Steckbrett zeigt mir eine andere LED an,
> Spannung (3,3V) wird kurz aufgelegt.

Wenn ich sowas lese dann wird's mir ganz schwummrig.

Versorge deinen Controller anständig mit einer Versorgungs-
spannung möglichst aus einem Spannungsregler, beschalte
den Controller mit einem Abblock-Kondensator wie es der
Hersteller vorsieht und achte auf einen Pullup-Widerstand
am Reset-Pin.

von Stefan F. (Gast)


Lesenswert?

3,3V ist nicht geeignet. Die allermeisten USBASP arbeiten immer mit 5V 
Signalen.

Die Jumper zum Einstellen der Spannung ist Fake, er steuern nur die 
Versorgungsspannung, die er am ISP Stecker heraus gibt. Wobei ein 
anständiger Programmieradapter das gar nicht tun sollte (also weg mit 
dem Jumper). Das Target sollte hingegen eine eigene Spannungsversorgung 
haben.

Zur Not kannst du 180 Ohm Widerstände in die Signal Leitungen (aber 
nicht GND) einschleifen, dann geht es meistens auch mit 3,3V Targets.

von Uwe G. (leoti)


Lesenswert?

Ich habe es exakt so aufgebaut wie hier beschrieben:
https://www.mikrocontroller.net/articles/Datei:Mega8_Tutorial.png
mit dem Quarz, angeschaltet wie hier:
https://www.mikrocontroller.net/articles/Datei:Tutorial-quarz-schaltplan.png

Die LEDs bekomme ich nur zum Leuchten, wenn sie (über R) wie folgt 
liegen:
2 SCK gegen + (leuchtet)
3 RESET gegen + (leuchtet)
4 MOSI: gegen - (leuchtet)
5 MISO: gegen + (leuchtet)
mit Programmierabfrage
alle blinken (bei -B 2000 ist SCK to 500Hz)

von Stefan F. (Gast)


Lesenswert?

Wenn alle LEDs Blinken, dann funktioniert die Kommunikation elektrisch 
gesehen. Mit einem Oszilloskop könnte man noch genauer hinschauen. Mir 
hatte aber bisher so ein schneller Test mit LEDs genügt.

Du könntest noch kontrollieren, ob die Leitung MISO bis zum 
Programmieradapter verbunden ist. Diese Flachkabel brechen gerne mal.

von Uwe G. (leoti)


Lesenswert?

Nachtrag
Sehe ich ein: mit 5V externer Spannung und Stütz-C leuchten die LED und 
das flackern ist nur so eben zu sehen. Fehlermeldung ist noch da.

von Fern Schätzer (Gast)


Lesenswert?

Uwe G. schrieb:
> Ich habe es exakt so aufgebaut wie hier beschrieben:
> https://www.mikrocontroller.net/articles/Datei:Mega8_Tutorial.png

Das kann gar nicht sein denn da ist kein Aufbau gezeigt sondern
"nur" ein Schaltplan.

Das mag für dich nach Korinthenkacker klingen, aber der Aufbau
ist nochmal was ganz anderes als eine Schaltung. Da kann noch
viel Mist passieren.

Insbesondere wenn man das Reizwort "Steckbrett" lesen muss.

Als darfst auch ruhig mal deinen Aufbau zeigen. Wenn du ihn
nicht zeigen willst dann wird das schon seine Gründe haben ....

von Uwe G. (leoti)


Lesenswert?

Ich kann ein Foto vom Steckbrett machen, aber dann kommt eh nur ein 
Kommentar wie: "Wie unordentlich". Ich hatte die Verdrahtung mehrfach 
überprüft.

Das Steckbrett ist sowieso nur zum Testen. Aber dort sollte es 
wenigstens schon mal funktionieren (wie andere Schaltungen bei mir auch 
funktioniert haben). Ich will allerdings endlich über TTL hinauskommen - 
bin die IC-Gräber mit Drahtverhau leid :-)

Um noch einmal auf die externe Spannungsversorgung zurückzukommen. Ja, 
das ist immer eine gute Idee, aber wie kann ich dann jemals eine 
ISP-Programmierung durchführen, bei der ich gar keine andere Spannung 
zur Verfügung habe? 'In System Programming' heißt es doch und bedeutet 
auch, dass ich die Schaltung über den Programmer mit Strom versorge.

von Einer K. (Gast)


Lesenswert?

Uwe G. schrieb:
> 'In System Programming' heißt es doch und bedeutet
> auch, dass ich die Schaltung über den Programmer mit Strom versorge.

Nein, das heißt es nicht!

Gute ISP Geräte "fühlen" die Spannung des Delinquenten und passen sich 
an.
Von 1,8V bis 5V
z.B. der Atmel ICE ist so einer

Der USBasp nicht.
Der kennt keine Scheu, die angeschlossen Schaltungen mit 5V zu fluten 
und evtl. gar dabei auszubrennen.

von devzero (Gast)


Lesenswert?

Auf Versorgungsspannung wollte ich hinaus, daher die Frage nach dem 
Aufbau - sei es als Bild oder als Skizze - einfach mal selbst 
gezeichnet. Da ist dann klar, was mit den entsprechenden Pins ist und 
ob, bzw. woher sie versorgt werden.

Zu oft treffen Leute irgendwelche Annahmen, die am Ende falsch sind.

von Fern Schätzer (Gast)


Lesenswert?

Uwe G. schrieb:
> Ich hatte die Verdrahtung mehrfach überprüft.

Du hast es immer noch nicht verstanden. Es geht beim Aufbau
nicht nur darum dass man korrekt alles 1:1 vom Schaltplan
umgesetzt hat sondern auch wie man das Ganze verdrahtet
hat, um die Anordnung und Leitungslängen.

Die (Strom-) Versorgung des Versuchsaufbaus ist ein weiterer
von Anfängern oft unterschätzter Aspekt.

von Stefan F. (Gast)


Lesenswert?

Das provisorische Aufbauen nicht schön sind, wissen wir alle. Dafür 
braucht sich niemand zu schämen.

Die erfahrenen Elektroniker wissen aber, wo bei provisorischen Aufbauten 
Knackpunkte lauern. Anstatt jetzt alle 100 Szenarien zum gefühlten 
1000ten mal hier aufzuschreiben, nur um vor Dir zu erfahren "nein, das 
ist es alles nicht" kommen wir mit ein paar simplen Fotos viel schneller 
und bequemer voran.

von Uwe G. (leoti)


Angehängte Dateien:

Lesenswert?

OK, jetzt noch mal mit stabilisierter Stromversorgung und Bildern.
Beim Aufruf des USBasp aus AtmelStudio heraus spricht AVRdude den USBasp 
an. Die ProgrammierLED auf dem USBasp binkt auf.
Parameter: -e -P usb -c USBasp -p ATmega8 -B 2000 -e -U 
flash:w:"$(ProjectDir)Debug\$(ItemFilename).hex":a

Auf dem Steckbrett sieht man das Flackern der RESET LED, bei den anderen 
LED ist nichts zu sehen.

avrdude.exe: set SCK frequency to 500 Hz
avrdude.exe: error: program enable: target doesn't answer. 1
avrdude.exe: initialization failed, rc=-1
             Double check connections and try again, or use -F to 
override
             this check.

avrdude.exe done.  Thank you.

Auf dem Foto sieht man leider nicht die Beschriftung:
ATMEGA8-16PU, auswählen kann ich im Atmel Studio nur ATmega8

von Stefan F. (Gast)


Lesenswert?

Wenn auf den 3 LEDs wirklich gar kein Flackern zu sehen ist, dann ist 
dein Programmieradapter oder das Kabel kaputt.

Wenn zwei der drei LEDs flackern, hat der AVR keinen Takt. Quarze 
funktionieren im Steckbrett nicht immer.

von Uwe G. (leoti)


Angehängte Dateien:

Lesenswert?

1. Ich habe jetzt einen weiteren USBasp gekauft (habe also 2 gleiche und 
eins von einer anderen Firma). Bei einem dt. Händler, der mir 
versicherte, dass er einzeln prüft und aktuelle Firmware geflasht hat.
2. habe ich die Schaltung mehrfach optisch geprüft und dann die 
Verbindungen mit Multimeter durchgemessen.
3. habe ich alle 3 10-poligen Kabel der USBasp durchgemessen.
4. habe ich - natürlich unter Berücksichtigung der PIN-Belegung
1x ATmega8
1x ATmega48
2x ATmega88
eingesetzt. Und ich weiß, dass am Punkt auf der eingekerbten Seite PIN1 
liegt.
5. bin ich die Leitungsführung mindestens 2x genau durchgegangen (bis an 
PINs gemessen)
6. habe ich die am IC anliegende stabilisierte Spanung geprüft (5,83V)
7. Ich habe bei einem USBasp die fehlenden Steckstifte aufgelötet (S3), 
um dort die eingebaute niedrige Geschwindigkeit vorzugeben.
8. Ich habe AVRDude immer eine geringe Frequenz vorgegeben (B -20 
entspricht 32kHz)
9. Ich habe das Zidag-Programm verwendet, um alle verfügbaren Treiber 
auszuprobieren: libusb, libusbk, win32 von fischl.
in meinem Win7prof laufen alle Treiber gleich (gut?)
10. Ich habe ein einfaches main.c erstellt (wie in einem Tutorial 
beschrieben, um einfach nur 2 Ausgänge auf high zu setzen), dieses built 
ausgeführt und versucht, hochzuladen.
11. Natürlich mit und ohne Quarz (verschiedene getestet: 4 und 6MHz 
sowie einen Uhrenschwinger von 32kHz - was ja egal sein dürfte, denn die 
neuen ATmegas müssten erst mal mit dem internen Oszi laufen). Ob die 
Quarze anschwingen, kann ich nicht sagen, aber siehe Klammer.
12. Die LED an MOSI, MISO und SCK liegen über R auf Low.
13.
a) Mini-Oszi DSO138 (dafür reichts) zeigt mir während der 
Programmierungsversuche ein Rechtecksignal mit ca. 170mysec. Taktsignal 
am SCK mit einem Pegel von ca. 1,2V an (mit Stecker für Low frequenz am 
USBasp), ohne Stecker höhere Frequenz(um die 90ys).
b) am Reset kommt ein ähnliches Signal an.

Jeder der 3 USBasp wird erkannt
Jeder der 3 USBasp wird von AVRDude angesprochen, die Prog-LED geht kurz 
an
Jeweils fängt die leuchtende RESET-LED vom uC an zu flackern
Immer leuchtet die MOSI-LED dauernd und flackert ebenfalls beim 
programmieren.
MISO- und SCK-LED bleiben aus. Ein messbar über alle Leitungen 
ankommendes Signal ist aber vorhanden.

Bei allen uC und bei allen 3 Programmern gibt es dieselbe 
Fehlermeldungen von AVRDude.

Die Fehlermeldungen kommen aber auch, wenn die nur den USBasp dranhabe 
und die Schaltung abgeklemmt ist!

Die ATmegas sind allesamt neu, unbeschrieben und haben nur einige Zeit 
in einem Kästchen auf Schaumstoff hinter sich gebracht (bei pollin 
gekauft). Elektrostatische Defekte schließe ich hier aus. Sollten die 
trotzdem ALLE defekt sein können? Jedenfalls finde ich bislang keine 
weiteren Fehler

Ob ich doch noch ein Brett vor der Nase habe?

von Stefan F. (Gast)


Lesenswert?

Uwe G. schrieb:
> 6. habe ich die am IC anliegende stabilisierte Spanung geprüft (5,83V)

Das ist aber viel. Die AVR sind für maximal 5,5V ausgelegt.

> Taktsignal am SCK mit einem Pegel von ca. 1,2V an

Das ist zu wenig, der Pegel müsste annähernd mit der Versorgungsspannung 
übereinstimmen. Irgend etwas belastet diese Leitung viel zu stark. Dem 
Oszillogramm nach muss es eine kapazitive Last sein.

Könnte es sein, dass dein Steckbrett kaputt ist? Vielleicht hat sich 
innen drin ein Stück Draht verfangen.

Ich bin auch unsicher, ob du dein Oszilloskop richtig eingestellt hast. 
Ganz links unten steht "0,5V AC", du sollst aber DC messen. Wo ist denn 
auf deiner Anzeige Null Volt ?

> am Reset kommt ein ähnliches Signal an.

Da sollte nur ein langer Low-Impuls zu sehen sein, der so lange dauert, 
wie der Programmiervorgang (bzw. dessen Versuch).

> MISO- und SCK-LED bleiben aus.

Kein Wunder bei 1,2 Volt.

Wiederhole deine Messung nochmal mit LED's aber ohne Mikrocontroller. 
Wollen wir doch mal sehen, ob deine Programmieradapter heile sind.

Wie sieht es mit der Stromversorgung deiner USBASP aus, ist die während 
der Kommunikation stabil auf ca. 5V? Es wäre denkbar, dass dein USB 
Kabel, Hub oder Port am PC defekt ist.

von Fern Schätzer (Gast)


Lesenswert?

Uwe G. schrieb:
> Ob ich doch noch ein Brett vor der Nase habe?

Zum Aufbau:

- Das Quarz-Gehäuse kann einen Kurzschluss mit einigen
Controller-Pins erzeugen.

- Die Widerstände an den LEDs sind evtl zu klein (100 Ohm?)
Sollten mindesten 330 Ohm sein, lieber 470.

- Wenn die Spannung am Controller mehr als 5.1 Volt hat, misst
du entweder falsch oder dein Messgerät ist defekt oder der
Spannungsregler erzeugt keine 5V und ist somit defekt. Auch
muss die Versorgung von aussen mindestens 7.5V haben (abhängig
vom Spannungsregler).

Messe die Spannung einmal direkt am Spannungsregler (In vs Gnd
und Out vs Gnd) und direkt an den Versorgungspins des Controllers
(7 vs 8, 7 vs 22, 20 vs 8 und 20 vs 22). Müsste überall das
gleiche herauskommen.

- du hast nicht gezeigt woher die Spannung für den Aufbau von
aussen kommt.

Fern Schätzer schrieb:
> Die (Strom-) Versorgung des Versuchsaufbaus ist ein weiterer
> von Anfängern oft unterschätzter Aspekt.

- du hast keinerlei Angaben zum Spannungsregler gemacht (Typ,
Schaltplan).

von Uwe (Gast)


Lesenswert?

Hi,
>6. habe ich die am IC anliegende stabilisierte Spanung geprüft (5,83V)
Mach mal bitte so 10µ an den Ausgang des Spannungsreglers.
Mehr als 5V ist Mist.

>Ich bin auch unsicher, ob du dein Oszilloskop richtig eingestellt hast.
>Ganz links unten steht "0,5V AC", du sollst aber DC messen. Wo ist denn
>auf deiner Anzeige Null Volt ?

Ja, aber die Schalter stehen auf x5 und 1V. AC ist natürlich Mist.

Viel Erfolg, Uwe

von Jens (Gast)


Lesenswert?

Mein Steckbrett sieht genauso aus wie das abgebildete.

Der Versorgungsstreifen ist dort aber durchverbunden, das heißt, die 
kurzen Kabelbrücken (rot und schwarz) zwischen den 5er Blöcken sind 
nicht notwendig. Sollte das bei dir auch so sein, dann hättest du 
Eingang und Ausgang des Reglers kurzgeschlossen.

Bist du sicher, dass die 5er Abschnitte gegeneinander isoliert sind?

Jens

von Stefan F. (Gast)


Lesenswert?

Jens schrieb:
> Bist du sicher, dass die 5er Abschnitte gegeneinander isoliert sind?

Ich beiße in die Tischkante, wenn es das war...

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.