| Mood |
| |
asd |
| TEHNO |
| |
Loogik |
Loogiku edasi arendamine on täies jõus ning põhiliselt on asi praegu koodi taga.
Oleks tarvis teha wxPythoni abil mingit sorti
graafiku joonestamise liides, kuid siiamaani pole ma ennast sundinud wxWidgetsi
graafilist poolt õppima.
Eelmises blogipostituses kirjeldatud probleemi - korraga rohkem kui 8 baidi info
liigutamist arvuti ning seadme abil USB-d kasutades - jaoks olen leidnud lahenduse,
mis on esialgu lihtsam, kuid võib-olla vähemtäiuslikum.
Olles uurinud minu loogikPC-programmi koodi, võite olla märganud, et on kasutatud
funktsiooni controlMsg.
Järgnevalt räägiksin veidi antud funktsiooni tööpõhimõttest:
USBtiny abil rakendatud USB-seade ootab ebastandartseid pakette ning reageerib nendele.
Üks usb-pakett (setup-tüüpi, see, millele seade vastab) koosneb kaheksast baidist.
USB setup-pakett
Bait koosneb kaheksast bitist, ning seda võib kujutleda kui
0000 0000
Vastavalt kahendsüsteemile võib iga 0 olla ka 1.
Ühe baidi maksimumväärtus on 255 ning miinimumväärtus 0, selles võib veenduda
kahendsüsteemi kasutades.
Meid huvitavad setup-paketi 2. bait ning 5. bait.
2. baidis peitub seadmele saadetud käsk - mida peab tegema. Erinevaid käske võib seega
kokku olla 256. Loogiliselt saab korraga, ühe paketiga, anda edasi ühe käsu.
5.bait on järjekorrabait, teatud usb-rakendused kasutavad seda, kuid antud juhul
võime seda ise edukalt rakendada. Selle abil saan seadmele teada anda, kustkohast lugema hakata.
Ainsaks probleemiks on selle piiratus - näiteks EEPROM mälu on kiibil 1024 baiti, kuid ma saan öelda vaid järjekorranumbri 255. Kahe baidi kasutamisel saaks piirangu tõsta 2^(2*8)-ni, ehk 65536-ni.
Minu rakenduses (main.c) saadab arvuti seadmele käsu, ning seade salvestab 5. baidi väärtuse endale mällu. Hiljem saab selle põhjal funktsioonides usb_in(suund seadmest arvutisse) ning usb_out(suund arvutist seadmesse) arvutada andmete asukohakoha.
loogik2.zip Kogu lahenduse lähtekood
Niipalju siis USB-st.
Vahepeal on tekkinud soov tegeleda ka millegi mehhaanilisema, seetõttu hakkan arendama ka arvutile kahest samm-mootorist koosnevat juhitavat turretit. Hetkel on see üsnagi algstaadiumis, kuid
edusamme on juba tehtud.
Kuid sellest mõni teine kord. |