Pokazywanie postów oznaczonych etykietą AVR. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą AVR. Pokaż wszystkie posty

9 stycznia 2014

ArduSat - satelita Open Source & Hardware zbudowany jak Arduino - AVR w kosmosie

Jak miło czyta się kolejne wątki twórczości Open Hardware, które zbliżają nas do kosmosu ;-)

Otóż, okazuje się, że są na świecie fanatycy (czyt. fascynaci) wysyłania sztucznych satelitów i do tego testują kod Open Source na orbicie. Cały pic polega na tym, że projekt ArduSat powstał na kickstarter.com i pozwoliłz założenia programistom umieszczać swój kod na orbicie - a to dla każdego GEEKa, fana sci-fi, marzyciela-elektronika ;) ... zaiste fenomenalny pomysł !!!

Za ok. $500 można zakupić moduł do zbudowania własnego satelity o otwartych źródłach !!!

Ta powyższa wiadomość wstrząsnęła mną dość konkretnie, bo w sumie konstrukcyjnie nie jest to jakiś zaawansowany twór (zawiera 16-cie mikrokontrolerów AVR t.j. używam\ słynny projekt Arduino. Można powiedzieć, że jest to wieloprocesorowy projekt kompatybilny z Arduino.

Autorzy założyli, że jeden mikrokontroler będzie odpowiedzialny za jeden typ pomiaru, co może okazać się dość racjonalne na orbicie. Dlatego, że przy tak zmiennych warunkach atmosferycznych, w szczególności temperaturowych krzem może zachowywać się dość nieprzewidywalnie. Rozdzielenie kompetencji na wiele mikrokontrolerów jednoukładowych (czyli wyspecjalizowanych procesorów z przetwornikami w środku) zapewni utrate jednego pomiaru, jeśli zawiedzie procesor a nie 16-tu, gdyby wszystko było mierzone jednym kontrolerem. Oczywiście, jest też niezbędny nadzorca, który został tam zainstalowany i pełni rolę watchdoga oraz spina magistralę danych modułu.

Dla miłośników areonautyki i startów rakiet załączam pełnometrażowy dokument, który pokazuje umieszczenie ArduSat na orbicie :-) Przyjemnego oglądania i rozmyślania... byćmoże to Wy wpadniecie na kolejny takiej skali pomysł użycia popularnych 8-bitowych procesorów w wielkim eksperymencie

Linki:
* Ardusat access to a satellite in space for as little as 350

16 października 2010

Soft OpenSource do prototypu robota - porady techniczne przy budowaniu amatorskich robotów z Arduino

Konstrukcja robota i sposób jego programowania obejmuje szereg dokumentacji i procedur. Zebrałem kilka myśli na temat tych zagadnień. Nic, co jest przedstawione tutaj jest wprost niezbędne, ale możliwe, że zaciekawie tych, którzy chcą zbudować od zera robota. W tym wpisie zainspirowałem się materiałami z GitHub oraz licznymi forami na temat budowy robotów.

Jak zacząć z konstrukcją robota ?

Robot składa się z zestawu elementów mechanicznych oraz elektronicznych, które działają zgodnie z napisanym programem. Niektóre elementy są wykonane na wymiarm do tego celu często wykorzystywany jest program QCad lub AutoCAD. Czasami wystarczający jest dla nas edytor wektorowy Inkscape, dlatego że jest prostszy w użyciu niżeli jakiekolwiek narzędzie CAD. Co ciekawe posiada też eksporty do GCODE, aby dokonać frezowania na podłączonej do komputera maszynie CNC.




Warto wesprzeć się wiedzą z zajęć praktyczno-technicznych na temat obsługi narzędzi ręcznych. Nie wszystko musimy wykonać na drukarce 3D lub na ploterze CNC. Jest to oczywiście udogodnienie dla każdego inżyniera, kiedy projekt przygotowany w oprogramowaniu CAD wygeneruje dla nas dokumentację produkcyjną CAM. Mając dane dla obrabiarki numerycznej o wektorach cięcia lub wiercenia np: w formacie Gerber lub GCODE jesteśmy w stanie zlecić prace mechaniczne firmie zewnętrznej na wybranych wcześniej materiale (np: plexi, sklejka, aluminium, ). Dokłądność wykonanie mechanicznych części zostanie zagwarantowana przez firmę wykonującą frezowanie, cięcie, wiercenie. I tutaj dochodzimy do dość ważnego szczególu - jakość wykoniania części mechanicznych ma znaczenie.
Okazuje się bowiem, że każde przesunięcie, nieprecyzyjne wykonania w robotach np: jeżdżących stanowi problem w postaci poprawnej jazdy po linii prostej. Często też drgania z silników przenoszą się na obudowe i może się okazać, że np: przy zakręcaniu nasz robot niedeterministycznie jeżdżi lub montaż zasilania nie będzie właściwy. Z powyższych podowód często przed złożeniem fizycznych części robota musimy sprawdzić ich dopasowanie, precyzję i jakość. Często używam pilnika ew. papieru ściernego, aby obrobić delikatnie obudowę bazową robota i zapewnić sprawniejsze pasowanie składanych elementów, złącz, źrub oraz łożysk.
Oczywiście wiele projektów robotów raz z dokładnymi wzorami do frezowania jest dostępnych na licencji GPL lub Creative Commons, co wiele ułatwia ludziom, którzy chcą przeskoczyć fazę przygotowania mechanicznych podzespołów robota.

Modelownie robota w programie 3D

Od wielu lat projektanci robotów zyskują coraz więcej narzędzi do wsparcia ich pracy i czcęsto też pasji. Jedną z wielu aplikacji do projektowania robotów niewątpliwie jest mój ulubiony Blender. Możemy zamodelować robota w trzecch wymiarach, postawić go w świecie wirtualnym używając wbudowanego w Blendera silnika fizyki i spowodować, że będzie działał, głównie dzięki temu, że w Blenderze mamy możliwość programowania logiki, akcji w języku Python. Daje nam to niesamowite możliwość przetestowania naszego robota o fizycznych wymiarach i masie w piaskownicy (Sandbox) bez ruszania się od tego narzędzia projektowego. To co symulujemy sobie w programie 3D na pewno oszczędzi naszego czasu na wielokrotnyc próbach i błędach.

