Sari la conținut
ELFORUM - Forumul electronistilor

ADC pe PIC16F690


lama

Postări Recomandate

Salutincerc sa fac o conversie AD folosind un pic16f690Am facut codul si obtin niste valorii care se tot schimba fara o logica anumeCitirea o fac pe AN7 adica pe pinul RC3.Atasez codul , poate vedeti unde e eroarea./************************************************************************* ** Processor: 16F690 ** Pin assignments: ** RA0 - ICSPDAT ** RA1 - ICSPCLK ** RA2 - SCLK ** RA3 - MCLR ** RA4 - Ain ** RA5 - Test Led ** RB4 - SCE ** RB5 - Buton 1 ** RB6 - Buton 2 ** RB7 - Buton 3 ** RC0 - DNK ** RC1 - D/C ** RC2 - RST ** RC3 - Vin **************************************************************************/#include #include #include #include "5110.h"#define CLK RA2 #define RST RC2 __CONFIG(FOSC_INTRCIO & // INTOSC oscillator internal WDTE_OFF & // Watchdog timer disabled PWRTE_ON & // Power up timer enabled BOREN_OFF & // Brown-out detect modes disabled CPD_OFF & // Protection of program code off disabled CP_OFF & // Protection of data block disabled MCLRE_OFF); // Master clear reset#define _XTAL_FREQ 8000000 /* Crystal frequency in MHz */#define cit_delay 1000#define Led_test RA5#define ON 1#define OFF 0void init(void){OSCCON=0x70; /* Select 8 Mhz internal clock */TRISA = 0x00; TRISB = 0x00; TRISC = 0b00001000; // RC3 input PORTC = 0; PORTB = 0; PORTA = 0; ANSEL = 0b10000000; // Set PORT AN7 to analog input AN0 to AN6 digital I/OANSELH = 0x00; // Set PORT AN8 to AN11 as Digital I/OADCON0=0b10011100; // select right justify result. ADC port channel AN7ADCON1=0b00110000; // Select the FRC for 8 Mhz//ADCON1=0b00100000; //Fosc/32VCFG=0; //referinta la VDd- mai fortez odata desi e facuta mai susCM1CON0 = 0; CM2CON0 = 0; C1ON=0; // Turn off Comparators C2ON=0;VRCON = 0; WPUB=0;WPUA=0;ADON=1; // turn on the A2D conversion module}void main(void){ char i;unsigned int adc,adc_dec;unsigned char buf[10]; init(); CLK=0; // SLED4C clock pin must idle low init_nokia(); __delay_ms(250); nokia_build_DDRAM(); // clear the display while(1) { nokia_gotoxy(0,0); nokia_printmessage(" ADC"); Led_test=ON; adc=0; adc_dec=0;for(i=0;i<100;i++) { GO_nDONE=1; // initiate conversion on the channel 0 while(GO_nDONE) continue; // Wait conversion done adc += ADRESL; // Get the 8 bit LSB result adc += (ADRESH << 8); // Get the 2 bit MSB result adc_dec += ( ADRESH << 8) + ADRESL; } adc /= 100; adc_dec /=100; sprintf(buf, " %d", adc_dec); nokia_gotoxy(0,4); nokia_printmessage(" "); nokia_gotoxy(0,4); nokia_printmessage(&buf); Led_test=OFF; __delay_ms(1000); }}

Link spre comentariu
  • Răspunsuri 28
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • lama

    14

  • Liviu M

    7

  • costi002

    5

  • MatyC

    2

Top autori în acest subiect

OSCCON nu trebuie sa fie 0x71? Intreb, n-am lucrat cu serii de-astea noi si n-am timp acum sa citesc toata documentatia, asta mi-a sarit singur in ochi (voiam sa vad daca chiar au clock intern de 8MHz).

Link spre comentariu

OSCCON nu trebuie sa fie 0x71? Intreb, n-am lucrat cu serii de-astea noi si n-am timp acum sa citesc toata documentatia, asta mi-a sarit singur in ochi (voiam sa vad daca chiar au clock intern de 8MHz).

Asa am zis si eu dar peste tot am gasit ca e 0x70desi si mie mi-a iesit 0b01110001 adica 0x71.oricum face la fel cu ambele valori: adica citeste ceva aiurea chiar daca am sau nu tensiune la intrare
Link spre comentariu

Din cate m-am prins eu pana acum (mai mult din ce am citit decat din experienta proprie), asta inseamna ca pinul pe care faci achizitia e prost configurat.Esti sigur ca i-ai dezactivat toate celelalte functii?

Link spre comentariu

Din cate m-am prins eu pana acum (mai mult din ce am citit decat din experienta proprie), asta inseamna ca pinul pe care faci achizitia e prost configurat.Esti sigur ca i-ai dezactivat toate celelalte functii?

RC3/AN7/C12IN3-/P1C RC3 ST CMOS General purpose I/O.AN7 AN — A/D Channel 7 input.C12IN3- AN — Comparator C1 or C2 negative input.P1C — CMOS PWM output.Astea sunt functiile luiPartea de ADC am setat-o,comparator e offMai ramine dor partea de PWM care cred ca e anulata odata cu comparatorulSau nu?
Link spre comentariu

pinul folosit, e legat la Vcc/Gnd sau este in aer.LE: pinul care este analog, este setat ca intrare? (trisc,6 sau 7)

E legat la o sursa de tensiune variabila prin doua rezistente .Pai aveti codul. Eu zic ca e setat ca intrare in trisc si e selecat ca intrare la ADC.
Link spre comentariu

asa este, nu am fost atent. Acum, vin cu o alta intrebare? pe ce afisezi valoarea citita? ce inseamna valori fara logica?

pe un LCD nokia 5110(este .h in fata codului)Valori fara logica: chiar fara nimic conecat la intrare el pare sa citeasca ceva, niste valori aleatoare , nerepetitive.
Link spre comentariu

In acest caz, chiar nu stiu ce sa mai spun. Problema mea este ca nu ma pricep la C, eu is cu asembler-ul. De fiecare data cand am lucrat cu adc, pur si simplu am urmati pasii descrisi in datasheet, pas cu pas si de fiecare data a mers perfect.

Link spre comentariu

Si eu sunt tot cu asm-ul.Presupunand ca lucrezi la 8 Mhz, incearca sa incarci in ADCON1 0b0101000 si vezi daca merge.Vezi ca in datasheet la pagina 109 e un tabel cu valorile in functie de frecventa de lucru.La config eu am __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)Nu am gasit ce inseamna FOSC_INTRCIO si INTOSC.Si inca o chestie.IntreGO_nDONE=1; // initiate conversion on the channel 0siwhile(GO_nDONE) continue; // Wait conversion done am un delay de 5usecLa 4 Mhz a mers si fara, la 8 nu.

Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări