A
Analyzer
Guest
Salve,
Sono nei guai con la funzione di ADC 16F877A.I am A0 porta utilizzando, A1, A5, E0, E1, E2.When misura della tensione tra i porti e GND sono di solito a 1 milivolt o 2 milivolts.But quando i log li funzione restituisce ADC 100-120 valori pari a 2.0V - 2.5V.When E2 provvedimento dà i 50 milivolt quando io non applicare tensione su di essa (quando i media idle)!Il mio dispositivo non funziona correttamente ora Please help!
Il mio codice è scritto con il compilatore C CCS v3.155
Il mio codice:
# include <16F877A.h>
# device adc = 8
# usano il ritardo (clock = 4000000)
# fusibili XT, NOWDT, NOPROTECT, calo di tensione, PUT, NOLVP
# use rs232 (baud = 9600, xmit = PIN_C6, AN = PIN_C7)void main () (
int v1, v2, v3, v4, v5, v6;
char ON;
setup_adc_ports (ALL_ANALOG);
setup_adc (ADC_CLOCK_INTERNAL);
setup_psp (PSP_DISABLED);
setup_spi (FALSE);
setup_counters (RTCC_INTERNAL, RTCC_DIV_2);
setup_timer_1 (T1_DISABLED);
setup_timer_2 (T2_DISABLED, 0,1);
setup_comparator (NC_NC_NC_NC);
setup_vref (FALSE);
set_tris_d (0x00);
ON = 1;
printf ( "3A75D5FA \ r \ n");
while (1)
(
delay_ms (500);
set_adc_channel (0); delay_us (100); v1 = read_adc (); delay_us (100);
set_adc_channel (1); delay_us (100); v2 = read_adc (); delay_us (100);
set_adc_channel (4); delay_us (100); v3 = read_adc (); delay_us (100);
set_adc_channel (5); delay_us (100); v4 = read_adc (); delay_us (100);
set_adc_channel (6); delay_us (100); v5 = read_adc (); delay_us (100);
set_adc_channel (7); delay_us (100); v6 = read_adc (); delay_us (100);
printf ( "Valore:% 2X /% 2X /% 2X /% 2X /% 2X /% 2X!", v1, v2, v3, v4, v5, v6);
if (ON == 1) (output_high (PIN_D2); ON = 0
else (output_low (PIN_D2); ON = 1
v1 = 0; v2 = 0; v3 = 0; v4 = 0; V5 = 0; v6 = 0;
)
)Ho caricato lo schema, se si vuole guardare.
Analyzer.
Last edited by Analyzer il 04 Jun 2003 15:20, modificato 1 volta in totale
Sono nei guai con la funzione di ADC 16F877A.I am A0 porta utilizzando, A1, A5, E0, E1, E2.When misura della tensione tra i porti e GND sono di solito a 1 milivolt o 2 milivolts.But quando i log li funzione restituisce ADC 100-120 valori pari a 2.0V - 2.5V.When E2 provvedimento dà i 50 milivolt quando io non applicare tensione su di essa (quando i media idle)!Il mio dispositivo non funziona correttamente ora Please help!
Il mio codice è scritto con il compilatore C CCS v3.155
Il mio codice:
# include <16F877A.h>
# device adc = 8
# usano il ritardo (clock = 4000000)
# fusibili XT, NOWDT, NOPROTECT, calo di tensione, PUT, NOLVP
# use rs232 (baud = 9600, xmit = PIN_C6, AN = PIN_C7)void main () (
int v1, v2, v3, v4, v5, v6;
char ON;
setup_adc_ports (ALL_ANALOG);
setup_adc (ADC_CLOCK_INTERNAL);
setup_psp (PSP_DISABLED);
setup_spi (FALSE);
setup_counters (RTCC_INTERNAL, RTCC_DIV_2);
setup_timer_1 (T1_DISABLED);
setup_timer_2 (T2_DISABLED, 0,1);
setup_comparator (NC_NC_NC_NC);
setup_vref (FALSE);
set_tris_d (0x00);
ON = 1;
printf ( "3A75D5FA \ r \ n");
while (1)
(
delay_ms (500);
set_adc_channel (0); delay_us (100); v1 = read_adc (); delay_us (100);
set_adc_channel (1); delay_us (100); v2 = read_adc (); delay_us (100);
set_adc_channel (4); delay_us (100); v3 = read_adc (); delay_us (100);
set_adc_channel (5); delay_us (100); v4 = read_adc (); delay_us (100);
set_adc_channel (6); delay_us (100); v5 = read_adc (); delay_us (100);
set_adc_channel (7); delay_us (100); v6 = read_adc (); delay_us (100);
printf ( "Valore:% 2X /% 2X /% 2X /% 2X /% 2X /% 2X!", v1, v2, v3, v4, v5, v6);
if (ON == 1) (output_high (PIN_D2); ON = 0
v1 = 0; v2 = 0; v3 = 0; v4 = 0; V5 = 0; v6 = 0;
)
)Ho caricato lo schema, se si vuole guardare.
Analyzer.
Last edited by Analyzer il 04 Jun 2003 15:20, modificato 1 volta in totale