Forum: Mikrocontroller und Digitale Elektronik USBasp und ATMega 8


von Nils P. (nils_po)


Lesenswert?

Hallo liebe Community!

Ich weiß, dass es schon etliche Threads zu diesem Thema gibt, aber ich 
bin langsam am verzweifeln. Ich möchte 
diesen(http://www.fischl.de/usbasp/) USBasp benutzen, um einen ATMega8 
zu flashen. Ich habe alle Verkabelungen bestimmt 20+ mal überprüft, 
mehrere Controller (teilweise neu) ausprobiert genauso wie zwei 
verschiedene (frisch ausgepackte) USBasps.
Ich bekomme permanent die Fehlermeldung:
avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.
Habe sowohl den SLOW-Jumper, als auch das -B(etliche Zahlen) Statement 
benutzt, um eine zu hohe Taktrate auszuschließen. MOSI und SCK Leitung 
"wackeln" auch kurz, kann es nur mit meinem Oszi nicht so genau messen. 
Nur MISO regt sich gar nicht, sofern ich das beurteilen kann. FUSES sind 
noch keine gesetzt worden - wie auch. Die Controller sind wie oben 
beschrieben neu, FUSE-Konfiguration sollte also der Standard sein.
Veraltete Firmware kann ich eigentlich ausschließen, weil das 
Taktrate-Verstellen ja problemlos klappt.
Gibt es irgendwas, was ich übersehen haben könnte?

LG Nils

von nico_2010 (Gast)


Lesenswert?

Hello,
Please check again all connections (shorts or even unconnected wires). 
Also, check to have 5V on the board to be programmed and 10k resistor 
from RST pin to VCC. Finnaly, load 2009 firmware in programmer. What 
program you use to burn AVR? You can post foto(s) with your setup?
Best regards

von Jan S. (jannemann)


Lesenswert?

Moin,
wie ist dein ATmega8 angeschlossen? Liegt er lose auf dem Tisch? Oder 
ist er in einer Schaltung verbaut und du willst ihn über ISP 
programmieren?

Wenn lose auf dem Tisch:
Guck mal unter 
http://www.learningaboutelectronics.com/Articles/Program-AVR-chip-using-a-USBASP-with-10-pin-cable.php
dort ist prinzipiell der Anschluss beschrieben. ACHTUNG: laut deinem 
Link sind die Pins 4+6 mit dem UART vom USBASP verbunden. Also Dort ist 
KEINE Masse.
Prinzip für den ATmega8 (PDIP / DIL-Package)
ISP           Signal      ATmega
1         -->  MoSi  -->    17
2         -->  5V    -->    7  (Jumper 3 gesetzt)
5         -->  Reset -->    1
7         -->  SCK   -->    19
8 oder 10 -->  GND   -->    8 (oder 22)
9         -->  MiSo  -->    18

Wenn du ihn in einer Schaltung verbaut hast, schließe die Pins 
1,5,7,8,9) wie oben beschrieben an. Nur die Versorgung (5V) von extern 
(=Jumper 3 nicht setzen, oder Pin2 nicht anschließen) anschließen. Wenn 
du ihn über den USBasp versorgen willst, achte darauf, dass der 
benötigte Strom vom USB Port bereit gestellt werden muss.
Deine Schaltung sollte dann ungefähr so aussehen:
http://www.fischl.de/usbasp/bilder/usbasp_circuit.png
Achte auf den 10K am Reset Pin. Aber das hat nico ja schon geschrieben.

Poste ggf. mal ein Bild von deinem Aufbau.

Jumper 1 muss ebenfalls gesteckt sein, denn soweit ich weiß, kommt der 
Atmega8 im Auslieferungszustand mit den hohen Clock-Raten nicht klar.

Ansonsten sollte es eigentlich laufen.
Ich hoffe ich habe auf die schnelle dort keinen Schitzer eingebaut..

Der USBasp wird vom PC erkannt??? Denke, ja. Sonst hättest du eine 
andere Fehlermeldung.

Grüße

Edit: Bei Versorgung über den USBasp und eingebautem µC muss JP3 
natürlich gesteckt sein ;-)
Und JP2 ist hoffentlich offen

: Bearbeitet durch User
von Nils P. (nils_po)


Angehängte Dateien:

Lesenswert?