Metoda prób i błędów - rzeczywista ścieżka w innowacji

Uważam, że to jest najważniejsza część w procesie tworzenia robotów. Jest to naturalna metoda pracy w każdej innowacji, wynalazku i projekcie o dużym poziomie skomplikowania. Musisz posiadać determinację i wierzyć w swoje możliwości rozwoju w wielu dziedzinach: mechanika, konstrukcje, automatyka, elektronika, programowanie, algorytmika. Jest też taka opcja, że znajdziesz drużynę i razem wspólnie osiągniecie sukces w budownie robota i byćmoże wystartujecie w jednym z wielu konkursów robotycznych. Do tego momentu musisz wiedzieć, że każdy mały błąd i krok wstecz gwarantuje przy odpowiedniej determinacji duży sukcecs w przyszłości.

NIe wstydź się swojego robotycznego pająka

Często też mamy do czynienia z sytuacją, że robimy coś do szuflady. Jest to sytuacja dość niekorzystna, gdyż nie mamy okazji zestawić swojego dzieła z naturalnym krytycyzmem osoby spoza żyjącej w naszym mózgu wizji :-) Polecam Wam, aby oddać swoją zabawkę robotyczną na jedną godzinę dziecku porzyczyć do zabawy innemu koledze. Na pewno wnioski i spostrzeżenia będą na tyle istotne, że zainspiruje nas to do budowania kolejnej wersji naszego "pająka" - mam tutaj na myśli robota, któremu zwisają kable, nie do końca dokręconego, nie zupełnie skończonego, ale wykonanego własnymi rękami. I właśnie to się liczy najbardziej, że udało Wam się osiągnąć kolejny stopień wtajemniczenia i dajecie sobie radę z problemami technicznymi. Tak rodzą się inżynierowie :-)

Napędy, sterowniki silników i zasilanie

Każdy konstruując robota chciałby posiadać uniwersalny napęd oraz elektronikę do niego. Oczywiście nie jest to takie oczywiste, że każdy napęd w robocie można nazwać dedykowanym i tylko w robotach amatorskich możemy sobie ze względów edukacyjnych pozwolić na takie uproszczenia. Dlaczego tak jest, że napędy zależą od zastosowania robota? Otóż, każdy robot ma swoje przeznaczenie w przemysle, czy produkcji. Nie jesteśmy przez to w stanie wytworzyć uniwersalnego napędu o jednej ekstra małej masie, bo robot spawalniczy potrzebuje innego napędu oraz przyspieszenia niżeli robot jeżdżący po planecie Mars we własnym dedykowanym pojeżdzie. INnego typu napęd będzie miał robot latający np: drone niżeli robot mieszający produkty spożywcze. Każdy z powyższych przykładów posiada swoje specyficzne cechy napędu, a co za tym idzie specyficzne sterowniki.
Budując napęd amatorskiego robota możemy wybrać silnik: DC (z przekładnią, enkoderem lub bez nich), krokowy, serwomechanizm z obrotem 260 stopni. Ten wybór zależy od ceny i rozmiarów oczywiście, bo czasami budując microsumo lub minisumo musimy zwrócić szczegółną uwaŋ na wybór napędu i zasilania, gdyż w rozgrywkach sumo robotów mamy ograniczenia regulaminowe

Na szczęście budując prototyp prostego robota na rynku dla celów amatorskich mamy dostęp do wielu płytek sterowników silników DC oraz krokowych. Dodatkowo silniki są dostępne w tak wielu opcjach, że wybór jest bardzo elastyczny.
Myślę, że jest taka drobna rzecz, która nam zawsze przemyka przy budownie robotów jak grubość osi silnika. Wiele razy dzięsiąte części militetra w wyliczonym otworze i odpowiedniej osi silnika spowodowały w moich prototypach robotów, że koło jest zbyt słabo osadzone i wpada w wiracje. Następstwem tego są wibracje na kołach, czyli robot zjeżdża delikatnie z trasy. Oczywiście można to skorygować programowo i wręcz należy, ale jeśli uczymy się budowania robotów, to każda linika nadmiarowego kodu w pierwszych programach jest zbędna i szczególnie kiedy można jej uniknąć zapewniając dobre dopasowanie mechaniki :-)
Istotna pułapka to również prąd silnika oraz max. prąd sterownika, bo kiedy robot nasz zatrzymuje się na przeszkodzie i nie mamy obsługi pomiaru prądu na silnikach oprogramowanej, wówczas może dojść do przegrzania i przepalenia silników ew. sterowników. Uwaga! W warunkach domowych łatwo przez nieuwagę doprowadzić do pożaru, przed czym przestrzegam. Każdy sterownik napędu powinien posiadać zabezpieczenie prądowe i powinniśmy być świadomi mocy naszych silników oraz dostosować grubość przewodów do prądu przepływającego pezez nie, aby uniknąć wypadku.
Ważne również jest użycie akumulatorów lub baterii, których moc i masa jest dopasowania do naszej konstrukcji. Musicie uważać też na akumultory Li-Ion oraz Li-Po, bo ich niewłaśniwe użycie grozi wybuchem lub zagrożeniem dla Wazsego żdrowia. Dobierajcie baterie też do warunków np: nie wiele systemów zasiania akceptuje wodę lub wilgoć, co też warto uwzględnić Co do softu ułatwiającego projektoranie zasilania i napędów to mamy kilka opcji w OPenSource, oto lista kilku.
Lista aplikacji dla elektroników:

Elektronika

