Vizitator tutumarian Postat Ianuarie 8, 2013 Partajează Postat Ianuarie 8, 2013 ma poate ajuta si pe mine cineva cu o functi adc_read (in C daca se poate) pentru un pic 16f877a. vreau sa afisez pe un lcd temperatura de la un senzor LM35. Link spre comentariu
Yoshiro Postat Ianuarie 8, 2013 Partajează Postat Ianuarie 8, 2013 ce compilator folosesti? Link spre comentariu
Vizitator tutumarian Postat Ianuarie 8, 2013 Partajează Postat Ianuarie 8, 2013 hi tech c compiler Link spre comentariu
Yoshiro Postat Ianuarie 12, 2013 Partajează Postat Ianuarie 12, 2013 ce pin folosesti pentru intrarea analogica? pe cati biti este conversia? Link spre comentariu
Vizitator tutumarian Postat Ianuarie 12, 2013 Partajează Postat Ianuarie 12, 2013 pinul folosit RA0. pai conversia nu se face pe 10 biti la pic16f877a? Link spre comentariu
Yoshiro Postat Ianuarie 13, 2013 Partajează Postat Ianuarie 13, 2013 Nu m-am uitat in datasheet. In primul rand trebuie sa creezi o functie de initializare, nu stiu daca ai creat-o, nu stiu ce Fosc ai. void ADC_Init(){//setezi registrii ADCON0, ADCON1 vezi datasheetADCON0=0b10000001; // frecventa de conversie Fosc/32, selectat AN0 canal ADCADCON1=0b00001110;// Fosc/32, rezultatul e left justified adica cei mai importanti 8 biti vor fi in ADRESH, AN0 -analogic, restul digital, Vdd, Vss referinte.// daca nu ai setat inca TRIS-urile in main poti sa o faci aici}unsigned char Read_ADC(){ADCON0bits.GO_DONE=1;//activeaza conversiawhile(ADCON0bits.GO_DONE==1);//sta cat timp convertestereturn ADRESH;//returneaza cei mai importanti 8 biti, pentru ultimii 2 folosesti ADRESL} Testeaza si vezi, nu stiu daca merge in hi-tech. S-ar putea in loc de GO_DONE sa fie GODONE etc. Link spre comentariu
Vizitator tutumarian Postat Ianuarie 13, 2013 Partajează Postat Ianuarie 13, 2013 am facut, nu imi da eroare la compilare doar ca in proteus nu imi merge simularea, imi da o eroare de genu: "ADC conversion clock period((2.5e-7) spre exemplu la 8mhz si Fosc/32) is less than min TAd=1.6us and is possibly inalid for device clock frequency". Eroare asta mi-o da indiferent de ce frecventa de conversie aleg, la oricare frecventa a microcontrolerului.am facut un calcul si ar trebui sa fie 4e-6 la 8mhz si Fosc/32 ceeia ce ar trebui sa fie suficient. Link spre comentariu
Yoshiro Postat Ianuarie 13, 2013 Partajează Postat Ianuarie 13, 2013 pai depinde si in program cum ai setat clockul,sa incercam Fosc/16 atunci, adica:ADCON0=0b01000001; // bitul 7 si 6ADCON1=0b01001110; // bitul 6ca sa mai incerci alte variante: (primul bit reprezinta bitul 6 din adcon1 si urmatorii 2 bitii 7 si 6 din adcon0)0 00 FOSC/20 01 FOSC/80 10 FOSC/320 11 FRC (clock derived from the internal A/D RC oscillator)1 00 FOSC/41 01 FOSC/161 10 FOSC/641 11 FRC (clock derived from the internal A/D RC oscillator) 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