Vielen Dank erstmal für die schnellen Antworten!
Im Anhang ist jetzt ein Bild von meiner Schaltung. Auf den Schwingquarz 
kann ich ja verzichten, weil der uC standardmäßig den internen Takt 
nutzen sollte?(mit Quarz hat sich das Problem auch nicht gelöst). Das 
Board wird (rechter Jumper) über den USBasp versorgt. Mittlerer Jumper 
ist wie oben beschrieben Slow. Der Treiber funktioniert, da wie Jan 
schon sagte die Fehlermeldung sonst anders wäre. Wie wichtig sind die 
Widerstände bei Mosi und Sck? Habe etliche Schaltungen im Internet 
gefunden, bei denen sie einfach weggelassen wurden, die aber (im Video) 
einwandfrei funktioniert haben.
Würde mir an sich nicht die Arbeit machen und einfach ein Arduino Board 
nehmen, aber es ist für die Arbeit und daher muss ich eine platzsparende 
Lösung finden.
Habe vieles an Software durch. Darunter Atmel Studio 7, Arduino IDE 
1.6.6, WinAVR und direkt in der MS-Shell. Aber da ja eh alles genannte 
nur auf AVRDUDE aufsetzt, ist das praktisch egal.

: Bearbeitet durch User
von Jan S. (jannemann)


Lesenswert?

Ich vermute folgendes:
Deine Versorgungsleisten auf dem Steckbrett sind nicht miteinander 
verbunden.
Du hast an Pin20 5V aber nicht an Pin7 --> ggf. mit Voltmeter 
übertrüfen.
Falls ja, steck das rote Kabel auf die linke Versorgungsleiste oder 
schalte alle Versorgungsleisten mit zusätzlichen Kabeln parallel.


Den Widerstand für den Reset kannst du dir in diesem Aufbau sparen.
Den brauchst du nur, wenn der Controller auch ohne angesteckten 
Programmer laufen soll. Es schadet aber auch nicht, wenn du ihn drin 
lässt.

Auf dem Bild kann man es nicht genau erkennen. Aber Pin3 an dem USBasp 
ist frei? Ich sehe zwar, dass an der oberen Reihe nur 4 Kabel 
angeschlossen sind, aber welcher Pin frei ist, ist schwer zu erkennen.

Außerdem vermute ich mal, dass der Wannenstecker richtig belegt ist. Auf 
dem USBasp erkenne ich leider keine Markierung aber der Anschluss sollte 
so sein:
https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Stiftwanne2x13v2.jpg/155px-Stiftwanne2x13v2.jpg
Auch hier ggf mal nachmessen, ob du an Pin2 zu Pin8/10 5V misst. Bzw. 
auf deinem Steckbrett.

Ansonsten sieht es erstmal gut aus.

Probiere das erstmal aus.

von Nils P. (nils_po)


Angehängte Dateien:

Lesenswert?

Was man (weil alles andere sonst noch ungenauer wäre) nicht erkennen 
kann ist, dass ich die Leisten parallel geschaltet habe. Habe Vcc gegen 
GND gemessen und es liegen 5V, genau wie bei AVcc und AGND. Im Anhang 
nochmal ein genaueres Bild von den Anschlüssen. Über der gelben Leitung 
(MOSI) ist der Pfeil, leider schwarz auf schwarz.

von Karl M. (Gast)


Lesenswert?

Guten Morgen,

mir fehlen an den beiden Versorgungsanschlüssen Vcc/ Gnd und AVcc/ AGnd 
jeweils ein 100nF (abblock) Kondensator.

Dann hat Atmel einige Application Notes dazu geschrieben, hier ist eine 
Auswahl:

# http://www.atmel.com/images/doc0943.pdf

# 
http://www.atmel.com/images/atmel-2521-avr-hardware-design-considerations_applicationnote_avr042.pdf

von Nils P. (nils_po)


Lesenswert?

Kondensatoren sind dran - leider auch keine Änderung.. Danke trotzdem, 
würde einem bestimmt an einer anderen Stelle auf die Füße fallen.

von Damian (Gast)


Lesenswert?

Nils P. schrieb:
> Ich möchte
> diesen(http://www.fischl.de/usbasp/) USBasp benutzen, um einen ATMega8
> zu flashen.

Funktioniert der Usbasp denn mit anderen AVR-Controllern (also hast du 
schon erfolgreich andere AVRs damit beschrieben?), oder ist es sein 
Stapellauf?

von Nils P. (nils_po)


Lesenswert?

Es ist sowohl mein erster Versuch, als auch der erste Controller, der 
von dem USBasp beschrieben wird, als auch der erste USBasp, der versucht 
den Controller zu beschreiben. (zumindest, seit beides aus der 
Verpackung ist)

von Jan S. (jannemann)


Lesenswert?

Auf die schnelle fällt mir nichts mehr ein.

Du könntest noch einmal die 5V an allen µC Pins messen, (gegen Masse vom 
USBasp) und auch die Masseverbindung prüfen (0,0V gegen GND_USBasp).
Außerdem die Signale an Reset, SCK und MOSI und MISO). Sowohl am µC als 
auch direkt am USBasp.
Ich gehe davon aus, das du das aber schon mehrmals gemacht hast.

