pic adc lee datos

1

He intentado leer datos analógicos que vienen de adc. Por esta razón, he escrito siguiendo los segmentos de programa. ¿Puedes mirar y decir "¿qué tiene de malo?" o "¿me olvido algo que debería ser puesto?" o "¿Debo inicializar cualquier E / S?".

herramientas;

  • pic 18f4520
  • mplab x ide
  • sdcc

parte de inicialización

ADCON0 = 0b00011101;       
ADCON1 = 0b00000111;       
ADCON2 = 0b10111010;       

leer parte

ADCON0bits.GO=1;        
while(ADCON0bits.GO);   
value=((unsigned)ADRESH<<8)+ADRESL; 
    
pregunta

2 respuestas

1

no está siguiendo lo que se sugiere en la hoja de datos, aunque sus valores de registro parecen ser correctos. Le sugiero que siga exactamente el orden de escritura de registro que se proporciona en la página 227 de la hoja de datos :

que será:

ADCON1 = 0b00000111;

ADCON0 |= 0b00011100;
ADCON0 &= 0b11011111;

ADCON2 = 0b10111010; 

ADCON0bits.ADON = 1;

Luego puedes sondear el bit GO / DONE mientras lo estás haciendo. Si esto todavía no funciona, intente deshabilitar las interrupciones, es decir:

INTCON &= 0b00111111;

Si esto todavía no funciona, debería proporcionar más información sobre lo que no funciona exactamente.

    
respondido por el Vladimir Cravero
0

Siempre que utilice un puerto como entrada analógica, debe asegurarse de que el puerto esté configurado correctamente con el registro TRIS y el registro ADCON1 (o el registro CONFIG3H para PortB < 4: 0 >). De manera predeterminada, cuando se restablecen los PIC18, todos los pines del puerto se configuran automáticamente para ser una entrada analógica (pendiente de la configuración del registro CONFIG3H), pero es posible que su firmware haya cambiado esta configuración antes de usar el módulo ADC.

Por ejemplo, para configurar AN12 para que sea una entrada analógica, deberías hacer lo siguiente:

  1. Establezca el registro TRISB, bit0, en 0x1 (AN12 está en el puerto B0).
  2. Establezca PCFG de ADCON1 en 0x0.

Para el mordisco más bajo de PortB (PORTB < 4: 0 >), se puede configurar el bit PBADEN del registro CONFIG3H en lugar de jugar con la configuración TRIS:

PBADEN: PORTB A/D Enable bit 
(Affects ADCON1 Reset state. ADCON1 controls PORTB<4:0> pin configuration.)
1 = PORTB<4:0> pins are configured as analog input channels on Reset
0 = PORTB<4:0> pins are configured as digital I/O on Reset

De forma predeterminada, PBADEN se establece en 1, pero no sé qué SDCC establece este valor si no se especifica.

    
respondido por el TRISAbits

Lea otras preguntas en las etiquetas