2010. április 10., szombat

További szoftverfejlesztés a szünetben.

Így a szünet vége felé sikerült egy kicsit megint haladni a munkával. Sikerült megírni a FIFO-t (First In First Out) vagyis amit először beírok azt először kell majd kiolvasnom is. Erre azért volt szükség, hogy megoldható legyen egy komplett grafikus úton megtervezett útvonal elküldése a rovernek, és egy parancs csomagként küldöm el az egészet, hogy ne kelljen többször is kivárni a 15 mámsodperces késleltetést, amit a szabályok írnak elő. A FIFO-t úgy hoztam létre, hogy az üzenetek egy 2 dimenziós tömbben tárolódjanak el. A sorok 6 elemből állnak, és egy komplett üzenetet tartalmaznak. 20 sorosra definiáltam a tömböt, tehát 20 üzenet eltárolására alkalmas. Ha eléri a kiolvasott üzenetek száma a beadottakét, magyarul minden bent lévő üzenetet kiolvastunk, akkor a tömb a 0-s elemre ugrik. Nem volt egyszerű első körben megírni ezt a cuccot, jól át kellett gondolni, és voltak kisebb hibák, rossz sorrendben csináltam függvényhívásokat meg ilyenek, de folyamatos LCD segítségével történő debuuggolás során mindig láttam, hogy hol lehet a hiba, és korrigáltam a dolgokat. Így most már működik a cucc nagyon jól.

Ezenkívül megírtam az ADC (Analog Digital Conversion) részt, ami az akkumulátor tápfeszültségét méri, és küldi el a PC-nek. Először is az akksi 12V-os tehát közvetlenül nem lehet rákötni a mikrokontroller lábára, leosztottam 2 ellenállás segítségével, amiket igyekeztem kOhm nagyságrendűre választani, mert itt nincs szükség nagy áramra. Úgy számoltam, hogy az akksi teljesen feltöltve üresjárásban leadhat 13,7V-ot is, az én leosztásommal 14V fölé is mehetne a cucc, persze így nem vagyunk olyan pontosak, de ebben az esetben nekünk bőven elég a 0,1V os pontosság, vagy akár még rosszabb is. 10bites az ADC a mikrokontrollerben és én ennek a 10 bitnek a felső 8 bitjét használom, hogy egy USART üzenetben elférjen, ami ugyebár 8 bites. Lehetne bonyolítani a pontosság érdekében, hogy 2 üzenetben küldjem el és a PC-n összerakjam a 10 bitet, csak egy szorzás lenne ott lényegében, de mivel nem fontos ezért ettől ebben az esetben eltekintek. A PC küld egy üzenetet majd kb fél percenként a kontrollernek, ami ezt az üzenetet értelmezni fogja, és a FIFO megkerülésével azonnal végre is hajtja. Felesleges lenne várni, hogy a FIFO-ban sorra kerüljön, ez nem befolyásolja a szervókat vagy a mozgást úgysem. Ugyanígy a stop üzenet is megkerüli a FIFO-t kellemetlen lenne megvárni míg nekimegy mindennek a rover mire lefut minden utasítás és akkor utána jönne csak a stop... Szóval rögtön történik 8 AD átalakítás, az eredményeket kiátlagolom, majd ezt a 8 bites átlagot elküldöm a PC-nek. Ott ez átszámítódik majd a megfelelőképpen %-ba és egy színes PROGRESSBAR vagyis "bitkolbász" formájában jelenik meg grafikusan. 3 színe van, 50% felett zöld 20% felett sárga és az alatt piros.

 Ha minden jól emgy hamarosan neki állok megtervezni a vezérlő panel NYÁK-ját is, most várom, hogy a rover hozzám kerüljön és elkezdjem tesztelni az új koncepcióval. Remélem ma is sikerült pár hasznos dolgot felvésnem ide :)

Nincsenek megjegyzések:

Megjegyzés küldése