Ich würde dieses kleine Projekt gerne nachbauen:
http://s-huehn.de/elektronik/klprojekte/akkutester/akkutester.htm
Brauche ich dafür zwingend den ATtiny13, den ich erst bestellen müsste,
oder geht das auch ohne irgendwelche Veränderungen mit einem ATtiny85
den ich hier habe?
Mit welcher Software brenne ich den ATtiny am besten? Bisher habe ich
kleine Projekte immer mit einem Arduino und der Arduino IDE auf den
ATtiny gebrannt. Aber in diesem Fall müssen wohl irgendwelche Fuses
verändert werden. Mit der Arduino IDE wüsste ich nicht, wie ich das
anstellen sollte.
Kann ich mit der anderen Software weiterhin den Arduino als Brenner
nutzen? Oder nimmt man dafür einen USB-TTL Konverter?
Frank
Hallo Frank,
einem Programmierer ist doch egal welcher µC man da hat, man nimmt das C
Programm und passt es sich einem Bedarf an. Oder ?
Der Autor schreibt:
"Die aktuelle Software v1.00 vom 01.11.2014 für den ATtiny13A des
Akku-Testers enthält den kommentierten Quelltext in C, das fertige
Hex-File, das Make-File und einige andere Dateien. Bei der
Programmierung sind unbedingt die Fuse-Bits zu beachten. Diese müssen
folgendermaßen gesetzt werden:"
http://s-huehn.de/elektronik/klprojekte/akkutester/akkutester-attiny13a-v100.zip
Frank Saner schrieb:> Mit welcher Software
avrdude. Das kann selbstverständlich auch die Fuses setzen (auf den
Arduino lädst Du vorher das "Arduino-As-ISP"-Programm und legst dann die
Reset-Leitung zeitweilig lahm (siehe Tutorials), dann ist das ein
vollwertiger ISP-Programmer.
Für alles was in der Arduino-"IDE" nicht geht nimmst Du avrdude an der
Kommandozeile, an der Kommandozeile entfaltet avrdude seine wirkliche
Kraft.
___
PS: Ich habe bei Arduino-"IDE" das "IDE" in Anführungszeichen gesetzt
denn das ist keine IDE sondern eine Krankheit. Und das sage ich nicht
etwa weil ich das Arduino-Konzept ablehnen würde (es hat seine
Daseinsberechtigung) sondern weil die Umsetzung einfach beschissen hoch
3 ist, die haben ein Monster-C++-Framework erschaffen, unzähliche
Beispielanwendungen dafür, mehrere von den Chinesen als kopierwürdig(!)
befundene Hardwaredesigns herausgebracht und dann haben sie 99% vor dem
Ziel aufgehört und vergessen eine vernünftige PC-Anwendung mitzulieferen
und stattdesssen an einem Nachmittag mal eben schnell diese halbherzige
Attrappe zusammengekloppt. Wirklich traurig.
Der ATtiny85 ist Pin-Kompatibel.
Aber die Architektur ist anders als beim ATtiny13.
Das HEX-File wird nicht funktionieren.
Der 13er taktet auch etwa schneller.
Das Programm ist aber sehr übersichtlich und sollte leicht für den 85er
anpassbar sein.
Auch eine Arduino-Portierung ist sicher möglich.
Ich habe mir einen ATtiny13 in der Nachbarschaft besorgt und möchte
diesen nun programmieren.
Aus meiner Kramkiste habe ich einen USB ISP Programmer herausgesucht. Er
sieht in etwa so aus, wie dieser hier:
http://www.ebay.de/itm/Neu-USB-ISP-USBASP-Programmiergerat-Programmierer-fur-Atmel-AVR-ATMega-51-ATTiny-/271784840180?pt=LH_DefaultDomain_77&hash=item3f47a38bf4
Den ATtiny habe ich ohne Widerstände, Kondensator und LED daran gemäß
diesem Plan angeschlossen:
http://www.sachsendreier.com/msw/projekte/blinksdings/bild3.png
Auf meinem Ubuntu habe ich wie empfohlen avrdude installiert. Da ich
kein großer Terminal-Fan bin, habe ich gemäß dieser Anleitung
http://forum.ubuntuusers.de/topic/installationsprobleme-avr8-burn-o-mat/
den Burn-o-mat als GUI installiert. Der läßt sich starten und ich habe
auch die beiden erwähnten Verzeichnisse geändert.
Nun komme ich aber nicht weiter. Ich weiß nicht, welchen der ganzen
USB-Ports, die dort zur Auswahl stehen, ich nehmen soll. Auch weiß ich
nicht, welchen der vielen Programmieradapter ich auswählen muss.
lsusb sagt:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 002: ID 0a5c:2110 Broadcom Corp. Bluetooth Controller
Bus 005 Device 003: ID 0483:2016 SGS Thomson Microelectronics
Fingerprint Reader
Bus 004 Device 005: ID 03eb:c8b4 Atmel Corp.
Ich hoffe ihr könnt mir weiter helfen.
edit:
..
.
evice [zhifengsoft USBHID] on usb-0000:00:1d.2-1/input0
[11228.864104] usb 4-1: USB disconnect, device number 4
[12553.424099] usb 4-1: new low-speed USB device number 5 using uhci_hcd
[12553.655987] generic-usb 0003:03EB:C8B4.0004: hiddev0,hidraw0: USB HID
v1.01 Device [zhifengsoft USBHID] on usb-0000:00:1d.2-1/input0
[12911.048576] usb 4-1: USB disconnect, device number 5
[13560.684067] usb 4-1: new low-speed USB device number 6 using uhci_hcd
[13560.915483] generic-usb 0003:03EB:C8B4.0005: hiddev0,hidraw0: USB HID
v1.01 Device [zhifengsoft USBHID] on usb-0000:00:1d.2-1/input0
wird ausgegeben, wenn ich
dmesg | grep usb
eingebe.
Das wird einer der vielen Programmer sein, die zum USBASP von Freund
Fischl kompatibel sind.
Eines ist sicher, der Programmer ist kein HID Device, sondern wird eher
das Dings unter Bus 004 Device 005 namens 'Atmel Corp.' sein.
Der Rest unter deinem Edit sind Mäuse, Tastaturen oder sonstige HID
Sachen. Bluetooth und Fingerprint sind anscheinend in deinem Notebook
verbaut.
Kleiner tip: Im Gegensatz zu lsusb erzeugt dmesg eine chronologisch
sortierte Ausgabe. Gerät anstecken, dmesg ausführen und dann siehst du
die gesuchten Informationen immer ganz unten am Ende der Ausgabe.
Stefan Us schrieb:> Kleiner tip: Im Gegensatz zu lsusb erzeugt dmesg eine chronologisch> sortierte Ausgabe. Gerät anstecken, dmesg ausführen und dann siehst du> die gesuchten Informationen immer ganz unten am Ende der Ausgabe.
Oder gleich
1
tail -f /var/log/kern.log
um die Meldungen des Kernels "live" anzusehen. Dann auch mit
menschen-lesbaren Timestamps. Sieht bei mir so aus:
1
Feb 27 10:41:51 alpha kernel: [ 758.845304] usb 3-6.4: new low-speed USB device number 7 using xhci_hcd
2
Feb 27 10:41:51 alpha kernel: [ 758.954254] usb 3-6.4: New USB device found, idVendor=16c0, idProduct=05dc
3
Feb 27 10:41:51 alpha kernel: [ 758.954257] usb 3-6.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
4
Feb 27 10:41:51 alpha kernel: [ 758.954258] usb 3-6.4: Product: USBasp
5
Feb 27 10:41:51 alpha kernel: [ 758.954259] usb 3-6.4: Manufacturer: www.fischl.de
Okay, das kann ich heute Abend probieren, aber wie heisst dann konkret
die Schnittstelle? Der Eintrag in den Settings müsste doch in der Art
//dev//.... lauten, oder?
Frank
edit: das soll nur ein Slash sein.
> aber wie heisst dann konkret die Schnittstelle?
Genau das wird ebenfalls im Kernel log (oder dmesg) protokolliert.
Wobei der USBasp allerdings nicht über einen virtuellen seriellen Port
angesprochen wird, sondern über die libusb.
Wenn du aber mal einen USB-UART Adapter einsteckst, wirst du sehen, dass
der serielle Port im Log genannt wird.
So sieht die Ausgabe aus:
Mar 1 07:43:00 frank-ThinkPad-R60 kernel: [17455.132073] usb 2-2: new
low-speed USB device number 2 using uhci_hcd
Mar 1 07:43:00 frank-ThinkPad-R60 kernel: [17455.364288] generic-usb
0003:03EB:C8B4.000B: hiddev0,hidraw0: USB HID v1.01 Device [zhifengsoft
USBHID] on usb-0000:00:1d.0-2/input0
Was genau soll ich nun im Feld "Port" eintragen?
Frank
Wenn das (wie abgebildet) ein USBasp Clone sein sollte, muß dieser
(meines Wissens nach)
vid=0x16c0 pid=0x5dc
besitzen !!!
Frank Saner schrieb:> lsusb sagt:>> Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub> Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub> Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub> Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub> Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub> Bus 005 Device 002: ID 0a5c:2110 Broadcom Corp. Bluetooth Controller> Bus 005 Device 003: ID 0483:2016 SGS Thomson Microelectronics> Fingerprint Reader> Bus 004 Device 005: ID 03eb:c8b4 Atmel Corp.
Hier wird "nur" Atmel Corp. (wohl gefakte Ausgabe) angezeigt !!
Gaaaaaanz sicher wird AVRDUDE (und andere Flashprogramme auch) diesen
NICHT als USBasp identifizieren.
Ergo: einen funktionierenden Flasher besorgen !
Ralph S. schrieb:> Wenn das (wie abgebildet) ein USBasp Clone sein sollte, muß dieser> (meines Wissens nach)>> vid=0x16c0 pid=0x5dc>> besitzen !!!
Korrekt!
lsusb liefert dann z.B.:
1
Bus 002 Device 002: ID ...
2
...
3
Bus 003 Device 009: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb
4
...
5
Bus 003 Device 001: ID ...
Das Gerät mit der benötigten vid und pid steckt bei meinem Rechner also
an Bus 3, Platz 9 (bei mir ist es ein USBasp vom Typ guloprog). Genauere
Infos liefert dann:
lsusb -s 3:9 -v
1
Bus 003 Device 009: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb
2
Device Descriptor:
3
...
4
idVendor 0x16c0 Van Ooijen Technische Informatica
5
idProduct 0x05dc shared ID for use with libusb
6
bcdDevice 1.04
7
iManufacturer 1 www.fischl.de
8
iProduct 2 USBasp
9
...
Die Einträge bei iManufaturer und iProduct müssen ebenfalls korrekt
sein, weil avrdude meines Wissens daran erkennt, ob es sich um einen
USBasp handelt.
Nach dem Lesen diverser Forenbeiträge zum Thema habe ich mir den Atmel
AVRISP MKII besorgt. Den ATtiny13 habe ich mit den 6 Pins 1:1 verbunden.
Weitere Bauteile habe ich bisher nicht verbaut.
Ich habe den AVRISP MKII nun als Gerät eingestellt. Aber ich weiß immer
noch nicht, welchen Port ich nun nehmen muss.
tail -f /var/log/kern.log sagt (nachdem ich ihn rausgezogen und wieder
angesteckt habe):
Mar 1 14:43:10 frank-ThinkPad-R60 kernel: [22701.592128] usb 2-1: USB
disconnect, device number 3
Mar 1 14:43:46 frank-ThinkPad-R60 kernel: [22737.616174] usb 2-1: new
full-speed USB device number 4 using uhci_hcd
lsusb sagt dazu:
Bus 002 Device 005: ID 03eb:2104 Atmel Corp. AVR ISP mkII
lsusb -s 2:5 -v sagt dann:
Bus 002 Device 005: ID 03eb:2104 Atmel Corp. AVR ISP mkII
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 16
idVendor 0x03eb Atmel Corp.
idProduct 0x2104 AVR ISP mkII
bcdDevice 2.00
iManufacturer 1
iProduct 2
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Frank Saner schrieb:> Ich habe den AVRISP MKII nun als Gerät eingestellt. Aber ich weiß immer> noch nicht, welchen Port ich nun nehmen muss.
Gar keinen. Der geht nicht über seriell, der geht direkt über libusb.
Avrdude sollte den von selbst finden.
Irgend etwas muss aber doch eingetragen werden, oder nicht?
Wenn ich gar nichts eintrage und versuche, die Fuses auszulesen kommt
das hier:
/usr/bin/avrdude -C /etc/avrdude.conf -p t13 -P -c avrispmkII -U
hfuse:r:/tmp/hfuse6380501372374583931.hex:r -U
lfuse:r:/tmp/lfuse7835112631848880542.hex:r
avrdude: no port has been specified on the command line or the config
file
Specify a port using the -P option and try again
Frank
Als root auf der Konsole eingeben (damit es keine eventuellen
Schwierigkeiten mit den udev-Regeln gibt):
avrdude -c avrispmkII -p t13
Anmerkung: das -P NICHT eingeben da du keinen Port angibst
Das ... sollte als erstes mal die Signatur des Tinys lesen
Wenn das geht, solltest du auch die Fuses lesen können:
avrdude -c avrispmkII -p t13 -U lfuse:r:-:h -U hfuse:r:-:h
Klappt leider nicht :(
frank@frank-ThinkPad-R60:~$ sudo avrdude -c avrispmkII -p t13
[sudo] password for frank:
avrdude: ser_open(): can't set attributes for device "/dev/ttyS0":
Inappropriate ioctl for device
avrdude done. Thank you.
Ich habe zur Sicherheit den Rechner vorher neu gestartet.
Frank
Das klappt leider auch nicht.
frank@frank-ThinkPad-R60:~$ sudo avrdude -c avrispmkII -p t13 -P
/dev/ttyACM0
[sudo] password for frank:
avrdude: ser_open(): can't open device "/dev/ttyACM0": No such file or
directory
avrdude done. Thank you.
frank@frank-ThinkPad-R60:~$ sudo avrdude -c avrispmkII -p t13 -P
/dev/ttyUSB0
avrdude: ser_open(): can't open device "/dev/ttyUSB0": No such file or
directory
avrdude done. Thank you.
edit:
Als ich lsusb -s 2:5 -v eingegeben habe, stand in der zweiten Zeile:
Couldn't open device, some information will be missing
Könnte es etwas damit zu tun haben?
Frank Saner schrieb:>alph S. schrieb:>> Dann ... benötigt er eben doch den Port...>> entweder:>> avrdude -c avrispmkII -p t13 -P /dev/ttyACM0>> oder:>> avrdude -c avrispmkII -p t13 -P /dev/ttyUSB0> Das klappt leider auch nicht.
Klar. Ist ja auch falsch
Wenn man überhaupt einen Port angeben will (muß man bei USB-Geräten aber
nicht), dann heißt der Port "usb"
1
avrdude -c avrispmkII -P usb ...
> frank@frank-ThinkPad-R60:~$ sudo avrdude -c avrispmkII -p t13 -P> /dev/ttyACM0
Was soll das Theater mit sudo? Sieh lieber zu, daß du als User "frank"
Zugriff auf das Gerät bekommst.
> Als ich lsusb -s 2:5 -v eingegeben habe, stand in der zweiten Zeile:> Couldn't open device, some information will be missing
Das bedeutet, daß du als User "frank" keinen Zugriff auf das Gerät hast.
Schau dir mal an, mit welcher Gruppe dein Linux das USB-Gerät anlegt.
Bei mir ist der usbasp Gerät 6 an Bus 1:
1
~ $lsusb
2
...
3
Bus 001 Device 006: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb
4
...
5
6
~ $ls -l /dev/bus/usb/001/006
7
crw-rw---- 1 root plugdev 189, 5 Mar 1 19:11 /dev/bus/usb/001/006
Bei mir wird das Gerät mit der Gruppe "plugdev" (für _plug_able
_dev_ices) angelegt. Ich bin Mitglied dieser Gruppe:
1
~ $groups
2
axel lp dialout cdrom floppy audio dip video plugdev users netdev
Wenn du Glück hast, nimmt dein Linux schon eine generische Gruppe und du
mußt dich nur noch zu dieser Gruppe hinzufügen. Evtl. mußt du noch eine
udev-Regel anlegen, damit Linux das Gerät beim anstecken mit der
passenden Gruppe anlegt. Bei mir sieht das so aus:
Ach du je, jetzt wird es schwer Linuxisch. Nicht mein Spezialgebiet. Ich
hoffe Du hilfst mir etwas. Das hier habe ich bisher an Infos:
Bus 002 Device 004: ID 03eb:2104 Atmel Corp. AVR ISP mkII
frank@frank-ThinkPad-R60:~$ ls -l /dev/bus/usb/002/004
crw-rw-r-- 1 root root 189, 131 Mär 1 21:29 /dev/bus/usb/002/004
frank@frank-ThinkPad-R60:~$
Demnach darf nur root an das Gerät. Richtig? Wie ordne ich das Gerät
jetzt einer Gruppe zu, auf die auch frank Zugriff hat?
Für jemanden, der nicht so firm in den Linuxinterna ist, ist das eine
ganz schön schwierige Geburt. Aber hier habe ich etwas gefunden:
http://www.mikrocontroller.net/articles/AVRDUDE#Aufruf_unter_Linux_als_user_.28non-root.29
Statt "users" habe ich wie empfohlen, da es nicht kappte, "plugdev"
genommen. Als Port wie empfohlen "usb" - und siehe da, kaum stimmen die
Rechte, schon klappt es. Vielen Dank für den Tip!