Forum: Mikrocontroller und Digitale Elektronik Bierdeckelprogrammer Firmware flashen


von Dominik (Gast)


Lesenswert?

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.

von Ingo W. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

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: make                same as make help
2
       make help           same as make
3
       make main.hex       create main.hex
4
       make clean          remove redundant data
5
       make disasm         disasm main
6
       make flash          upload main.hex into flash
7
       make fuses          program fuses
8
       make avrdude        test avrdude
9
Current values:
10
       TARGET=attiny85
11
       LFUSE=0xf1
12
       HFUSE=0x5d
13
       CLOCK=12000000
14
       ISP=usbasp
15
       PORT=/dev/usb/ttyUSB0 -B 6 -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.

von Dominik (Gast)


Lesenswert?

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?

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

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.

von Dominik B. (dominikban)


Lesenswert?

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

von isnah (Gast)


Lesenswert?

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)

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

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

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

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.

von isnah (Gast)


Lesenswert?

@ Markus Weber lies das Makefile genau:
Aus was will objcopy die Hex-Datei erzeugen - darum:"*** No rule to make 
target `all"

von isnah (Gast)


Lesenswert?

Dominik vergleiche mal das Schaltbild aus:
http://www.mikrocontroller.net/articles/Bierdeckel-Programmer
mit dem Schema aus:
http://www.simpleavr.com/avr/vusbtiny
aus welcher das File "vusbtiny.hex" her stammt!
Also überlegt dir ob du nicht lieber aus der source "guloprog" das 
Hex-File erzeugen willst, bevor du den Reset an deinem Tiny 
"wegprogrammierst"?

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

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.

von Dominik B. (dominikban)


Lesenswert?

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

von Dominik B. (dominikban)


Lesenswert?

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.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

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...

von Dominik B. (dominikban)


Lesenswert?

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.

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.