Ansonsten könntest du nochmal versuchen, die Leitungen direkt an den µC 
zu stecken. Minimalbelegung wie oben geschrieben.
Oder wenn du es gerade zu Hand hast: Eine kurze Flachbandleitung direkt 
an den µC bzw. an ein IC-Sockel löten. Die Steckbretter sollen ja 
manchmal nicht so doll sein. Für die langsame Programmierung sollte es 
aber (eigentlich) allemal reichen. Bei mir lief der µC auch schon mit 
8MHz Quarz am selben Steckbrett.

von Pappnase (Gast)


Lesenswert?

Hallo Nils,

mit was programmierst Du eigentlich? Ich meine welches Betriebssystem?
Solltest Du unter Linux versuchen den Atmega zu brennen, solltest Du 
sudo avrdude... benutzen. Wenn Du nämlich als normaler Nutzer versuchst 
zu flashen sieht Deine Fehlermeldung genau so aus.
Solltest Du ein Makefile verwenden musst du ggf. den AVRDUDE_Programmer 
& AVRDUDE_PORT eintragen.
Mfg.

von Damian (Gast)


Lesenswert?

Und einen anderen AVR zum Testen hast du nicht zur Hand?


Wenn dein Rechner einen Parallelport hat, kannst du einen 
superprimitiven Parallelport-AVR-Progger aufbauen und damit den Atmega8 
testen/beschreiben.

Hier wirds erklärt:
Beitrag "Re: Microkontroller Starterkit"

http://www.rowalt.de/mc/avr/progd.htm

von Jan L. (ranzcopter)


Lesenswert?

...ich würd's zum Warmwerden dann vielleicht erstmal mit einem "Arduino 
als ISP" probieren (scheint ja vorhanden zu sein?):

https://www.arduino.cc/en/Tutorial/ArduinoISP

von Nils P. (nils_po)


Lesenswert?

Ich progge unter Windows 7 64-bit (habe ich nur ungenau durch MS-Shell 
erwähnt - mein Fehler). Gibt es da ähnliche Probleme (a la sudo)? Habe 
sowohl 2 USBasp's als auch 2 ATMega8 uCs und alle mit allen getestet. 
Der Programmer wird immer erkannt Bin langsam am Ende meines Lateins. 
Habe schon zig Foren durch, aber alle haben höchstens ähnliche Fehler. 
Ich beschaffe mir nochmal ein Linux-System und versuche es von diesem 
aus - die Kompatibilität ist mit SIcherheit höher. Einen Rechner mit 
Parallelport gibt's hier leider nicht..

von Philipp_K59 (Gast)


Lesenswert?

Vielleicht mal nen 16Mhz Quarz anschliessen.

von Nils P. (nils_po)


Lesenswert?