Powyżej umieszczone programy wspierają nas w budowie elektroniki robota, nie tylko napędów, więc jak widać w świecie OpenSource mamy sporo gotowego softu dla projektów elektroniki w naszych robotach.
Zasadniczo nie mogę pominąć fraktu, czym zajmuje sie elektronika w robocie. Otóż jest to serce zasialania i sterownia robota, więc jest niezbędna i od jakości jej wykonania zależy powtarzalność zachowania robota, czyli gwarancja dobrej zabawy z naszym robotem.
O co chodzi w tej jakości ? Zasadniczo w tym, aby płytka PCB była wykonana dość praktycznie ew. stosujemy uniersalną płytką i gwarantujemy, że nie będzie zimnych lutów, czyli przerw w połączeniach lutowanychc. Dodatkowo warto zapewnić kondensator elektrolityczny przy każdym rozgałęzieniu zasilania, co zapewni filtrowanie skoków napięcia i zakłuceń, gdy nie mamy odrębnego zasilania do części napędowej i części cyfrowej. Bo zakładam, że posiadamy jedno źródło zasialani bez skomplikowanych konwerterów napięć.
Praktyczną opcją jest użycie Arduino lub jego klonów z gotowymi sterownikami silników, które posiadają już wspomniane zabezpieczenia i nie musimy się tym przejmować.

Programowanie + mikrokontrolery jednoukładowe AVR z użyciem Arduino

Oczywiście implementując algorytmu działania naszego robota niezbędne jest dla nas środowisko. Oto mój sprawdzony w boju zestaw bibliotek, które pomagają mi na budowanie softu dla mikrokontrolerów jednoukładowych AVR i zapewniają kompilację bez posiadania dedykowanego środowiska. Moje repozytorium na github.com z frameworkiem do zaabawy z AVR

Powyżej linkowany zestaw narzędzi uratował mnie, kiedy nie było jeszcze Arduino. Natomiast obecnie mamy świetnie rozwijający się projekt środowiska IDE do programowania mikrokontrolerów AVR, który ma szansę stac się wygodnym lkikalnym standardem i tego temu projektowi OpenSource życzę. Zachęcam Was do zgłębiana wiedzy o aplikacji Arduino oraz platformie Arduiono, gdyż jest to moim zdaniem najprostsze środowisko do nauki programowania sterowników robotów.
Społeczność Arduino IDE stale rozwija się i przybywają nowe bibliteki. Przykładem takiej biblioteki, którą przetestowałem mogę polecić do budoway amatorskiego robota jest pakiet Motor dla Arduino IDE, który pozwala nam na sterownie niezależnie dowolną ilośćią silników, poprzez sterownik fizyczny oparty o uład scalony L293.

16 lutego 2009

Microkontrolery AVR i Arduino - prostota i fenomen otwartego sprzętu

Nagła potrzeba poznania kilku prezentacji spowodowała wystąpienie owego artykułu w szeregi moich dodatkowych zajęć i odświeżenie tematyki mikrokontrolerów jednoukładowych AVR. Ostatnio moim celem jest zbudowanie sobie własnego modułu Arduino i przetestowanie go we współpracy z Linuxem. Cel szczytny, czasu mało, do tego w kraju nabyć gotowca lub chociaż PCB nie da się :) więc lutownica + laminat + wytrawianie obwodów drukowanych moim przyjacielem ... po walkach postaram się zaprezentować coś w rodzaju wrażeń z budowy mojego Arduino na początek z mikrokontrolerem AVR ATmega8 + port szeregowy (ot takie wspomnienie - wiem, że USB jest dziś standardem). Argumentem jest najpewniej chęć używania rozwiązań OpenHardware i OpenSource ze wsparciem społeczności ludzi zainteresowanych rozwojem w kierunku tworzenia robotów i innych coraz popularniejszych tworów współczesności. Jednym słowem mam dość tworzenia od zera API do kolejnego systemu uP, testowanie, kodowanie swojego systemu osadzonego, obsługi IO, etc ... koniec z odkrywaniem już odkrytego ;-)

Aha, może nie każdy sobie zdaje sprawę, ale w takim telefonie komórkowym temat systemów wbudowanych oraz mikrokontrolerów przewija się w każdym calu. Android, Symbian i wiele innych systemów osadzonych to przykłady pokrewnych tematów. Same hasła powinny wyjaśnić rangę budowy jakże prostego i taniego systemu dydaktycznego, od którego te szczytne hasła wyrosły. Niebawem zaprezentuję efekry prac, tymczasem zmykam do lutowania :-)

Oto prezentacje, które warto zobaczyć:





20 listopada 2008

Arduino, Freeduino, Pyduino - szybki start z mikrokontrolerami AVR

Filozofia OpenSource dociera zarówno do twórców software, jak również hardware. W ukryte zakamarki elektroniki, do jednostek arytmetyczno-logicznych, pamięci Flash, do mikrosystemów, do wszystkich zakątków, które możemy sobie wyobrazić. Skoro telefon może być na otwartym oprogramowaniu, to dlaczego nie pralka, lodówka, odkurzacz, roboty przemysłowe :-) Dla ułatwienia zabawy z mikrokontrolerami dziś polecam gotowy, do nabycia lub samodzielnego montażu zestaw Arduino z interfejsami USB lub RS-232







oraz jego otwarty pierwowzór Freeduino






Dla lubiących własne przygody z lutownicą Arduino w działaniu - wesołe wprowadzenie do tematu:




Przykładowe zabawki ;)









Kontrolowanie Arduino zdalnie z formularza HTML






Temat zainteresował mnie otwartym podejściem do nauki programowania urządzeń wbudowanych. Wszystkie schematy oraz informacje konstrukcyjne są dostępne za darmo :-). Tani hardware oraz rozbudowane podręcznik i biblioteki w językach C, Java i Python do pobrania z sieci. Bogactwem otwartych rozwiązań jest także prostota użycia. Atutem jednakże są niezliczone przykłady potwierdzające możliwości modułu. A dla chcących połączyć swój system mikroprocesorowy z interfejsem 3D systemu animacyjnego Blender również się coś znajdzie :)

Polecam poniższe materiały edukacyjne:
The Arduino Duemilanove ("2009") is a microcontroller board based on the ATmega168
Arduino Board - Serial Interface
Development Tools
Installing Arduino on Linux
Install Arduino on Ubuntu Linux
SimpleMessageSystem - library for Arduino 0004 and up
Arduino and Linux TTY

Arduino Pulse Width Modulation

Arduino-Python 4-Axis Servo Control

Pyduino

Arduino-Python bridge

