soulraven Postat August 24, 2010 Partajează Postat August 24, 2010 am incercat sa continui un proiect mai vechi, "computer "de bordpentru dacia 1310", numai ca vreau sa mai adaug si o identificare cu Ibutton folosind 1wire.Pana aici toate si frumose, am reusit mare parte din proiect, numai ca m-am impotmolit la cateva aspecte legate de cod, mentionez ca nu ma pricep foarte bine la programare si C, dar iara cum am gandit proiectul pana acum si ce vreau sa realizez.- Soferul se urca in masina, la cheie are atasat un tag ibutton, motorul este oprit. Soferul conecteaza tag-ul ibutton pentru cateva secunde in mufa speciala pana este identificat, in acest moment din montajul meu iese un 1logic.- Soferul porneste masina si pleaca.- Daca masina este pornita inainte sa fie identificat Ibutton-ul, atunci iesire ramane 0logic.- Daca ibutton-ul este identificat, dar pentru 5 minute nu s-a pornit motorul, iesire trece in 0logic.Ceea ce nu reusesc eu pana in momentul de fata si nici nu stiu, este cum comand timerul sa numere 600 de secunde si sa verifice in acelasi timpul daca tag-ul este verificat sau nu, restul functiilor soft le-am facut, dar m-am blocat la implementarea situatiei de mai sus.ma puteti ajuta?am atasat proiectul inclusiv schema in proteous si codul sursa.macar sa imi dati sfaturi sau sa ma ajutati sa imi vad si eu visul cu ochii, pentru ca apoi vine distractia cu programarea si executarea cablajului. Link spre comentariu
petre_s Postat August 26, 2010 Partajează Postat August 26, 2010 Vezi ca ai mai multi timeri si mai ai si intrerupere externa (INT0) Link spre comentariu
soulraven Postat August 26, 2010 Autor Partajează Postat August 26, 2010 dar nu stiu sa le folosesc........nu ma pricep foarte bine in C.ma poti ajuta? Link spre comentariu
petre_s Postat August 26, 2010 Partajează Postat August 26, 2010 Nu e particularitate de limbaj, pur si simplu modifici niste registri. Cum se folosesc gasesti sigur in datasheet-ul cipului si peste tot pe net. Link spre comentariu
Vizitator pmar_kpj Postat August 30, 2010 Partajează Postat August 30, 2010 salut !pai ca sa poti numara mai mult de 256 trebuie sa definesti variabilele de tip intreg pe 16 biti! acum le ai pe 8 biti (byte 0-255).Deci : in loc de : byte seconds, high_count;scrii : unsigned int16 seconds, high_count;acu' o sa poti numara de la 0-65535!bafta Link spre comentariu
wwwglro Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 salut !pai ca sa poti numara mai mult de 256 trebuie sa definesti variabilele de tip intreg pe 16 biti! acum le ai pe 8 biti (byte 0-255).Deci : in loc de : byte seconds, high_count;scrii : unsigned int16 seconds, high_count;acu' o sa poti numara de la 0-65535!baftaNu neaparat...Folosesti intreruperi interne (rollover timer0)Programezi ca intreruperile generate sa aiba loc la un anumit interval ex 20ms (cat numara de la 0 la 255). Cand face rollover si numara iar de la 0 la 255 incrementezi un counter.Daca intreruperile au loc la fiecare 20ms rezulta ca dupa 50 de intreruperi trece o secunda adica cand counterul tau ajunge la 50 inseamna ca a trecut o secunda...Folosesti (corpul functiei intrerupere)#int_rtccvoid clock_isr() { ...aici codul de mai sus......poti testa dupa fiecare intrerupere si starea intrarii care te intereseaza...}void main(){setup_counters (RTCC_INTERNAL, RTCC_DIV_1); /modifici rtcc_div_1 in fnct de durata intreruperiienable_interrupts (INT_RTCC);enable_interrupts(GLOBAL);do{codul tau ......} while(1) //bucla infinitaFoloseste helpul din ccs ca sa vezi exact sintaxa corecta...Bafta Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum