Welcome, Guest. Please login or register.


Author Topic: HID kezelés Arduino -val (Read 75032 times)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #240 on: 2014.October.11. 02:08:22 »
Ne tedd, az un AT&T asm szintaxis, amit a gcc hasznal (amugy kb minden cpu-nak, x86-nal is ...) azert kell neki, mert azon hint-ek alapjan tud optiamlizalni, es "latja" hogy az asm kod hogyan fugg ossze a C valtozoiddal stb amire hivatkozol, mivel errol tudnia kell. Szoval ettol lesz ilyen bonyolult a szintaxis, ez nem az AVR sajatossaga, hanem a GCC miatt van, meg hogy keverni akarod.

En sima AVR assemblert hasznalok, igaz akkor az egesz cucc asm lesz ... Ilyen pl az avra nevu, abban amit te irtal, az pl ilyesmi lehet:

       LDI R0, 0
       LDI R1, 0xFF
    loop:
       OUT PORTB, R0
       OUT PORTB, R1
       RJMP loop

Namost ennel van szofisztikaltabb megoldas is talan, de most nem ez a lenyeg, hanem a szintaxis :)

Amugy pl itt is lehet olvasgatni, vagy ez mar megvan? http://www.avr-asm-tutorial.net/avr_en/index.html

Itt kicsit elmagyarazza, miert kell ez a "beteg" szintaxis a gcc-nek (epp x86-os peldan): http://wiki.osdev.org/Interrupt_Service_Routines Most epp nem talalom, de volt egy "GCC inline assembly black magic" oldal, ahol talan pont a Linux kernelbol volt forras reszlet, es olyan durvan nezett ki, hogy azon versenyeztek, ki tud olvashatatlanabb es megerthetetlenebb reszleteket fellelni a neten :)

Ja, es ha full asm project, akkor viszont ugye neked kell megcsinalni az egeszet, szal a kod elejere pl az interrupt vector table stb, amivel C alatt nem torodsz. Mondjuk nem nagy cucc, optimalis esetben ha int stb sincs engedve, akkor egy szem RJMP utasitas a 0-as cimen. A masik lehetoseg, hogy koztes megoldas: van C es asm is, de nem egy forrason belul: object file-ra forditod mindkettot (asm-ot assemblerrel, C-t C forditoval) aztan linkeled ossze. Ennek hatranya a build mechanizmus kisse bonyolultabba valasa, illetve az, hogy elvesztesz nemi performanciat hogy nem "teljesen" inline a kod, max hivhatod mint fuggveny pl. Ja, es ebben az esetben ismerned kell a C fordito altal hasznalt "stack trukkoket" stb, mert meglepodsz a vegen :) Ismet, ez nem AVR, ez minden platformon igy megy, x86-on is pl.
« Last Edit: 2014.October.11. 02:15:24 by lgb »

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #241 on: 2014.October.11. 10:18:35 »
Tanx,

Tudom hogy ez tök ellentmond azzal amit eddig hirdettem magamról,
de ez van, az emberek bonyolultak, továbbra is igaz, hogy általában nem a feladatért csinálok dolgokat,
hanem az eredményért (mégha filozófusok csóválnák is a fejüket ezért),
és persze h igazad van hogy minek vergődök ezzel, ha ott a síma assembly,

ettől függetlenül én nem egy egész programot akarok így írni,
hanem ugye 2-3 sor assembly -t ... szóval az már engem is tök felmérgesít,
ha valamit akarok, és nem megy ... úgyhogy inline assembly -ben lesz kipróbálva,
az már héccencség... :)

Egyébként GCC -ben is lehet normálisabb assembly -t használni, ilyen módon:
http://www.nongnu.org/avr-libc/user-manual/assembler.html

De én oda a C++ közepébe csak be akarom szúrni azt a 2-3 sort ... még kifutni sem fog ugye ebből történetesen,
úgyhogy olyan szempontból se problémás a dolog, hogy jujj, ne gabajodjon össze a C -vel ...

Nemá hogy ne jöjjek rá arra a 3 sorra ... :) Tunniakarom.
« Last Edit: 2014.October.11. 12:29:28 by Z80System »
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #242 on: 2014.October.11. 14:12:08 »
Egyébként arról van valakinek valami fogalma, hogy az USB háttértárak esetében mi lenne a helyzet a több darab és féle eszközzel ?