Python with Arduino

Board Setup and Configuration

Joystick Control of a Servo

Arduino Noise Maker

Serial communication

http://www.solarbotics.com/products/28920/


Linki dla ciekawskich :-)
PHP Library for controlling a 633(serial) LCD & Keypad

http://www.varesano.net/blog/fabio/serial+rs232+connections+python

Python serial tty console application

Controlling GPIB, RS232, and USB instruments - Python GPIB etc. support with PyVISA

http://pyvisa.sourceforge.net/pyvisa.pdf

If you need to control gpib/visa-instruments, pyvLab could be the right thing for you.

Blog z niebanalnymi projektami elektronicznymi

27 maja 2008

Programowanie mikrokontrolerow AVR + AVR-Doper + USB + Linux + UBUNTU

Sesja z konfigurowana programatora AVR pod Lnuxem



$ sudo dmesg

...

[ 56.193165] NET: Registered protocol family 10
[ 56.193313] lo: Disabled Privacy Extensions
[ 56.193520] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 66.331696] nas0: no IPv6 routers present
[ 851.674370] usb 2-1: new low speed USB device using ohci_hcd and address 2
[ 851.912107] usb 2-1: configuration #1 chosen from 1 choice
[ 852.180868] cdc_acm 2-1:1.0: ttyACM0: USB ACM device
[ 852.189322] usbcore: registered new interface driver cdc_acm
[ 852.189896] /build/buildd/linux-source-2.6.22-2.6.22/drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters
[ 863.085900] usb 2-1: USB disconnect, address 2
[ 910.664830] usb 2-1: new low speed USB device using ohci_hcd and address 3
[ 910.902548] usb 2-1: configuration #1 chosen from 1 choice
[ 910.906498] cdc_acm 2-1:1.0: ttyACM0: USB ACM device
$ avrdude -?
$ sudo ls /dev/ttyACM0
/dev/ttyACM0
$ sudo less /dev/ttyACM0
/dev/ttyACM0 is not a regular file (use -f to see it)
$ sudo less -f /dev/ttyACM0
$ avrdude -m t2313 -p /dev/ttyACM0
avrdude: invalid option -- m
Usage: avrdude [options]
Options:
-p Required. Specify AVR device.
-b Override RS-232 baud rate.
-B Specify JTAG/STK500v2 bit clock period (us).
-C Specify location of configuration file.
-c Specify programmer type.
-D Disable auto erase for flash memory
-i ISP Clock Delay [in microseconds]
-P Specify connection port.
-F Override invalid signature check.
-e Perform a chip erase.
-O Perform RC oscillator calibration (see AVR053).
-U :r|w|v:[:format]
Memory operation specification.
Multiple -U options are allowed, each request
is performed in the order specified.
-n Do not write anything to the device.
-V Do not verify.
-u Disable safemode, default when running from a script.
-s Silent safemode operation, will not ask you if
fuses should be changed back.
-t Enter terminal mode.
-E [,] List programmer exit specifications.
-y Count # erase cycles in EEPROM.
-Y Initialize erase cycle # in EEPROM.
-v Verbose output. -v -v for more.
-q Quell progress output. -q -q for less.
-? Display this usage.

avrdude project:
$ avrdude -m t2313 -p /dev/ttyACM0 -c usbasp
avrdude: invalid option -- m
Usage: avrdude [options]
Options:
-p Required. Specify AVR device.
-b Override RS-232 baud rate.
-B Specify JTAG/STK500v2 bit clock period (us).
-C Specify location of configuration file.
-c Specify programmer type.
-D Disable auto erase for flash memory
-i ISP Clock Delay [in microseconds]
-P Specify connection port.
-F Override invalid signature check.
-e Perform a chip erase.
-O Perform RC oscillator calibration (see AVR053).
-U :r|w|v:[:format]
Memory operation specification.
Multiple -U options are allowed, each request
is performed in the order specified.
-n Do not write anything to the device.
-V Do not verify.
-u Disable safemode, default when running from a script.
-s Silent safemode operation, will not ask you if
fuses should be changed back.
-t Enter terminal mode.
-E [,] List programmer exit specifications.
-y Count # erase cycles in EEPROM.
-Y Initialize erase cycle # in EEPROM.
-v Verbose output. -v -v for more.
-q Quell progress output. -q -q for less.
-? Display this usage.

avrdude project:
$ avrdude -m t2313 -P /dev/ttyACM0 -c usbasp
avrdude: invalid option -- m
Usage: avrdude [options]
Options:
-p Required. Specify AVR device.
-b Override RS-232 baud rate.
-B Specify JTAG/STK500v2 bit clock period (us).
-C Specify location of configuration file.
-c Specify programmer type.
-D Disable auto erase for flash memory
-i ISP Clock Delay [in microseconds]
-P Specify connection port.
-F Override invalid signature check.
-e Perform a chip erase.
-O Perform RC oscillator calibration (see AVR053).
-U :r|w|v:[:format]
Memory operation specification.
Multiple -U options are allowed, each request
is performed in the order specified.
-n Do not write anything to the device.
-V Do not verify.
-u Disable safemode, default when running from a script.
-s Silent safemode operation, will not ask you if
fuses should be changed back.
-t Enter terminal mode.
-E [,] List programmer exit specifications.
-y Count # erase cycles in EEPROM.
-Y Initialize erase cycle # in EEPROM.
-v Verbose output. -v -v for more.
-q Quell progress output. -q -q for less.
-? Display this usage.

avrdude project:
$ qavrdude -m t2313 -P /dev/ttyACM0 -c usbasp


$ sudo mcedit /etc/udev/rules.d/

$ sudo mcedit /etc/udev/rules.d/65-programator.rules