@Jan L.
den Arduino würde ich bestellen und das wäre meine Ausweichmöglichkeit, 
sofern ich hier nichts auf die Beine stelle. Mich frustriert nur 
langsam, dass es keinen für mich ersichtlichen Grund für dieses 
Verhalten gibt. Einen Grund gibt es mit Sicherheit, nur fehlt mir ein 
zweites Augenpaar von jemandem, der sich damit auskennt, um das 
unabhängig zu kontrollieren ;(. Danke trotzdem für den Link, falls ich 
heute keinen Erfolg mehr habe, wird das ausprobiert. Der Programmer und 
diese wackelige Konstruktion ist mir sowieso nichts.. Aber bevor ich 
hier rumlöte, wollte ich es "roh" zum laufen bringen.

von Nils P. (nils_po)


Lesenswert?

@Philipp. Wie soll ich das, ohne die FUSES zu verstellen, für die ich 
den CHIP ansteuern muss?

von Damian (Gast)


Lesenswert?

Nils P. schrieb:
> @Philipp. Wie soll ich das, ohne die FUSES zu verstellen, für die ich
> den CHIP ansteuern muss?

Wirklich 100%ig sicher sein kann man nie, was mit den Fuses ist.

Ich würde dem Atmega einfach einen 4MHz-Quarz oder so (also was 
langsames) gönnen. Schaden tut es in keinem Fall, aber man ist auf der 
sicheren Seite.


Mit dem
http://www.fischl.de/usbasp/
hatte ich seinerzeit Dauerprobleme, es funktionierte zwar grundsätzlich, 
aber nur sehr wacklig. Tagelange Fehlersuche mit Forenhilfe hatte nix 
gebracht.

Habe dann auf mehrere Empfehlungen hin den AVRISP MKII geholt - und der 
proggt seit Jahren völlig sauber und zuverlässig.

von Nils P. (nils_po)


Lesenswert?

Danke erstmal für all' eure Hilfe. Habe hier eine Weile gemessen und 
sehe, dass dieses Bread-Board nicht wirklich zuverlässig ist. Beim MOSI 
pin messe ich ca. 1/3 der Spannung, die durch das MOSI-Kabel fließt, 
wenn ich sie direkt verbinde die volle Spannung. Werde also noch einmal 
einen neuen Aufbau starten müssen, vielleicht wie oben vorgeschlagen 
direkt an die Pins.

von Jan L. (ranzcopter)


Lesenswert?

...weitere "Bestelloptionen" - die bei mir prima funktionieren - wären

http://www.ebay.de/itm/1Stk-ATmega8-ATmega48-ATMEGA88-Development-Board-AVR-NO-Chip-DIY-Kit-Neu-/201223232054?hash=item2ed9d6da36:g:8BkAAOSwVFlUCDDa

oder auch die Chinaversion deines Fischls:

http://www.ebay.de/itm/AVR-51-Programmer-Adapter-mit-10-Pin-Kabel-ATMega-ATTiny-USBASP-USBISP-/301687762189?hash=item463dfded0d:g:zrsAAOSw-vlVpJn8

klappten beide unter Win7-64 auf Anhieb (avrdude, bzw. auch 
"KKMultikopter" - mit absolut abenteuerlichem 
Fädeldraht-Miso/Mosi-TQFP32-Anschluss...)

von JSet (Gast)


Lesenswert?

Bist du dir sicher das die Jumper auf dem Fischel richtig gesetzt sind ?

In der Readme sowie in dem Schaltplan ist Jumper 2 für das 
Firmwareupdate zuständig, bei dir sind die Jumper 1 + 2 oder 2 + 3 ? 
gesetzt.

Es kommt mir nur ein wenig Spanisch vor das der Jumper 2 nicht in der 
Mitte liegt.


Setting jumpers:
J1 Power target
   Supply target with 5V (USB voltage). Be careful with this option, the
   circuit isn't protected against short circuit!
J2 Jumper for firmware upgrade (not self-upgradable)
   Set this jumper for flashing the ATMega(4)8 of USBasp with another 
working
   programmer.
J3 SCK option
   If the target clock is lower than 1,5 MHz, you have to set this 
jumper.
   Then SCK is scaled down from 375 kHz to about 8 kHz.

von Jan S. (jannemann)


Lesenswert?

JSet schrieb:
> Es kommt mir nur ein wenig Spanisch vor das der Jumper 2 nicht in der
> Mitte liegt
Ist korrekt.

habe mit die Jumper vorhin auch schon auf dem PCB (bei Ebay) angesehen. 
die Leiterbahnen führen zu den richtigen Jumpern.
Soll heißen: Die Jumper sind nicht in der Reihenfolge von 1-3 
angeordnet.

von Damian (Gast)


Lesenswert?

Also benutzt Nils die falsche Jumper-Konfiguration?

von Jan S. (jannemann)


Lesenswert?

Moin Damian,
die Konfiguration scheint korrekt zu sein.

Eines der Bilder zeigt die Vorder- eines die Rückseite.
http://www.ebay.de/itm/-/221937522256
Eine dicke Leiterbahn auf der Rückseite geht von dem J1 nach Pin2 (5V).
Außerdem sieht man auf der Oberseite die Beschriftung 
Service/Slow/Power.

Gibt es schon was neues?

von fry (Gast)


Lesenswert?

Hallo,
ich benutze einen China USBasp, hat einen Jumper für 5V/3.3V. Den 
Zweiten Jumper musst ich nur setzen, als ich die neue Firmware auf den 
USBasp geschrieben wurde. Wenn ich mich richtig erinnere hatte ich die 
Meldung auch beim Atmel Studio 7 mit AVRdude.

Probier mal meine Einstellungen für den USBasp mit Atmel Studio 7 
(Tools->External Tools):
Command: C:\AVRdude-6.1\avrdude.exe
Arguments: -e -P usb -c USBasp -B 4 -p m8 -e -U 
flash:w:"$(ProjectDir)Debug\$(TargetName).hex":a

PS: Bin mir ziemlich sicher, dass du entweder die Jumper am USBasp 
falsch gesetzt hast oder die alte Firmware drauf hast.

von Philipp K. (philipp_k59)


Lesenswert?

Nils P. schrieb:
> @Philipp. Wie soll ich das, ohne die FUSES zu verstellen, für die ich
> den CHIP ansteuern muss?

Wer es nicht mit Quarz ausprobiert hat, der hat noch nicht alles 
probiert.

Es gibt auch fertige Deutsche ISP Progger unter 5€.

von Nils P. (nils_po)


Lesenswert?

@Phillip
Habe schon mehrfach einen 12Mhz Quarz dran gehabt (mit 22pF 
Kondensatoren). Wenn ich die Jumper falsch gesetzt habe, wäre 
schlichtweg die Beschriftung auf dem USBasp falsch. Da steht leider 
nicht 1,2,3 sondern "Service(links, nehme ich als firmware-upgrade 
Jumper an), Slow (mitte, nehme ich als Taktdrossler an), Power(rechts, 
für Stromversorgung, funktioniert auch offensichtlich)". Und unabhängig 
vom Slow jumper funktioniert auch das -B-Statement. Messe mit dem Oszi 
und die genannte Frequenz wird auch auf der SCK-Leitung erzeugt.
Ich werde heute noch einige Tests durchführen, da die Widerstandsmessung 
mit dem Multimeter gestern sehr unterschiedlich ausgefallen ist und ich 
dem Board nicht so richtig traue.
Ansonsten lade ich mir noch die aktuellste Firmware runter und spiele 
die rauf, obwohl ich eigentlich davon ausgehe, dass sie drauf ist. Aber 
offensichtlich sollte man auf nichts vertrauen..
@fry ich werde deine Einstellungen mal testen, danke.