Úgy értem, annó zozó csinált egy IDE karit, és azzal (eddig még) bármilyen ide eszközt sikerült kezelni, legyen az winyó vagy SD kártya, mely IDE interfészt nyújt.

Namost USB esetben akkor egy HUB -bal az EP -re lehet csatlakoztatni 2 winyo -t, 1 CD ROM -ot, 3 SD kártyát meg 4 floppy -t ...

Mindezt párhuzamosan ...

Van valakinek fogalma arról, hogy egyrészt ezeknek a "storage" típusú előbb felsorolt eszközöknek van -e egy olyan közös valami kezelésük (vagy közös kezelésük van -e) USB -n,
mint amilyet az IDE eszköz megvalósított a különböző IDE kompatibilis eszközök használatakor ?

Vagyis ha valaki megírna egy USB vezérlőt, akkor automatikusan tudna az összes ilyen típusú ezközt kezelni, ráadásul ugye akárhány példányt rádugva ezekből,
EP felé is csak egyféle interfészen kommunikálva,

vagy pedig USB -n és/vagy EP fele is külön kéne megvalósítani a különböző eszközök kezelését ?

És hogy illeszkedne ide a darabszám ? Gondolom a darabszámot is valahogy bele kellene illeszteni az EP oldali interfészbe is ... nem ?
Z80 System

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #243 on: 2014.October.11. 15:12:41 »
Mar irtam, hogy USB eseten a kozos pont az un "USB mass storage" protocol, amit a legtobb ilyen cucc beszel (mittomen, pendrive, USB-s vinyo illeszto, meg iyesmik). Szoval nem kell minden cucchoz kulon "USB driver", elvileg. Arra viszont en is kivancsi lennek (oszinten, fogalmam sincs), hogy egy altlag USB host, ami elerheto szamunkra (legyen az vmi fejlettebb MCU ami tud hw-bol USB-t, PIC-ek kozott tobb ilyen van, sajnos AVR eseten mega-k kozott nincs, vagy akar vmi SPI-on MCU-hoz illesztheto USB interface IC, stb), az mit "tud", lehet-e ele USB hub-ot tenni, stb. Amugy az USB-s topic-ban pont nemreg emlitettem egy IC-t, ami azert cool, mert elvileg "normal" (nem SPI, UART soros stb) adatbusza van 8 bites, tehat akar minden MCU nelkul "szinte csak par drottal" is lehetne EP-hez illeszteni. Ez volt az: http://wch-ic.com/product/usb/ch375.asp Reszleteket nem tudok sokkal tobbet, hogy ez tud-e host lenni, vagy legalabbis vmi USB OTG cuccos ... Kisse zavaro a leirasa is, sok hasonlo IC van, es angol nyelvhelyessegben is latok nehol problemat bennuk.

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #244 on: 2014.October.11. 16:40:12 »
Milyen editor(oka)t használsz linux -on LGB ?
Z80 System

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #245 on: 2014.October.11. 16:59:56 »
Milyen editor(oka)t használsz linux -on LGB ?

Marmint, mint altalanos text editor? En altalaban terminal ablakokban dolgozom, van beloluk kb 50 egyszerre, 8 kulobozo workspace-re szetszorva, mivel amit lehet, command line karakteres-felulet-only megoldasban akarok csinalni :) Igy gyakori a full screen terminal window is, ha epp egy dologra koncentralok, neha egerhez orakig nem is nyulok (minek ...). Editorkent ilyenkor pl vim-et hasznalok, ami terminalban futo karakteres entitas kulon edit/parancs moddal, es egyeb "furcsasagokkal" :) Ha valamiert megse ez van, akkor altalaban a geany nevu (GUI-s) hasznalom, bar szinten full screenben.

Ezek utan az is ertheto, hogy amikor SymbOS es EGI-rol beszeltunk miert mondtam, hogy szerintem az ablakos felulet hulyeseg, az ember nagyreszt egy dologra figyel egyszerre, max lehessen valtani kozottuk :) Foleg mivel 8 biten a window azert neheziti is a dolgot, performancia okokbol ugyebar. Bar, ahogy nezem windows-osok is probalkoztak ezzel a fullscreen stb dologgal es az ablakok elfelejtesevel, csak ehhez nem ertek, mivel nem hasznalok windows-t :)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #246 on: 2014.October.11. 17:04:52 »
Aham ... na pont ilyenre gondoltam, mint ez a "gány" -is ... :)