$ sudo mcedit /etc/udev/rules.d/
00-init.rules 70-persistent-cd.rules
05-options.rules 70-persistent-net.rules
20-names.rules 75-cd-aliases-generator.rules
30-cdrom_id.rules 75-persistent-net-generator.rules
40-permissions.rules 80-programs.rules
45-fuse.rules 85-alsa.rules
45-hplip.rules 85-hdparm.rules
45-libgphoto2.rules 85-hplj10xx.rules
45-libsane.rules 85-hwclock.rules
50-xserver-xorg-input-wacom.rules 85-ifupdown.rules
55-hpmud.rules 85-pcmcia.rules
60-libpisock.rules 90-modprobe.rules
60-symlinks.rules 95-hal.rules
65-dmsetup.rules 99-udevmonitor.rules
65-persistent-input.rules libmtp.rules
65-persistent-storage.rules README
65-programator.rules
$ sudo mcedit /etc/udev/rules.d/6
60-libpisock.rules 65-dmsetup.rules 65-persistent-storage.rules
60-symlinks.rules 65-persistent-input.rules 65-programator.rules
$ sudo mcedit /etc/udev/rules.d/65-persistent-storage.rules

$ sudo mcedit /etc/udev/rules.d/65-programator.rules

$ avrdude -p m8 -c stk500v2 -P /dev/bus/usb/001/014
avrdude: ser_open(): can't open device "/dev/bus/usb/001/014": No such file or directory
$ avrdude -p m8 -c stk500v2 -P /dev/AVR
avrdude: ser_open(): can't open device "/dev/AVR": No such file or directory
$ avrdude -p m8 -c stk500v2 -P /dev/ttyACM0

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.


avrdude done. Thank you.

$ avrdude -p m8 -c stk500v2 -P /dev/ttyACM0

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.


avrdude done. Thank you.

$ avrdude -p t2313 -c stk500v2 -P /dev/ttyACM0

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.


avrdude done. Thank you.

$ avrdude -p t2313 -c stk500v2 -P /dev/ttyACM0 -F

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A

avrdude: safemode: Fuses OK

avrdude done. Thank you.

$ avrdude -p t2313 -c stk500v2 -P /dev/ttyACM0 -F
avrdude: stk500_2_ReceiveMessage(): timeout

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A

avrdude: safemode: Fuses OK

avrdude done. Thank you.

$ sudo avrdude -p t2313 -c stk500v2 -P /dev/ttyACM0
avrdude: stk500_2_ReceiveMessage(): timeout

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.


avrdude done. Thank you.

$ modprobe usbserial
FATAL: Error inserting usbserial (/lib/modules/2.6.22-15-generic/kernel/drivers/usb/serial/usbserial.ko): Operation not permitted
$ sudo modprobe usbserial
$ udevinfo /dev/ttyACM0
missing option
$ sudo udevinfo /dev/ttyACM0
missing option
$ sudo udevinfo /dev/ttyACM0
missing option
$ udevinfo -a -p $(udevinfo -q path -n udevinfo -a -p $(udevinfo -q path -n /dev/sdb1))
$ dprobe usbserial
bash: dprobe: polecenie nieodnalezione
$
$ dprobe usbserial
bash: dprobe: polecenie nieodnalezione
$ FATAL: Error inserting us
$ udevinfo -a -p $(udevinfo -q path -n /dev/ttyACM0)

Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/class/tty/ttyACM0':
KERNEL=="ttyACM0"
SUBSYSTEM=="tty"
DRIVER==""
ATTR{dev}=="166:0"

looking at parent device '/devices/pci0000:00/0000:00:03.1/usb2/2-1/2-1:1.0':
KERNELS=="2-1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="cdc_acm"
ATTRS{modalias}=="usb:v16C0p05E1d0100dc02dsc00dp00ic02isc02ip01"
ATTRS{bInterfaceProtocol}=="01"
ATTRS{bInterfaceSubClass}=="02"
ATTRS{bInterfaceClass}=="02"
ATTRS{bNumEndpoints}=="01"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bmCapabilities}=="2"

looking at parent device '/devices/pci0000:00/0000:00:03.1/usb2/2-1':
KERNELS=="2-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{product}=="AVR-Doper"
ATTRS{manufacturer}=="obdev.at"
ATTRS{quirks}=="0x0"
ATTRS{maxchild}=="0"
ATTRS{version}==" 1.01"
ATTRS{devnum}=="3"
ATTRS{busnum}=="2"
ATTRS{speed}=="1.5"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{bNumConfigurations}=="1"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceClass}=="02"
ATTRS{bcdDevice}=="0100"
ATTRS{idProduct}=="05e1"
ATTRS{idVendor}=="16c0"
ATTRS{bMaxPower}=="200mA"
ATTRS{bmAttributes}=="80"
ATTRS{bConfigurationValue}=="1"
ATTRS{bNumInterfaces}==" 2"
ATTRS{configuration}==""
ATTRS{dev}=="189:130"

looking at parent device '/devices/pci0000:00/0000:00:03.1/usb2':
KERNELS=="usb2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{serial}=="0000:00:03.1"
ATTRS{product}=="OHCI Host Controller"
ATTRS{manufacturer}=="Linux 2.6.22-15-generic ohci_hcd"
ATTRS{quirks}=="0x0"
ATTRS{maxchild}=="3"
ATTRS{version}==" 1.10"
ATTRS{devnum}=="1"
ATTRS{busnum}=="2"
ATTRS{speed}=="12"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bNumConfigurations}=="1"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceClass}=="09"
ATTRS{bcdDevice}=="0206"
ATTRS{idProduct}=="0000"
ATTRS{idVendor}=="0000"
ATTRS{bMaxPower}==" 0mA"
ATTRS{bmAttributes}=="e0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{configuration}==""
ATTRS{dev}=="189:128"

looking at parent device '/devices/pci0000:00/0000:00:03.1':
KERNELS=="0000:00:03.1"
SUBSYSTEMS=="pci"
DRIVERS=="ohci_hcd"
ATTRS{msi_bus}==""
ATTRS{broken_parity_status}=="0"
ATTRS{modalias}=="pci:v00001039d00007001sv00001849sd00007001bc0Csc03i10"
ATTRS{local_cpus}=="ff"
ATTRS{irq}=="17"
ATTRS{class}=="0x0c0310"
ATTRS{subsystem_device}=="0x7001"
ATTRS{subsystem_vendor}=="0x1849"
ATTRS{device}=="0x7001"
ATTRS{vendor}=="0x1039"

looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
ATTRS{uevent}==""

$ udevinfo -a -p $(udevinfo -q path -n /dev/ttyACM0)


$ avrdude -p t2313 -c avr_doper -P /dev/ttyACM0 -F -u -t | grep doper

avrdude: Can't find programmer id "avr_doper"

Valid programmers are:
dasa3 = serial port banging, reset=!dtr sck=rts mosi=txd miso=cts [/etc/avrdude.conf:770]
dasa = serial port banging, reset=rts sck=dtr mosi=txd miso=cts [/etc/avrdude.conf:757]
siprog = Lancos SI-Prog [/etc/avrdude.conf:744]
ponyser = design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts [/etc/avrdude.conf:731]
frank-stk200 = Frank STK200 [/etc/avrdude.conf:696]
blaster = Altera ByteBlaster [/etc/avrdude.conf:683]
ere-isp-avr = ERE ISP-AVR [/etc/avrdude.conf:673]
atisp = AT-ISP V1.1 programming cable for AVR-SDK1 from [/etc/avrdude.conf:663]
dapa = Direct AVR Parallel Access cable [/etc/avrdude.conf:652]
xil = Xilinx JTAG cable [/etc/avrdude.conf:639]
futurlec = Futurlec.com programming cable. [/etc/avrdude.conf:622]
abcmini = ABCmini Board, aka Dick Smith HOTCHIP [/etc/avrdude.conf:612]
picoweb = Picoweb Programming Cable, http://www.picoweb.net/ [/etc/avrdude.conf:602]
sp12 = Steve Bolt's Programmer [/etc/avrdude.conf:591]
alf = Nightshade ALF-PgmAVR, http://nightshade.homeip.net/ [/etc/avrdude.conf:575]
bascom = Bascom SAMPLE programming cable [/etc/avrdude.conf:565]
dt006 = Dontronics DT006 [/etc/avrdude.conf:555]
pony-stk200 = Pony Prog STK200 [/etc/avrdude.conf:543]
stk200 = STK200 [/etc/avrdude.conf:527]
bsd = Brian Dean's Programmer, http://www.bsdhome.com/avrdude/ [/etc/avrdude.conf:516]
pavr = Jason Kyle's pAVR Serial Programmer [/etc/avrdude.conf:508]
dragon_dw = Atmel AVR Dragon in debugWire mode [/etc/avrdude.conf:501]
dragon_hvsp = Atmel AVR Dragon in HVSP mode [/etc/avrdude.conf:493]
dragon_pp = Atmel AVR Dragon in PP mode [/etc/avrdude.conf:485]
dragon_isp = Atmel AVR Dragon in ISP mode [/etc/avrdude.conf:477]
dragon_jtag = Atmel AVR Dragon in JTAG mode [/etc/avrdude.conf:469]
jtag2dw = Atmel JTAG ICE mkII in debugWire mode [/etc/avrdude.conf:461]
jtag2isp = Atmel JTAG ICE mkII in ISP mode [/etc/avrdude.conf:453]
jtag2 = Atmel JTAG ICE mkII [/etc/avrdude.conf:445]
jtag2fast = Atmel JTAG ICE mkII [/etc/avrdude.conf:437]
jtag2slow = Atmel JTAG ICE mkII [/etc/avrdude.conf:429]
jtagmkII = Atmel JTAG ICE mkII [/etc/avrdude.conf:421]
jtag1slow = Atmel JTAG ICE (mkI) [/etc/avrdude.conf:414]
jtag1 = Atmel JTAG ICE (mkI) [/etc/avrdude.conf:406]
jtagmkI = Atmel JTAG ICE (mkI) [/etc/avrdude.conf:398]
avr911 = Atmel AppNote AVR911 AVROSP [/etc/avrdude.conf:392]
avr109 = Atmel AppNote AVR109 Boot Loader [/etc/avrdude.conf:386]
butterfly = Atmel Butterfly Development Board [/etc/avrdude.conf:380]
usbasp = USBasp, http://www.fischl.de/usbasp/ [/etc/avrdude.conf:374]
avr910 = Atmel Low Cost Serial Programmer [/etc/avrdude.conf:368]
stk500hvsp = Atmel STK500 V2 in high-voltage serial programming mode [/etc/avrdude.conf:362]
stk500pp = Atmel STK500 V2 in parallel programming mode [/etc/avrdude.conf:356]
stk500v2 = Atmel STK500 Version 2.x firmware [/etc/avrdude.conf:350]
stk500v1 = Atmel STK500 Version 1.x firmware [/etc/avrdude.conf:344]
stk500 = Atmel STK500 [/etc/avrdude.conf:338]
avrisp2 = Atmel AVR ISP mkII [/etc/avrdude.conf:328]
avrispmkII = Atmel AVR ISP mkII [/etc/avrdude.conf:322]
avrispv2 = Atmel AVR ISP V2 [/etc/avrdude.conf:316]
avrisp = Atmel AVR ISP [/etc/avrdude.conf:310]

$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR -F

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A

avrdude: safemode: Fuses OK

avrdude done. Thank you.

$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR -F
avrdude: stk500_2_ReceiveMessage(): timeout

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0xffffff
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A

avrdude: safemode: Fuses OK

avrdude done. Thank you.

$ sudo mcedit /etc/udev/rules.d/40-permissions.rules

$ sudo mcedit /etc/udev/rules.d/65-
65-dmsetup.rules 65-persistent-storage.rules
65-persistent-input.rules 65-programator.rules
$ sudo mcedit /etc/udev/rules.d/65-programator.rules

$ sudo cat /etc/udev/rules.d/65-programator.rules
KERNEL=="ttyACM0", NAME="AVR"