von nico_2010 (Gast)


Lesenswert?

Hello Nils
Now I have seen your fotos. My question is: where is the jumper between 
positive voltage on breadboard (i.e. I don't see any connection between 
the two red strips on breadboard). This means that 10k resistor (on RST 
pin) and +Vcc of AVR are not connected to USBAsp. Check tis please.
Best regards from Romania

von nico_2010 (Gast)


Lesenswert?

... and also check GND connections (between blue strips, and between 
blue strips and USBAsp)

von Nils P. (nils_po)


Lesenswert?

@nico
i think i mentioned that I installed a jumper between both lines. If I 
didn't mention it I'm sry. I also checked all of my Vcc connections 
against all GND connections.

von nico_2010 (Gast)


Lesenswert?

Ok, sorry if i didn't understood (work with Google translate). Usually 
this message is received when uC don't work (lack of power supply or 
misconnection). It is also possible that your breadboard is a bit noisy.
The last resort is to rewrite the firmware with 28-09-2009 firmware. If 
every connection is OK and the whole setup is correct I suspect that new 
firmware is buggy.
I used to use USBasp until I made my AVR ISP MkII clone with AT90USB162, 
so othe sollutions I don't have.
Best regards

von Nils P. (nils_po)


Lesenswert?

Ok Leute vielen Dank für eure Hilfe. Vielen Leuten, die diesen Thread 
lesen werden eure Vorschläge mit Sicherheit helfen.
Ich habe endlich eine Lösung gefunden!! (Die Erleichterung ist nicht in 
Worte zu fassen)
Was ich jedem empfehlen kann, der auch mit einem USBasp in Verbindung 
mit einem Chip + Breadboard zu kämpfen hat:


1. Checkt ob die Firmware aktuell ist (war sie wohl bei mir)
2. Checkt alle Verbindungen 100 mal, mindestens.
2a. Holt euch ein Multimeter zur Hand und messt alle Vcc Leitungen gegen 
alle                        GND Leitungen.
2b. Schließt ein Oszi an und prüft, ob alle Signale ankommen(und richtig 
ankommen).

Da lag bei mir wohl der Fehler - traut nichts, was ihr nicht selbst 
gebaut habt. Meine Verbindung zum Breadboard bei MOSI, MISO und SCK 
waren offensichtlich nicht 100% sicher. Darauf kam ich, als ich gesehen 
habe (wie oben erwähnt), dass nicht annähernd die Spannung am Füßchens 
des uC ankam, die anliegen sollte, der Ausschlag des Oszi war extrem 
gedämpft, irgendein Widerstand im Board anscheinend oder eben eine lose 
Verbindung... Man kann offensichtlich nicht genug messen. Habe es 
gelöst, indem ich den uC zusätzlich auf einen IC-Sockel gesteckt habe. 
Danke für eure Mühen und eure Tipps zur Schaltung - erspart mir sicher 
einige andere Probleme für später.

LG Nils

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.