ADC problém

J

junhao_wu

Guest
Ahoj kluci, potřebují pomoc zde.Snažím se program A / D konverzí do mého PIC16F873A k pocitu analogové napětí.
To je to, jak chci, můj program do práce:
Za prvé, jakmile je na PIC, první věc, kterou udělá, je smysl pro vstupní napětí.Je-li napětí menší než 4V, PWM bude režim se zapne a je-li napětí je více než 4V PWM by měl být vypnout.

Nejsem dostat nějaký výsledek z mého ADC.Spíše JÁ am prospěch "0" hodnotu

Pin číst vstupní napětí je pin7 (RA5).I am using VDD a Vss jako můj /-Vref
I am using PIC16F873A a CC5x kompilátor.

Níže je můj kód: Omlouvám se, pokud můj kód vzhled druh chaotický

Kód:# Include "math24f.h"

# Pragma čip PIC16F873A

# Define num1 900

# Define num2 1022/ / Uns8 cla, mcount, ncount;

int16 v_batt;neplatné int_pwm (void)

(

int cla;

TRISC = 0b.0011.0000;

PORTC.1 = 0; / / port C2 výstup (CCP1, PWM1)

PIE1.1 = 0; / / vypnout časovač 2 přerušuje

PIE1.2 = 0; / / vypnout ccp1 přerušení

CCP1CON = 0; / / CCP1 modulu off

PR2 = 0b.0011.1110; / / zatížení období registru (62)

CCP1CON.5 = 0;

CCP1CON.4 = 0;

daň = 0b.0001.1111; / / set pracovní cyklus

CCPR1L = 0b.0001.1111;

T2CON = 0b.0000.0000; / / prescaler 01:01

TMR2 = 0; / / časovač 2 off

CCP1CON = 0b.0000.1100; / / ccp1 PWM režim, ccp1 modul

)neplatné int_adc (void)

(TRISA = 0b.0011.1111; / / set RA0, RA1, RA2, RA3, RA4 a RA5 na analogový vstup

ADCON1 = 0b.1000.0000;) / / set Vref = Vdd, Vref-= Vss, zarovnáno.neplatné start_conv (void) (ADCON0.2 = 1; / / start / D konverzí

while (ADCON0.2 == 1) (); / / test, pokud A / D konverzi stále

návrat;

)neplatné get_measure_batt (void)

(

v_batt.low8 = ADRESL; / / získat měření a ukládání do v_batt

v_batt.mid8 = ADRESH;

)neplatné measure_batt (void)

(ADCON0 = 0b.0110.0001;

/ / A / D převodník modul napájení, vyberte Channel 4 jako vstupní pin,

/ / Fosc / 8

start_conv ();

get_measure_batt ();

)

void main (void)

(

int_adc ();

while (1)

(measure_batt ();

if (v_batt <num1)

(

int_pwm ();// do PWM věci zde, pokud Volt je menší než 4V

T2CON.2 = 1;

)

jiný

(

int_pwm ();

T2CON.2 = 0; / / vypnout PWM-li napětí větší než 4V

)

)

)
 
junhao_wu napsal:

Ahoj kluci, potřebují pomoc zde.
Snažím se program A / D konverzí do mého PIC16F873A k pocitu analogové napětí.

To je to, jak chci, můj program do práce:

Za prvé, jakmile je na PIC, první věc, kterou udělá, je smysl pro vstupní napětí.
Je-li napětí menší než 4V, bude režim PWM se zapnout a je-li napětí je více než 4V PWM by měl být vypnout.Nejsem dostat nějaký výsledek z mého ADC.
Spíše JÁ am prospěch "0" hodnotuPin číst vstupní napětí je pin7 (RA5).
I am using VDD a Vss jako můj /-Vref

I am using PIC16F873A a CC5x kompilátor.Níže je můj kód: Omlouvám se, pokud můj kód vzhled druh chaotickýKód:# Include "math24f.h"

# Pragma čip PIC16F873A

# Define num1 900

# Define num2 1022/ / Uns8 cla, mcount, ncount;

int16 v_batt;neplatné int_pwm (void)

(

int cla;

TRISC = 0b.0011.0000;

PORTC.1 = 0; / / port C2 výstup (CCP1, PWM1)

PIE1.1 = 0; / / vypnout časovač 2 přerušuje

PIE1.2 = 0; / / vypnout ccp1 přerušení

CCP1CON = 0; / / CCP1 modulu off

PR2 = 0b.0011.1110; / / zatížení období registru (62)

CCP1CON.5 = 0;

CCP1CON.4 = 0;

daň = 0b.0001.1111; / / set pracovní cyklus

CCPR1L = 0b.0001.1111;

T2CON = 0b.0000.0000; / / prescaler 01:01

TMR2 = 0; / / časovač 2 off

CCP1CON = 0b.0000.1100; / / ccp1 PWM režim, ccp1 modul

)neplatné int_adc (void)

(TRISA = 0b.0011.1111; / / set RA0, RA1, RA2, RA3, RA4 a RA5 na analogový vstup

ADCON1 = 0b.1000.0000;) / / set Vref = Vdd, Vref-= Vss, zarovnáno.neplatné start_conv (void) (ADCON0.2 = 1; / / start / D konverzí

while (ADCON0.2 == 1) (); / / test, pokud A / D konverzi stále

návrat;

)neplatné get_measure_batt (void)

(

v_batt.low8 = ADRESL; / / získat měření a ukládání do v_batt

v_batt.mid8 = ADRESH;

)neplatné measure_batt (void)

(ADCON0 = 0b.0110.0001;

/ / A / D převodník modul napájení, vyberte Channel 4 jako vstupní pin,

/ / Fosc / 8

start_conv ();

get_measure_batt ();

)

void main (void)

(

int_adc ();

while (1)

(measure_batt ();

if (v_batt <num1)

(

int_pwm ();// do PWM věci zde, pokud Volt je menší než 4V

T2CON.2 = 1;

)

jiný

(

int_pwm ();

T2CON.2 = 0; / / vypnout PWM-li napětí větší než 4V

)

)

)
 

Welcome to EDABoard.com

Sponsor

Back
Top