És egyébként milyen paraméterek miatt esett erre a választásod,
mikor épp sikerül valaminek kivonszolni az otthonos termináljaidból ?
Z80 System

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #247 on: 2014.October.11. 17:12:24 »
Aham ... na pont ilyenre gondoltam, mint ez a "gány" -is ... :)

És egyébként milyen paraméterek miatt esett erre a választásod,
mikor épp sikerül valaminek kivonszolni az otthonos termináljaidból ?

Megszokas, hogy pont az. Amugy azert mert python-hoz eleg sok minden van benne, es python munkam soran is sokszor kell, amikor meg elkezdtem foglalkozni python-al azt ajanlottak a legtobben, ha vmi "advancedebb" kellene. Azota meg rajtam ragadt :)

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #248 on: 2014.October.11. 19:30:52 »
Na elkészült a nagy mű, ebben a formában is 3.999 MHz ... Vagyis jól működik a C optimatalizálója ...

Code: [Select]
   asm volatile
    (
      "ldi r16, %1" "\n\t"
      "ldi r17, %2" "\n\t"

      "Loop:"

      "out %0, r16" "\n\t"
      "out %0, r17" "\n\t"

      "rjmp Loop" "\n\t"
      :
      : "I" (_SFR_IO_ADDR(PORTD)), "M" (255), "M" (0)
      :
    );


Kipróbáltam olyat is, hogy a középső 2 out -ot rengetegszer (kb. 5-10 képernyőnyi) lemásoltam egymás alá.
Na akkor felment 7.955 MHz -re.

Ez az rjmp a leggyorsabb ugrása ennek a procinak ?
Z80 System

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #249 on: 2014.October.11. 19:46:37 »
Ez az rjmp a leggyorsabb ugrása ennek a procinak ?

Igen, az ugras mint utasitas meg a legkorszerubb RISC procikat is taccsra teszi, mert ugye a szeeeep pipeline stb ami gyorsitani szeretne dobhato ki, mivel nem linearis a programvegrehajtas ... Az alapvetoen mindern procinal szuk keresztmetszet, azert is szokas RISC-en ugy megoldani hogy ahol lehet (ok itt nem lehetne ...) ne legyen ugras, hanem pl minden letezo utasitas egyben felteteles is, mert akkor arra legalabb elore lehet jol szamitani :) Itt az RJMP ket orajel ciklusig tart amugy.

Na mindegy, szerintem igy se rossz (hasonlitsd ossze Z80-al ...) egy out darabonkent 1 ciklus, az RJMP meg 2. Szoval is 4, 16MHz-es AVR-en kijon a kb 4MHz, amit elerhetsz. Meg ha lenne is egy ciklusos ugras, az "csak" 16/3=5.33Mhz-re gyorsitana a kimeneteden merheto frekvenciat. Meg, ha ez a cel, akkor amugy van AVR-ben szerintem mindenfele stuff (PWM miegymas is akar) ami hw-bol general neked ilyet egy kimeneten, anelkul hogy az sw csinalna (bar tudom itt nem ez a lenyeg, hanem hogy mit bir a mcu, azt probalod, ha jol tippelek).

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #250 on: 2014.October.11. 20:00:12 »
Ja, csak pár mérés. hogy ténylegúgyvane, ténylegazvane, ténylegműködike,
meg hát látod, meg kell ismerni ilyen inline assembly szintaxokat, miegyéb ...

Most még össze akarnék lőni egy AVR-C pipeline -t, ami nem az arduino,

egyrészt hogy ne az arduino keretben fussak (ne állítgasson be nekem megszakokat csak hogy tudjon delay() -ezgetni, meg serial -ozgatni, meg ilyenek),

másrészt meg azért, mert ez az arduino is ki tudja mikori AVR-C -t használ ...

AVR-C meg nap mint nap változik ...

De hála istennek AVR-C -nek windows -ra csak ilyen mindenféle IDE -khez adott portjai vannak, amik meg megintcsak ki tudja mennyire frissek ...

Úgyhogy abban gondolkodok, hogy Ubuntu alatt fogom tolni ... és akkor feltételezem arra simán csak tudom használni az eredeti, naprakész AVR-C -t ...

De aztán lehet pár óra szetapolgatás után megfutamodok, és vonyítva futok vissza majd windows -ra, valami kompakt (viszonylag naprakészen tartott) IDE -t feltelepítve ... :)


Ideje lenne elkezdeni végre a lényegi dolgot ... már mindent tudok, mindent körüljártunk ... amíg meg nincs billentyűm, addig meg csinálnám az egeret, csak a bájtok másak ...
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #251 on: 2014.October.11. 20:34:00 »

