Hallo zusammen,
Als Anfänger wollte ich mittels einen AVR-ISP-Stick erste Erfahrung
sammeln in der Welt der Mikrocontroller Programmierung. Allerdings habe
ich folgendes Problem.
ich benutze:
-Windows 7 x64
-AVR-ISP-Stick von ehajo.de
(www.ehajo.de/bausaetze/smd/79/avr-isp-stick) mit dem Treiber
"libusb-win32" (Version 1.2.6.0)
-Programmsoftware: AVRDUDE
-IDE: BASCOM-AVR IDE [2.0.7.5]
-Mikrocontroller: Atmega328-pu
den Schaltplan habe ich wie im Anhang aufgebaut und jedes Kabel nach
Fehlern untersucht, sodass beim Testen überall eine Spannung anlag.
Der AVR-ISP-Stick ist nach Installation des Treibers im Geräte-Manager
erkennbar und unter Eigenschaften als "Gerät funktioniert einwandfrei"
eingetragen.
in BASCOM habe ich unter <Options/Programmer> folgendes eingetragen:
-Programmer: "external Programmer"
-Program: "D:\WinAVR\bin\avrdude.exe"
-Parameter: "-c usbtiny -P usb -p m328p -U flash:w:{FILE}:i"
Als Fehlermeldung bekomme ich:
"avrdude.exe: Error: Could not find USBtiny device (0x1781/0xc9f)"
"avrdude.exe done. Thank you."
Mein selbstgeschriebendes Programm ist eine einfache Blinkschaltung
mittels LED. (siehe Anhang)
ich hoffe ihr könnt mir weiterhelfen, da ich leider keine weiteren
Ansatz finde dieses Problem zu lösen.
(als Student habe ich leider kein Geld für ein Entwicklerboard)
Ich danke für euer Verständnis und euren Rat.
Ekkie
Hallo,
wo ist das Bild vom Gerätemanager und den geladenen Treibern?
Welche Version von Avrdude hat Bascom da verwendet?
Hast Du mal die aktuelle Version von Avrdude geladen und direkt von der
Konsole, resp. CMD ausprobiert?
Warum fragst Du Hannes nicht direkt?
Was solltest Du mal machen.
Hallo ekkie,
was Frank L. meinte, alle Vcc und GND müssen angeschlossen werden und
müssen jeweils einen 100nF Kondensator erhalten.
Dann muss man noch den passenden ISP Takt, steht im Datenblatt als max.
1/4* CPU-Takt, eingestellt werden!
Hallo,
Vielen Dank für deine schnelle Antwort Karl.
ich weiß leider nicht wo ich nachsehen kann welche Version ich von
AVRDUDE nutze. Ich hoffe dir reicht diese Information
"avrdude_20100110".
In der Konsole habe ich die selben Parameter eingegeben wie bei Bascom.
Dort kommt die selbe Fehlermeldung.
Leider bin ich neu hier in diesem Forum und kenne die User noch nicht.
Wer ist denn Hannes?
Diesen Link: http://dokuwiki.ehajo.de/artikel:ispstick-avrdudeconf
hattest Du gesehen?
Der hat eine andere USB VID/PID Kombination, die vermutlich nur neueres
AVRDUDE mitbringt.
ekkie schrieb:> "avrdude.exe: Error: Could not find USBtiny device (0x1781/0xc9f)"
Neueres Avrdude müsste mit "-c ehajo-isp" den Programnmer erkennen. Lade
Dir mal 'ne aktuellere Version runter.
Den Link kannte ich noch nicht.
ich habe den Anweisung soweit gefolgt.
als Fehlermeldung in der Konsole bekomme ich nun:
1
syntax error at C:\WinAVR-20100110\bin\avrdude.conf:355
Das ist die Zeile in der der neue programmer definiert wurde
1
type = "usbtiny"
egal was ich an dem Skript vornehme oder ändere, ich bekomme immer einen
Syntaxfehler. Zusätzlich unterscheiden sich die Dateien avrdude.conf
(standard) und avrdude.conf (welche im Link zur Verfügung gestellt
wurde).
In der einen Datei wird alles in "" gesetzt, in der anderen nicht, warum
auch die Fehlermeldung auftritt.
Wo könnte der Fehler liegen und wie kann ich einen Kontakt mit dem
ISP-Stick von ehajo letztendlich aufnehmen ?
Außerdem, besitze ich nicht schon die neuste Version (WinAVR-20100110)?
ekkie
ok tut mir leid, dass wusste ich nicht.
ich hatte den Artikel hier auf mikrocontroller.net von WinAVR
durchgelesen und dort stand:
"Die aktuelle WinAVR Version ist derzeit (Stand 02/2016)
WinAVR-20100110."
ich dachte die "20100110" würden das Datum der letzten aktuellen Version
angeben.
Nun habe ich die Version 6.3 gedownloaded und entpackt. in dem Ordner
befinden sich viele Dateien mit den ich nicht umgehen kann. Die README
und INSTALL Dateien habe ich mir auch schon durchgelesen. Allerdings
verstehe ich nicht genau was genau durchzuführen ist.
Ich weiß ich fordere viel, aber könnte mir jemand nochmal erklären wie
ich von der gedownloadeten Datei "avrdude-6.3.tar.gz" bis zu der
installierten avrdude.exe komme und diese dann anwenden kann. Ich habe
wirklich kein Plan wie WinAVR funktioniert was man dort machen soll etc.
(ich habe mir auch schon die Wiki darüber durchgelesen, ist aber als
Einsteiger nicht gerade einfach alle Informationen einwandfrei
aufzunehmen)
Mittlerweile sitze ich schon seid Tagen an diesem Problem und verzweifle
langsam.
Vielen lieben Dank
Meik S. schrieb:> Ich weiß ich fordere viel, aber könnte mir jemand nochmal erklären wie> ich von der gedownloadeten Datei "avrdude-6.3.tar.gz" bis zu der> installierten avrdude.exe komme und diese dann anwenden kann
Du brauchst nicht die Datei "avrdude-6.3.tar.gz", das ist die
Linux-Version, sondern die Datei "avrdude-6.3-mingw32.zip", das ist die
Windows-Version.
Sieht für mich nach schlechter Verbindung zum µC aus. Mach mal LED's mit
Vorwiderstand an alle Signal-Leitungen (auch Reset, dort aber die LEd
zwischen VCC und dem Pin).
> avrdude.exe: Version 6.2, compiled on Nov 20 2015 at 23:33:37
Der AVRDUDE 6.3 kennt den ehajo-Stick schon, der 6.2 - den Du benutzt
hast - noch nicht.
Ich habe die VCC und GND Anschlüsse (Pin 7,8,20,22) kontrolliert und sie
geben eine Spannung aus sodass die LED überall leuchtet. Die LED
leuchtet allerdings nicht bei:
Vcc(Pin7) - 200 Ohm Widerstand - LED - PC6(Reset)
(ich hoffe das hab ich richtig so verstanden)
Mein Flachbandkabel ist 400mm lang + die Stecker auf dem Breadboard.
Als Kontrolle hab ich eine LED an der Stromversorgung angeschlossen, um
einen Wackelkontakt zu vermeiden.
(ps: Heißt das, dass die avrdude.exe soweit den ISP-Stick erkennt, aber
kein Kontakt zu den µC aufnehmen kann?)
Ich schrieb es oben schon:
Karl M. schrieb:> Dann muss man noch den passenden ISP Takt, steht im Datenblatt als max.> 1/4* CPU-Takt, eingestellt werden!
die Kondensatoren sitzen nun vor den VCC und GND (Pin 7,8,20,22).
Allerdings verstehe ich noch nicht die Funktion der Kondensatoren.
ich hoffe ich verstehe das richtig, ich stelle den ISP-Takt mittels "-i"
ein also z.B.
1
avrdude -c ehajo-isp -P usb -p m328p -i 100000
oder mit "-B" ?
Außerdem weiß ich nicht wo ich den CPU-Takt finde bzw. welcher jetzt
gemeint ist.
(Mit der Frequenz die ich im Beispiel eingestellt habe bekomme ich immer
noch die selbe Fehlermeldung, jedoch blinkt die LED nun einmalig:
"Vcc(Pin7) - 200 Ohm Widerstand - LED - PC6(Reset)")
> Vcc(Pin7) - 200 Ohm Widerstand - LED - PC6(Reset)> (ich hoffe das hab ich richtig so verstanden)
Beim Beginn des Programmiervorgangs muss der Programmer einen Reset
auslösen. Dieser dauert solange, wie der ganze Programmiervorgang, denn
AVR µC sind über die ISP Schnittstelle nur während des Reset
programmierbar.
Die LED's an den drei anderen Signalen (MISO, MOSI, SCK) müssen während
des Programmiervorgangs flackern. Ich stelle den Programmieradapter
mittels Parameter (-B200) gerne auf super-langsam, dann kann die LED's
besser flackern sehen. Allerdings unterstützen nicht alle
Programmieradapter diesen Parameter. Ob deiner das kann, weiß ich nicht.
Probiere es aus.
Wenn nur zwei von den drei LED's flackern (MISO bleibt inaktiv), dann
reagiert der µC nicht. Wenn nur eine flackert, dann ist dein
Programmieradapter eventuell defekt. Und wenn alle drei LED's inaktiv
bleiben, dann hast du wahrscheinlich eher ein Softwareproblem auf dem
PC.
die rote Lampe am ISP-Stick leuchtet beim bespielen des Programs auch.
Allerdings führt er nicht mein Programm aus. Das einzige was ich sehen
kann ist, dass die LED an PC5 (welche ja blinken sollte) ganz leicht
konstant dämmert.
Was mache ich hier falsch? (den 1/4 Takt für den ISP habe ich noch nicht
eingestellt)
Wenn ihr denkt, das ich zu viel frage und daher nicht genug selbst
anwenden kann, würde ich mich auch über eine Artikel-/ Buchempfehlung
freuen. Trotzdem wäre es toll diesen letzen Schritt noch zu meistern,
weil es mir eher um das Programmieren geht, was ich schon recht gut
kann.
Vielen Dank
Nach deinem obigen Zitat vom Bildschirm hast du den AVR nur ausgelesen,
aber keine Firmware hochgeladen. Hast du aber, oder?
Wenn du wissen willst, warum, deine LED nicht tut, was sie soll, dann
wäre es hilfreich, uns Einsicht in dein Programm zu geben. Ein schwaches
Glimmen lässt vermuten, dass der Pin nicht als Ausgang konfiguriert
wurde.
> den 1/4 Takt für den ISP habe ich noch nicht eingestellt
Da die Kommunikation nun funktioniert, ist das nicht mehr nötig.
> würde ich mich auch über eine Artikel-/ Buchempfehlung freuen
Ich habe Bascom selbst noch nicht benutzt, jedoch hatte ich bislang
mehrmals den Eindruck, dass die Dokumentation des Herstellers bereits
herausragend gut ist. Außerdem hat Conrad Elektronik jede Menge Bausätze
und Bücher zu dem Thema, die ebenfalls einen durchdachten Eindruck
erwecken.
Falls du mal C mit dieser Mikrocontroller Serie lernen möchtest:
http://stefanfrings.de/mikrocontroller_buch/index.html
Nils N. schrieb:> Auf jeden Fall ist deine LED falsch herum.
Nein, ist sie nicht. Es ist zwar mittlerweile unüblich LEDs in diese
Richtung anzuschließen, aber möglich. Sie leuchtet dann eben wenn der
Port Low ist.
Selbst heute wird in Vorlesungen noch gelehrt, dass LEDs üblicherweise
so angeschlossen werden.
Hans schrieb:> Nils N. schrieb:> Auf jeden Fall ist deine LED falsch herum.>> Nein, ist sie nicht. Es ist zwar mittlerweile unüblich LEDs in diese> Richtung anzuschließen, aber möglich. Sie leuchtet dann eben wenn der> Port Low ist.> Selbst heute wird in Vorlesungen noch gelehrt, dass LEDs üblicherweise> so angeschlossen werden.
Sie muss dann eben auf Masse angeschlossen werden
Ich habe mittlerweile den Fehler gefunden und das Programm läuft jetzt
endlich.
ich möchte mich nochmal herzlich bedanken für die hilfreichen Tipps und
Ratschläge. Ihr habt mir sehr geholfen!
(der Fehler mit der LED wurde auch schon längst behoben, trotzdem danke
für die Auskunft.)