Hallo,
Hab mir nun nach diesem Link hier:
http://www.mikrocontroller.net/articles/Bierdeckel-Programmer
einen Programmer mit Attiny85 gebaut.
Programmierkabel usw. hab ich alles fertig. Das letzte Problem ist
jetzt, dass ich keine Ahnung hab wie ich die Firmware compilliere.
Hab mir die Sources von guloprog runtergeladen und mein erster Anlauf
war das Makefile mit Programmer's Notepad zu öffnen und mit [WinAVR]Make
All die main.hex zu bekommen, die ich dann ja mit PonyProg auf den
Attiny85 flashen kann.
Bekomme leider beim MakeALL die Fehlermeldung:
> "make.exe" all
make.exe: *** No rule to make target `all'. Stop.
> Process Exit Code: 2> Time Taken: 00:00
Soweit ich das verstehe liegt das schlicht daran, dass WinAVR andere
Befehle in der Makefile hat, aber wie bzw. womit muss ich das Ding jetzt
kompillieren? Habe echt null Ahnung von C und will die Microkontroller
später erstmal mit Bascom programmieren.
Danke schonmal.
Dominik schrieb:> Soweit ich das verstehe liegt das schlicht daran, dass WinAVR andere> Befehle in der Makefile hat, aber wie bzw. womit muss ich das Ding jetzt> kompillieren?
der Abschnitt im dem (mir vorliegenden) makefile heisst "hex", also:
"make hex"
oder nur
"make"
hab mal eine fertige "hex"-Datei angehängt.
> die ich dann ja mit PonyProg auf den> Attiny85 flashen kann.
Wird wohl nichts werden, da Du die "ResetDisable"-Fuse setzen musst,
weil alle Beinchen vom Tiny benötigt werden, wirst Du wohl einen
HV-Programmer benötigen. Hab mir auch, extra für diesen Test, einen
AVR-Doper bauen müssen.
http://www.obdev.at/products/vusb/avrdoper.html
mfG vom ingo
Dominik schrieb:> einen Programmer mit Attiny85 gebaut.
Schön! :-)
> Bekomme leider beim MakeALL die Fehlermeldung:>> "make.exe" all> make.exe: *** No rule to make target `all'. Stop.
Wahrscheinlich kann die Make-Prozedur mit "all" nichts anfangen. Wenn du
"make" von der Kommandozeile aus startest und den Parameter "all"
weglässt, müsste ungefähr diese Ausgabe kommen:
1
Usage:makesameasmakehelp
2
makehelpsameasmake
3
makemain.hexcreatemain.hex
4
makecleanremoveredundantdata
5
makedisasmdisasmmain
6
makeflashuploadmain.hexintoflash
7
makefusesprogramfuses
8
makeavrdudetestavrdude
9
Currentvalues:
10
TARGET=attiny85
11
LFUSE=0xf1
12
HFUSE=0x5d
13
CLOCK=12000000
14
ISP=usbasp
15
PORT=/dev/usb/ttyUSB0-B6-F
Da in deinem Beispiel "make.exe" steht, nehme ich an, du verwendest
Windows. Das Projekt wurde zwar unter Linux entwickelt, aber wenn die
notwendigen Tools installiert sind, müsste es auch unter Windows
klappen.
Wahrscheinlich musst du aber zumindest die Zeile "PORT=" in der
Make-Datei anpassen.
Ingo Wendler schrieb:> Wird wohl nichts werden, da Du die "ResetDisable"-Fuse setzen musst,> weil alle Beinchen vom Tiny benötigt werden, wirst Du wohl einen> HV-Programmer benötigen.
Das geht auch ohne HV-Programmer. Das Reset-Disable-Fusebit kann man
auch mit einem "normalen" Programmer setzen, man kann es nur nicht
wieder zurücksetzen. Aber einmaliges Programmieren klappt - mehr will
man in diesem Fall meist auch nicht.
Danke ingo, aber ist V-USB nicht was anderes? Der guloprog Programmer
basiert doch auf dem USBASP von fischerl.
Markus Weber schrieb:> Wahrscheinlich kann die Make-Prozedur mit "all" nichts anfangen. Wenn du> "make" von der Kommandozeile aus startest und den Parameter "all"> weglässt, müsste ungefähr diese Ausgabe kommen:
Wie genau mache ich das? Hab von den Kommandozeilenbefehlen ungefährt
genauso wenig Erfahrung.
> Da in deinem Beispiel "make.exe" steht, nehme ich an, du verwendest> Windows. Das Projekt wurde zwar unter Linux entwickelt, aber wenn die> notwendigen Tools installiert sind, müsste es auch unter Windows> klappen.
Jap, extra Windows XP auf einem alten System aufgesetzt um den Attiny zu
programmieren. Verwendet werden soll das alles später mit einem Win7
System ohne Druckerport. Deswegend er ganze Aufwand.
Bei WinAVR sind AVR-GCC und AVR-libc dabei soweit ich weiß. Müssten die
richtige sein?
> Wahrscheinlich musst du aber zumindest die Zeile "PORT=" in der> Make-Datei anpassen.
Du meinst "PORT=/dev/usb/ttyUSB0 -B 6 -F" richtig?
Wird damit irgendwie der Usb port bzw. Treiber definiert? Was wäre das
Windows pendant hierzu? Mir ist das ja schon richtig unangenehm hier mit
so einem Halbwissen aufzukreuzen.:(
> Das geht auch ohne HV-Programmer. Das Reset-Disable-Fusebit kann man> auch mit einem "normalen" Programmer setzen, man kann es nur nicht> wieder zurücksetzen. Aber einmaliges Programmieren klappt - mehr will> man in diesem Fall meist auch nicht.
Danke für die Aufklärung, hatte mich schon erschreckt :D
Dabei waren noch AVRDUDE (startet nicht, muss wohl auch mit
Kommandozeile gestartet werden?), usbavp_driver (Treiber vermute ich mal
g), sed-3.59(keine Ahnung was das ist) und libusb.
Ich muss doch höchstwahrscheinlich was mit libusb machen, oder?
Dominik schrieb:> Wie genau mache ich das? Hab von den Kommandozeilenbefehlen ungefährt> genauso wenig Erfahrung.
Dann wirds nicht so einfach... :-(
Ich seh grad, du hast hier kein Account, ich kann dich nicht
anschreiben. Wollte mich grad um die Hex-Datei kümmern.
Allerdings ist es damit nicht getan, denn du müsstest dann noch die
korrekten Fusebits setzen. Das macht normalerweise auch das Makefile.
Gesagt getan :)
In diesem Makefile wird nur das Fusebit für den Reset pin gesetzt oder?
Die könnte ich doch im Zweifelsfall mit PonyProg setzen. Ist zwar ein
bisschen her dass ich das gemacht hab, aber vielleicht krieg ich das ja
noch hin :)
Ist wohl mein Fehler, seh jetzt erst, dass da "für Experten" steht. Ohne
Anleitung und C-Wissen komm ich da wohl nicht weit.
Danke für deine Hilfe
Ich hab schnell das Makefile der Linux-Version ausprobiert.
Ich nehme an bei winavr wird es die selben 2 Aufrufe sein:
make main.bin
make main.hex
(beide nacheinander aufrufen)
Dominik B. schrieb:> Gesagt getan :)
Gut. :-) Ich schreib dich nachher mal direkt an.
> In diesem Makefile wird nur das Fusebit für den Reset pin gesetzt oder?
Nein, es müssen auch andere Fuses gesetzt werden, vor allem die, die die
Taktgeschwindigkeit von 8 MHz auf 16 MHz umstellen.
So steht es in der Make-Datei:
HFUSE=0x5d
LFUSE=0xf1
isnah schrieb:> Ich hab schnell das Makefile der Linux-Version ausprobiert.> Ich nehme an bei winavr wird es die selben 2 Aufrufe sein:> make main.bin> make main.hex> (beide nacheinander aufrufen)
Ich glaube, das Erste ("main.bin") ist nicht erforderlich.
Mit "make flash" wird das Programm geflasht.
Und mit "make fuses" werden die Fuses gesetzt.
Immer vorausgesetzt, avrdude ist installiert und das Makefile ist an den
benutzten Programmer angepasst.
isnah schrieb:> Dominik vergleiche mal das Schaltbild aus:
Völlig richtig, die beiden Programmer unterscheiden sich in wesentlichen
Punkten:
- Die Anschlussbelegungen der Pins sind unterschiedlich, die Software
des vusbtiny passt daher nicht zum Bierdeckelprogrammer - die Software
des Bierdeckelprogrammers nicht zur Hardware des vusbtiny. Das hat
Gründe, zu denen ich gerne etwas sagen kann.
- Der vusbtiny besitzt im Gegensatz zum Bierdeckelprogrammer keine
Schutzwiderstände. Das heißt, wenn das Target falsch angeschlossen
wurde, kann es beim vusbtiny passieren, dass er abraucht.
- Der vusbtiny besitzt keine Signalwandlerfunktion (hier erklärt:
https://guloshop.de/shop/USB-TTL-ADC-PWM-Signalwandler:::10.html ). Das
ist natürlich nicht ausschlaggebend, wenn man programmieren will und
diese Zusatzfunktion nicht braucht.
Der Druckerport konnte die 5V nicht aufrecht erhalten, weswegen keine
Kommunikation zustande kam :D
Nun kann ich den Attiny zumindest (ab und zu) auslesen, aber beim
Programmieren zeigt er mir dann no device :(
Fusebits kann ich mit Ponyprog auch auslesen:
CKDIV8
SUT0
CKSEL3
CKSEL2
CKSEL0
Muss ich die Stromversorgung evtl. auch an VCC vom ISP Kabel
anschließen?
Hab den Tiny derzeit am PC Netzteil (5,2V] hängen, Masse von ISP Kabel,
Tiny und Netzteil verbunden und VCC am ISP Kabel leer gelassen. Die 5,2V
hängen also nur am Tiny.
100nF Kondensator ist dran. Lesen klappt trotzdem nur ab und zu mal und
schreiben garnicht.
Dominik B. schrieb:> Muss ich die Stromversorgung evtl. auch an VCC vom ISP Kabel> anschließen?
Der zu programmierende ATtiny85 benötigt eine Versorgungsspannung. Woher
er die bekommt, ist zweitrangig, sofern du alle GND-Leitungen
miteinander verbunden hast (PC und ATtiny85).
> Hab den Tiny derzeit am PC Netzteil (5,2V] hängen,
Welches Netzteil? Das, mit dem dein PC grad läuft?
Falls es ein externes Netzteil ist, achte unbedingt drauf, dass die
Gleichspannung auch geglättet ist...
Hier mal die Verdrahtung:
Parallel Attiny Netzteil
ISP-Prog. 85
VCC VCC(Pin8)---------VCC(+5,2V)
MOSI---------MOSI(Pin5)
MISO---------MISO(Pin6)
SCK----------SCK (Pin7)
RESET--------RESET(Pin1)
GND----------GND (Pin4)--------GND
GND-----------|
GND-----------|
GND-----------|
N.C.
Häng an dem gleichen Pc Netzeil mit dem der Pc gerade betrieben wird.