[ 4003.035799] usb 2-1: USB disconnect, address 5
[ 5253.262662] usb 2-1: new low speed USB device using ohci_hcd and address 6
[ 5253.500452] usb 2-1: configuration #1 chosen from 1 choice
[ 5253.504384] cdc_acm 2-1:1.0: ttyACM0: USB ACM device
[ 6125.721804] usb 2-1: USB disconnect, address 6
[ 6130.036372] usb 2-1: new low speed USB device using ohci_hcd and address 7
[ 6130.274132] usb 2-1: configuration #1 chosen from 1 choice
[ 6130.278060] cdc_acm 2-1:1.0: ttyACM0: USB ACM device
[ 6399.501693] usb 2-1: USB disconnect, address 7
[ 6404.684821] usb 2-1: new low speed USB device using ohci_hcd and address 8
[ 6404.922588] usb 2-1: configuration #1 chosen from 1 choice
[ 6404.926555] cdc_acm 2-1:1.0: ttyACM0: USB ACM device
$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A

avrdude: safemode: Fuses OK

avrdude done. Thank you.

$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F -t -u
avrdude: stk500_2_ReceiveMessage(): timeout

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A
avrdude> stk 4
>>> stk 4
avrdude: invalid command "stk"
avrdude> stv 4
>>> stv 4
avrdude: invalid command "stv"
avrdude> help
>>> help
Valid commands:

dump : dump memory : dump
read : alias for dump
write : write memory : write ...
erase : perform a chip erase
sig : display device signature bytes
part : display the current part information
send : send a raw command : send
parms : display adjustable parameters (STK500 only)
vtarg : set (STK500 only)
varef : set (STK500 only)
fosc : set (STK500 only)
sck : set (STK500 only)
help : help
? : help
quit : quit

Use the 'part' command to display valid memory types for use with the
'dump' and 'write' commands.

avrdude> read
>>> read
Usage: dump [ ]
avrdude> parms
>>> parms
Vtarget : 4.9 V
Varef : 0.0 V
Oscillator : 1.229 MHz
SCK period : 2.2 us
avrdude> parms
>>> parms
Vtarget : 4.9 V
Varef : 0.0 V
Oscillator : 1.229 MHz
SCK period : 2.2 us
avrdude> sck 1
>>> sck 1
avrdude: stk500v2_set_sck_period(): p = 1.0 us too small, using 1.1 us
avrdude> sck 2
>>> sck 2
avrdude> parms
>>> parms
Vtarget : 4.9 V
Varef : 0.0 V
Oscillator : 1.229 MHz
SCK period : 2.2 us
avrdude> sck 3
>>> sck 3
avrdude> parms
>>> parms
Vtarget : 4.9 V
Varef : 0.0 V
Oscillator : 1.229 MHz
SCK period : 3.3 us
avrdude> sck 4
>>> sck 4
avrdude> help
>>> help
Valid commands:

dump : dump memory : dump
read : alias for dump
write : write memory : write ...
erase : perform a chip erase
sig : display device signature bytes
part : display the current part information
send : send a raw command : send
parms : display adjustable parameters (STK500 only)
vtarg : set (STK500 only)
varef : set (STK500 only)
fosc : set (STK500 only)
sck : set (STK500 only)
help : help
? : help
quit : quit

Use the 'part' command to display valid memory types for use with the
'dump' and 'write' commands.

avrdude> quit
>>> quit

avrdude done. Thank you.

$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer
avrdude: stk500_2_ReceiveMessage(): timeout

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.


avrdude done. Thank you.

$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A

avrdude: safemode: Fuses OK

avrdude done. Thank you.

$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F -t -u
avrdude: stk500_2_ReceiveMessage(): timeout

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A
avrdude> parms
>>> parms
Vtarget : 4.9 V
Varef : 0.0 V
Oscillator : 1.229 MHz
SCK period : 4.4 us
avrdude> help
>>> help
Valid commands:

dump : dump memory : dump
read : alias for dump
write : write memory : write ...
erase : perform a chip erase
sig : display device signature bytes
part : display the current part information
send : send a raw command : send
parms : display adjustable parameters (STK500 only)
vtarg : set (STK500 only)
varef : set (STK500 only)
fosc : set (STK500 only)
sck : set (STK500 only)
help : help
? : help
quit : quit

Use the 'part' command to display valid memory types for use with the
'dump' and 'write' commands.

avrdude> fosc 12.0000
>>> fosc 12.0000
avrdude: stk500v2_set_fosc(): f = 12 Hz too low, 14 Hz min
avrdude (fosc): failed to set oscillator_frequency (rc = -1)
avrdude> fosc 12000000
>>> fosc 12000000
avrdude: stk500v2_set_fosc(): f = 12.000 MHz too high, using 3.686 MHz
avrdude> fosc 12000
>>> fosc 12000
avrdude> quit
>>> quit

avrdude done. Thank you.

$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A

avrdude: safemode: Fuses OK

avrdude done. Thank you.

$ sudo avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F -t -u
avrdude: stk500_2_ReceiveMessage(): timeout

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATtiny2313 is 1E 91 0A
avrdude>
avrdude> fosc 1.229 MHz
>>> fosc 1.229 MHz
Usage: fosc [M|k] | off
avrdude> fosc 1.229M
>>> fosc 1.229M
avrdude> parms
>>> parms
Vtarget : 4.9 V
Varef : 0.0 V
Oscillator : 1.843 MHz
SCK period : 4.4 us
avrdude> fosc 12.00M
>>> fosc 12.00M
avrdude: stk500v2_set_fosc(): f = 12.000 MHz too high, using 3.686 MHz
avrdude> fosc 12M
>>> fosc 12M
avrdude: stk500v2_set_fosc(): f = 12.000 MHz too high, using 3.686 MHz
avrdude> fosc 1.229M
>>> fosc 1.229M
avrdude> parms
>>> parms
Vtarget : 4.9 V
Varef : 0.0 V
Oscillator : 1.843 MHz
SCK period : 4.4 us
avrdude> help
>>> help
Valid commands:

dump : dump memory : dump
read : alias for dump
write : write memory : write ...
erase : perform a chip erase
sig : display device signature bytes
part : display the current part information
send : send a raw command : send
parms : display adjustable parameters (STK500 only)
vtarg : set (STK500 only)
varef : set (STK500 only)
fosc : set (STK500 only)
sck : set (STK500 only)
help : help
? : help
quit : quit

Use the 'part' command to display valid memory types for use with the
'dump' and 'write' commands.

avrdude> part
>>> part

