{"id":286,"date":"2012-07-14T15:01:21","date_gmt":"2012-07-14T13:01:21","guid":{"rendered":"https:\/\/zz-indigo.mavipet.sk\/?p=286"},"modified":"2019-10-29T18:04:59","modified_gmt":"2019-10-29T18:04:59","slug":"gpio-cez-usb","status":"publish","type":"post","link":"https:\/\/zz-indigo.mavipet.sk\/?p=286","title":{"rendered":"GPIO cez USB."},"content":{"rendered":"<p>Niekedy sa hod\u00ed ma\u0165 GPIO porty na po\u010d\u00edta\u010di. Ty \u010do maj\u00fa to \u0161\u0165astie a ich PC\/NTB obsahuje LPT port m\u00f4\u017eu vyu\u017ei\u0165 jeho slu\u017eby. Pre n\u00e1s ostatn\u00fdch je len jedna mo\u017enos\u0165 USB zariadenia. Existuje viac komer\u010dn\u00fdch a n\u00e1le\u017eite drah\u00fdch rie\u0161en\u00ed ale ja sa zameriam na rie\u0161enia ktor\u00e9 sa daj\u00fa postavi\u0165 z\u00edska\u0165 relat\u00edvne lacno.<\/p>\n<p><!--more--><\/p>\n<h1>USBtinyISP.<\/h1>\n<p>Je to zauj\u00edmav\u00e9 ale v\u0161etky verzie USBtinyISP sa daj\u00fa pou\u017ei\u0165 ako GPIO.<\/p>\n<ul>\n<li><a title=\"Original USBtinyISP project\" href=\"http:\/\/dicks.home.xs4all.nl\/avr\/usbtiny\/\">Original USBtinyISP<\/a>. 8xGPIO ports<\/li>\n<li><a title=\"Stranky projektu USBtinyISP od ladyada\" href=\"http:\/\/www.ladyada.net\/make\/usbtinyisp\/download.html\">ladyada v1.0<\/a> 4xGPIO ports (HW aj FW vie 8GPIO ale niesu pristupne)<\/li>\n<li><a href=\"http:\/\/www.instructables.com\/id\/VUSBTiny-AVR-SPI-Programmer\/\">USBtinyISP<\/a> na ATtiny45<\/li>\n<li><a title=\"LittleWire project\" href=\"http:\/\/littlewire.cc\/\">LittleWire<\/a><\/li>\n<\/ul>\n<p>Na USBtinyISP na ATtiny45 sa da nain\u0161talovat firmware z Little Wire (aktu\u00e1lna verzia sa do attiny45 vmesti i ke\u010f bez bootloadera). Ale treba ju prekompilova\u0165. Ke\u010f\u017ee s\u00fa prehoden\u00e9 piny pre D+ a D-.<\/p>\n<p>Autor LittleWire vo svojich zdrojov\u00fdch k\u00f3doch dod\u00e1va aj jednoduch\u00e9 kni\u017enice. Tie s\u00fa pre C, C++, Processing () a Beta verzia pre C#. Nev\u00fdhoda t\u00fdchto kni\u017en\u00edc je \u017ee podporuj\u00fa len LittleWire roz\u0161\u00edrenia.<\/p>\n<p>Ale aj bez roz\u0161\u00edrenia LittleWire sa daj\u00fa program\u00e1tori vyu\u017e\u00edva\u0165. Bohu\u017eia\u013e funk\u010dnos\u0165 pr\u00edkazov na z\u00e1pis a \u010d\u00edtanie bajtu nieje vo v\u0161etk\u00fdch FW rovnak\u00fd.<\/p>\n<p>Vo firmware ich najdete ako USBTINY_READ\/USBTINY_WRITE\/USBTINY_CLR\/USBTINY_SET. Verzie postavene nad ATtiny2313 maj\u00fa e\u0161te USBTINY_DDWRITE. A tu je probl\u00e9m. Pr\u00edkazy sa inak spr\u00e1vaj\u00fa. Vo FW pre ATtiny2313 a LittleWire \u010d\u00edtaj\u00fa a zapisuj\u00fa nad portom B. V ostatn\u00fdch FW pracuj\u00fa nad adresou internej ram ktor\u00e1 je ur\u010den\u00e1 \u010fal\u0161\u00edmi bajtami pr\u00edkazu.<\/p>\n<p>Pokia\u013e sa v\u00e1m ide o jednoduch\u00e9 ovl\u00e1danie cez CLI je mo\u017en\u00e9 pou\u017ei\u0165 usbtool z kni\u017enice vusb. Tento tool dovo\u013euje komunikova\u0165 z USB. Par pr\u00edkladov pou\u017eitia:<\/p>\n<p>V\u00fdpis v\u0161etk\u00fdch zariaden\u00ed (Pr\u00edkaz m\u00e1 prep\u00edna\u010de ktor\u00e9 dovoluj\u00fa ist\u00fa filtr\u00e1ciu v\u00fdsledkov):<\/p>\n<pre>.\/usbtool list\nVID=0x1781 PID=0x0c9f vendor=\"\" product=\"USBtinySPI\" serial=\"ZZ_indigo\"\nVID=0x1d6b PID=0x0001 vendor=\"Linux 2.6.32-5-amd64 uhci_hcd\" product=\"UHCI Host Controller\" serial=\"0000:00:1d.2\"\n...<\/pre>\n<p>Pre\u010d\u00edtanie intern\u00e9ho teplomera cez ADC na FW LittleWire:<\/p>\n<pre>.\/usbtool -v 0x1781 -p 0x0c9f control in class device 15 2 0\n0x14 0x01<\/pre>\n<p>Podobne sa d\u00e1 pracova\u0165 aj z IO portami. Form\u00e1t pr\u00edkazu je ve\u013emy jednoduch\u00fd:<\/p>\n<p>.\/usbtool -v 0x1781 -p 0x0c9f control in class device \u010dislo_prikazu parameter_prikazu 0<\/p>\n<p>\u010d\u00edslo pr\u00edkazu:<\/p>\n<ul>\n<li>READ = 1\n<ul>\n<li>parameter = 0<\/li>\n<li>n\u00e1vratov\u00e1 hodnota = obsah PINB<\/li>\n<\/ul>\n<\/li>\n<li>WRITE = 2\n<ul>\n<li>parameter =\u00a0 hodnota zap\u00edsana na do PORTB<\/li>\n<li>n\u00e1vratov\u00e1 hodnota \u017eiadna.<\/li>\n<\/ul>\n<\/li>\n<li>CLR = 3\n<ul>\n<li>parameter = \u010d\u00edslo bitu na porte<\/li>\n<li>n\u00e1vratov\u00e1 hodnota \u017eiadna.<\/li>\n<\/ul>\n<\/li>\n<li>SET = 4\n<ul>\n<li>parameter = \u010d\u00edslo bitu na porte<\/li>\n<li>n\u00e1vratov\u00e1 hodnota \u017eiadna.<\/li>\n<\/ul>\n<\/li>\n<li>DDR_WRITE = 13\n<ul>\n<li>parameter = \u010d\u00edslo bitu na porte<\/li>\n<li>n\u00e1vratov\u00e1 hodnota \u017eiadna.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>A blbinka na koniec \ud83d\ude09 Blikanie na LED na PB2<\/p>\n<pre>.\/usbtool -v 0x1781 -p 0x0c9f control in class device 13 0xff 0\nwhile true\n  do .\/usbtool -v 0x1781 -p 0x0c9f control in class device 4 2 0\n  sleep 1\n  .\/usbtool -v 0x1781 -p 0x0c9f control in class device 5 2 0\n  sleep 1\ndone<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Niekedy sa hod\u00ed ma\u0165 GPIO porty na po\u010d\u00edta\u010di. Ty \u010do maj\u00fa to \u0161\u0165astie a ich PC\/NTB obsahuje LPT port m\u00f4\u017eu vyu\u017ei\u0165 jeho slu\u017eby. Pre n\u00e1s ostatn\u00fdch je len jedna mo\u017enos\u0165 USB zariadenia. Existuje viac komer\u010dn\u00fdch a n\u00e1le\u017eite drah\u00fdch rie\u0161en\u00ed ale &hellip; <a href=\"https:\/\/zz-indigo.mavipet.sk\/?p=286\">Pokra\u010dova\u0165 v \u010d\u00edtan\u00ed <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,3,4,7,11],"tags":[],"class_list":["post-286","post","type-post","status-publish","format-standard","hentry","category-avr","category-hw-a-sw","category-linux","category-raspberry-pi","category-utilitky"],"_links":{"self":[{"href":"https:\/\/zz-indigo.mavipet.sk\/index.php?rest_route=\/wp\/v2\/posts\/286","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zz-indigo.mavipet.sk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zz-indigo.mavipet.sk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zz-indigo.mavipet.sk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zz-indigo.mavipet.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=286"}],"version-history":[{"count":1,"href":"https:\/\/zz-indigo.mavipet.sk\/index.php?rest_route=\/wp\/v2\/posts\/286\/revisions"}],"predecessor-version":[{"id":2750,"href":"https:\/\/zz-indigo.mavipet.sk\/index.php?rest_route=\/wp\/v2\/posts\/286\/revisions\/2750"}],"wp:attachment":[{"href":"https:\/\/zz-indigo.mavipet.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zz-indigo.mavipet.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zz-indigo.mavipet.sk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}