Hmmmm ...

http://andybrown.me.uk/wk/2012/04/28/avr-gcc-4-7-0-and-avr-libc-1-8-0-compiled-for-windows/

Ez ígéretes lenne, lehetne maradni vele windows -on, avr-libc -ből csak egyel van nagyobb (1.8.1), de az viszont 1-2 hónapos ... ez meg több mint 2 éves ...
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #252 on: 2014.October.11. 21:31:18 »
Ha megkérdem az ubuntut hogy milyen avr-libc -t ismer:



user00@LU64T:~$ apt list *avr*
Listing... Done
avr-evtd/trusty 1.7.7-2 amd64
avr-libc/trusty 1:1.8.0-4.1 all
avra/trusty 1.3.0-1 amd64
avrdude/trusty 6.0.1-1 amd64
avrdude-doc/trusty 6.0.1-1 all
avrp/trusty 1.0beta3-7 amd64
avrprog/trusty 0.2.2-2 amd64
binutils-avr/trusty 2.23.1-2.1 amd64
gcc-avr/trusty 1:4.8-2.1 amd64
gdb-avr/trusty 7.6-1 amd64
libavresample-dev/trusty-updates,trusty-security 6:9.16-0ubuntu0.14.04.1 amd64
libavresample1/trusty-updates,trusty-security 6:9.16-0ubuntu0.14.04.1 amd64
simulavr/trusty 0.1.2.2-6.2 amd64



Akkor ő azt hiszi, hogy boldog leszek az 1.8.0 -val:

avr-libc/trusty 1:1.8.0-4.1 all

De pedig nekem az 1.8.1 kell ... hogy érem el hogy lássa az 1.8.1 -et ?

Innen lehetne letölteni kézzel az 1.8.1 -et:

http://savannah.nongnu.org/projects/avr-libc/
http://download.savannah.gnu.org/releases/avr-libc/

De most ha én ezt innen letöltöm, akkor ez egy normális csomagnak fog számítani, amit a csomagkezelő majd figyelembe vesz,
és látja hogy ez frissebb mint amit ő ismer, meg ilyenek ?
Z80 System

Offline Z80System

  • EP addict
  • *
  • Posts: 3848
  • Country: hu
Re: HW készítés Arduino-val
« Reply #253 on: 2014.October.11. 21:47:25 »
A GCC -nek is van már 4.9.1 -es verziója is,

az Ubuntu meg még mindíg csak 4.8.2 -t telepítene ... miért nem frissek ezek ?

Jobban járok ha nem a legfrisebbeket használom, vagy mindenki örökké forrásból fordíd mindent, kézzel töltögetve a forrás csomagokat ?
Z80 System

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: HW készítés Arduino-val
« Reply #254 on: 2014.October.11. 23:59:34 »
Miert nem friss ... Ez egy nehez kerdes, es eleg hosszu a valasz :) Egy adott software (pl gcc) fejlesztoi folyton toljak ki az uj verziokat, benne ujabb feature-ok, hibajavitasok es persze bugok is :) Azonban egy disztribucio osszeallitoinak (itt ubuntu) ugy kell gondolkodni, hogy van nekik tobb ezer software project, amibol epitkeznek. Nincs se idejuk se lehetoseguk, hogy minden upstream akcio utan nullarol leteszteljek, panaszkodni viszont naluk fognak (itt "sz** az ubuntu"), hiaba az upstream-ben van a hiba. A megoldas: legtobb disztribucio ritkabban frissit, es a stabilitast helyezi eloterbe. Ha kritikus hiba van, meg arra is hajlando amire esetleg az upstream nem: inkabb visszaportolja a javitast a regebbi de stabl, kiforrott verzioba, minthogy helyette legyen egy uj sw verzio, ami ugyan lehet h vmit javit, uj feature-ot hoz, de kozben 100 bugot is ... Foleg, interakcioban a tobbi komponenssel. Nem olyan egyszeru egy disztrib "gyarto" elete, foleg, ha ugye nem o irja maga a sw-ek nagy reszet, amibol epitkezik, igy esetleg nincs is kozvetlen beleszolasa. Microsoft eseten egyszeru, mert leszolnak a programozoknak hogy "na ez igy gaz, kezd elolrol". Viszont ott egy kezben van minden, mindent uralnak, teljesen mas filozofia.