AVR Part : ATtiny2313
Chip Erase delay : 9000 us
PAGEL : PD4
BS2 : PD6
RESET disposition : possible i/o
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 6 4 0 no 128 4 0 4000 4500 0xff 0xff
flash 65 6 32 0 yes 2048 32 64 4500 4500 0xff 0xff
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 2 0 0 0 0 0x00 0x00

avrdude> help
>>> help
Valid commands:

dump : dump memory : dump
read : alias for dump
write : write memory : write ...
erase : perform a chip erase
sig : display device signature bytes
part : display the current part information
send : send a raw command : send
parms : display adjustable parameters (STK500 only)
vtarg : set (STK500 only)
varef : set (STK500 only)
fosc : set (STK500 only)
sck : set (STK500 only)
help : help
? : help
quit : quit

Use the 'part' command to display valid memory types for use with the
'dump' and 'write' commands.

avrdude> sck
>>> sck
Usage: sck
avrdude> parms
>>> parms
Vtarget : 4.9 V
Varef : 0.0 V
Oscillator : 1.843 MHz
SCK period : 4.4 us
avrdude> sck 1
>>> sck 1
avrdude: stk500v2_set_sck_period(): p = 1.0 us too small, using 1.1 us
avrdude> sck 1
>>> sck 1
avrdude: stk500v2_set_sck_period(): p = 1.0 us too small, using 1.1 us
avrdude> parms
>>> parms
Vtarget : 4.9 V
Varef : 0.0 V
Oscillator : 1.843 MHz
SCK period : 1.1 us
avrdude> sck 2
>>> sck 2
avrdude> parms
>>> parms
Vtarget : 5.0 V
Varef : 0.0 V
Oscillator : 1.843 MHz
SCK period : 2.2 us
avrdude>


$ whereis avrdude
avrdude: /usr/bin/avrdude /etc/avrdude.conf /usr/share/man/man1/avrdude.1.gz
$ touch /tmp/123.hex
$ chmod a+wrx /tmp/123.hex
$ less /tmp/123.hexqqqq
/tmp/123.hexqqqq: No such file or directory
$ less /tmp/123.hex
$ cat /tmp/123.hex
:2000000012C02AC029C028C027C026C025C024C023C022C021C020C01FC01EC01DC01CC0C1
:200020001BC01AC019C011241FBECFEDCDBF10E0A0E6B0E0ECE9F0E002C005900D92A03661
:20004000B107D9F710E0A0E6B0E001C01D92A036B107E1F710D021C0D3CF08958FEF87BB7C
:2000600081BB18BA12BA08958FEF88BB82BB089518BA12BA08958FEF87BB80BB849B04C055
:1C00800088B3847088BB01C0C29A859B04C088B3827088BBF3CFC19AF1CFFFCFD6
:00000001FF
$

user@desktop:~/Desktop/Dokumenty/AVR8_Burn-O-Mat$ avrdude -p t2313 -c stk500v2 -P /dev/AVR-Doper-USB-Programmer -F
avrdude: stk500_2_ReceiveMessage(): timeout

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e910a

avrdude: safemode: Fuses OK

avrdude done. Thank you.

user@desktop:~/Desktop/Dokumenty/AVR8_Burn-O-Mat$ sh start.sh



ODCZYT FUSEBYTES


/usr/bin/avrdude -q -u -C /etc/avrdude.conf -p t2313 -P /dev/AVR-Doper-USB-Programmer -c stk500v2 -E noreset,novcc -F -U efuse:r:/tmp/efuse41068.hex:r -U hfuse:r:/tmp/hfuse41067.hex:r -U lfuse:r:/tmp/lfuse41066.hex:r
avrdude: WARNING: -E option not supported by this programmer type

avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x1e910a
avrdude: reading efuse memory:
avrdude: writing output file "/tmp/efuse41068.hex"
avrdude: reading hfuse memory:
avrdude: writing output file "/tmp/hfuse41067.hex"
avrdude: reading lfuse memory:
avrdude: writing output file "/tmp/lfuse41066.hex"

avrdude done. Thank you.



ZAPIS FUSEBITES


/usr/bin/avrdude -q -u -C /etc/avrdude.conf -p t2313 -P /dev/AVR-Doper-USB-Programmer -c stk500v2 -E noreset,novcc -F -U efuse:w:0xFF:m -U hfuse:w:0xDF:m -U lfuse:w:0xFD:m
avrdude: WARNING: -E option not supported by this programmer type

avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x1e910a
avrdude: reading input file "0xFF"
avrdude: writing efuse (1 bytes):
avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xFF:
avrdude: load data efuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip efuse data:
avrdude: verifying ...
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFD"
avrdude: writing lfuse (1 bytes):
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFD:
avrdude: load data lfuse data from input file 0xFD:
avrdude: input file 0xFD contains 1 bytes
avrdude: reading on-chip lfuse data:
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude done. Thank you.



ODCZYTANIE ZAWARTOSCI PROGRAMU Z MIKROKONTROLERA DO PLIKU


/usr/bin/avrdude -q -u -C /etc/avrdude.conf -p t2313 -P /dev/AVR-Doper-USB-Programmer -c stk500v2 -E noreset,novcc -F -U flash:r:/tmp/123.hex:i
avrdude: WARNING: -E option not supported by this programmer type
avrdude: stk500_2_ReceiveMessage(): timeout

avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x1e910a
avrdude: reading flash memory:
avrdude: writing output file "/tmp/123.hex"

avrdude done. Thank you.



SKRYPT KONFUGURACJI FUSEBYTES


http://palmavr.sourceforge.net/cgi-bin/fc.cgi


Dodatkowe informacje n.T. fusebytes i programowania mikrokontrolerów AVR


http://www.tkdami.net/~voytek/programy/programy.html
http://www.elektroda.pl/rtvforum/topic854656.html


Oprogramownie do programowania mikrokontrolerów AVR


http://sourceforge.net/projects/kontrollerlab/

Atmel AVR toolchain

JTAG Tools

JTAG FAQ

AVR® 8-Bit RISC - Datasheets

Projekty elektroniczne open source na Linuxa z wykorzystaniem AVR