Vizitator fod Postat Aprilie 5, 2012 Partajează Postat Aprilie 5, 2012 Care e cea mai buna solutie ca sa citesc doua porturi de intrare si sa fac ADC pe ele? Link spre comentariu
vcdec Postat Aprilie 6, 2012 Partajează Postat Aprilie 6, 2012 Despre ce controller discutam? O schema, mai multe detalii, ce vreti sa faceti cu el? Link spre comentariu
Vizitator fod Postat Aprilie 7, 2012 Partajează Postat Aprilie 7, 2012 Vreau sa fac o placa de achizitie de date(temperatura si umitate) care sa transmita datele wireless catre un calculator, iar pe calculator am facut un soft de monitorizare cu care pot genera rapoarte pe zile si grafice. Pana acum am facut achizitia, trasmisia si monitorizarea temperaturii si vreau sa fac acelasi lucru si pentru umiditate. Am folosit PIC16F877.Nu stiu cum sa fac sa fac adc si sa transmit serial si umiditatea. Link spre comentariu
10vid Postat Aprilie 7, 2012 Partajează Postat Aprilie 7, 2012 Exista un singur modul ADC la care se pot conecta pana la 8 intrari analogice (de la pini). Dar nu deodata, ci cate una odata. Astfel, va trebui sa le conectezi alternativ, cand una, cand cealalta.Sa zicem ca intrarile sunt AN0 (RA0) si AN1 (RA1):Intai se configureaza modul analogic pe acesti pini (bitii PCFG3:0 ---> 0100 in registrul ADCON1) vezi tabel la pag.112.Apoi se selecteaza canalul dorit a fi conectat la ADC (alternand valorile bitilor CHS2:0 ---> 000 pentru AN0 sau 001 pentru AN1) pag.111.Dupa schimbarea canalului se va astepta cel putin 40us pana la pornirea unei noi conversii, pentru ca intrarea la ADC sa se stabilizeze. Link spre comentariu
Vizitator fod Postat Aprilie 7, 2012 Partajează Postat Aprilie 7, 2012 Daca scriu in fc main urmatorul cod, e corect?In init_ADC_T() am facut setarile pt citirea portului AN0 unde e conectat senzorul de temperatura, iar in init_ADC_U() am facut setarile pt ADC pt senzorul de umiditate conectat pe AN1. init_ADC_T(); TXREG = 'T'; delayMs(10); ADCON0 |= 0x04; //Start ADC while (conversie == 0); // wait for interrupt conversie = 0; scrieNr (ADCValue); delayMs(5000); init_ADC_U(); TXREG = 'U'; delayMs(10); ADCON0 |= 0x04; //Start ADC while (conversie == 0); // wait for interrupt conversie = 0; scrieNr (ADCValue); delayMs(5000); Averi alte sfaturi? Link spre comentariu
Vizitator fod Postat Aprilie 8, 2012 Partajează Postat Aprilie 8, 2012 Cu codul de mai sus nu imi merge simularea in proteus...Trimite corect caracterul T urmat de valoarea ADC-ului de te portul AN0 iar apoi trimite carecaterul U dar ADC-ul il face tot pt valoarea pe care o citeste de pe portul AN0...deci practic nu citeste portul AN1 a doua oara.Eu cred ca am configurat bine ADC-urile dar o sa atasez si codul in care le-am configurat poate ma ajuta cineva sa gasesc greseala: init_serial(){ TRISC |= 0X80; TRISC &= 0XBF; SPBRG = 25; TXSTA = 0x24; RCSTA = 0X90; }init_ADC_T(){ /* ADC configuration */ ADCON0 = 0x0; ADCON1 = 0x81; ADCON0 |= 1; ADIF = 0; ADIE = 1;}init_ADC_U(){ /* ADC configuration */ ADCON0 = 0b00000100; ADCON1 = 0x80; ADCON0 |= 1; ADIF = 0; ADIE = 1;}Am folosit PIC16F877. Link spre comentariu
Vizitator fod Postat Aprilie 8, 2012 Partajează Postat Aprilie 8, 2012 PROBLEMA REZOLVATA!!!Multumesc! 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