joosep's Aeonity Blog [entries | home | friends | archive]
[ entries | joosep entries ]
[ userinfo | joosep profile ]
[ rss feed | joosep rss feed ]

Loogik May 6th, 2007 3:42:40 pm - Subscribe
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.

0 Comments | Post Comment

ADD COMMENT


ReCaptcha:

Posting as anonymous Anonymous guest, why not register, or login now.


Cerulean Template
Create your own Free Aeonity Blog Today
Content Copyrighted joosep at Aeonity Blog