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
Hallo Frank, Zu den ISP Programmieradaptern kannst Du dich hier: # http://www.ehajo.de/baus%C3%A4tze/programmieradapter informieren.
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
> 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
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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
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. 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?
:
Bearbeitet durch User
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:
1 | ~ $cat /lib/udev/rules.d/59-usb_xl.rules |
2 | SUBSYSTEM!="usb", GOTO="usb_xl_end" |
3 | ACTION!="add", GOTO="usb_xl_end" |
4 | ENV{DEVTYPE}!="usb_device", GOTO="usb_xl_end" |
5 | |
6 | #usbasp |
7 | ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", MODE="0660", GROUP="plugdev" |
8 | #usbtiny |
9 | ATTR{idVendor}=="1781", ATTR{idProduct}=="0c9f", MODE="0660", GROUP="plugdev" |
10 | #pickit3 |
11 | ATTR{idVendor}=="04d8", ATTR{idProduct}=="900a", MODE="0660", GROUP="plugdev" |
12 | ... |
13 | |
14 | LABEL="usb_xl_end" |
muss das nicht -c avrisp2 und nicht -c avrispmkII heissen?
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.