Autorul poate fi contactat la adresa: Login pentru adresa
Initial imi propusesem sa fac un remote control pentru AC. Din diferite motive obiective ( telecomanda pe care o aveam la dispozitie se fol. de un standard ceva mai complicat, probleme cu recunoasterea device-ului, faptul ca am lasat proiectul pe ultima, ultima suta de metri ) m-am gandit la o chestie relativ ineficienta dar interesanta ( “m-am gandit” = undeva pe la 2 AM inainte de deadline ): Un (simulator de) scheduler, care sa permita unui utilizator extern sa trimita diferite task-uri la microprocesor. ( computatie, interogarea senzorilor ).
Initializarea sistemului se realizeaza printr-un mesaj de tip “start: time_slice”.
Context switch-ul este simulat prin interrupt-ul de la un counter.(Timer1) ( cuanta de timp este cea setata primita ca argument de la host ). ( In timpul context switch-ului counter-ul este dezactivat ).
In continuare, host-ul poate inregistra task-uri ( prin mesaj de control de tip task:timeout:prioritate ).
La expirarea unei cuante de timp, se verifica daca un thread a ajuns la timeout, daca da se aprind led-ul de control (mai mult de debug) si se trimite rezultatul impreuna cu alte informatii relevante. Este posibila preemptarea unui thread, daca intre timp s-a inregistrat un thread cu o prioritate mai mare.
Thread-urile dispun de un numar de 'registrii' ( pentru a simulat tls-ul ).
Sunt perfect constient ca nu este cea mai eficienta abordare ( mai ales avand in vedere ca am realizat comunicarea cu host-ul prin v-usb ).
Placuta Vanilla.
Mediu de dezvoltate: Notepad++ Librarii si surse 3rd-party: v-usb
Tutoriale utile pentru cei care se vor juca in viitor cu vusb sau tsop sensors:
http://www.pcbheaven.com/userpages/The_Philips_RC5_Protocol/ http://vusb.wikidot.com/driver-api http://codeandlife.com/2012/02/04/avr-attiny-usb-tutorial-part-4/ http://hackaday.com/2012/07/19/use-your-tv-remote-as-an-hid-mouse/#comments