Autor Tema: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8  (Leído 2097 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Giovannito

  • PIC10
  • *
  • Mensajes: 9
Estimados profesores y expertos:

Necesito un ejemplo de conversiòn AD en còdigo de XC8 para pic16f819. Necesito las pautas básicas, por favor.  :oops:

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
« Respuesta #1 en: 05 de Septiembre de 2015, 03:09:36 »
Es muy dificil, trabajar con el ADC es unicamente para gente que lee el datasheet, mentiras :P , pero si, la costumbre de microchip de ponerte una receta para iniciar un modulo esta como siempre en el datasheet:

Del datasheet que te dice paso a paso como hacerlo...

Citar
1. Configure the A/D module:
   Configure analog pins/voltage reference and digital I/O (ADCON1)
   Select A/D input channel (ADCON0)
   Select A/D conversion clock (ADCON0)
   Turn on A/D module (ADCON0)

2. Configure A/D interrupt (if desired):
   Clear ADIF bit
   Set ADIE bit
   Set GIE bit

3. Wait the required acquisition time.

4. Start conversion: Set GO/DONE bit (ADCON0)

5. Wait for A/D conversion to complete by either:
   Polling for the GO/DONE bit to be cleared (with interrupts disabled);
   OR
   Waiting for the A/D interrupt

6. Read A/D Result register pair (ADRESH:ADRESL), clear bit ADIF if required.

7. For next conversion, go to step 1 or step 2 as required. The A/D conversion time per bit is defined as TAD. A minimum wait of 2 TAD is required before the next acquisition starts.


Código: C
  1. int ResultadoADC;  //16 bits si no me equivoco
  2.  
  3. // Paso 1 , Aca lo hice todo junto pero podes hacerlo bit por bit
  4.  
  5. ADCON1 = 0x8E;  //AN0 solo habilitado (tenes una tabla en el datasheet), los demas digitales, justificado derecha.
  6. ADCON0 = 0xC1;  // Canal AN0 , Seleccione reloj RC interno que posee el ADC y activo el ADC poniendo 1 en el bit ADON
  7.  
  8. // Paso 2
  9. // No uso interrupciones, asi que no tengo que activar las interrupciones del ADC
  10.  
  11. // Paso 3
  12. _delay_us(15); // el TAD del FRC puede ir de 4 a 6 us segun el datasheet. Se necesita esperar 2 TAD, asi que puse 15 us
  13.  
  14. // Paso 4
  15. ADCON0bits.GO = 1
  16.  
  17. //Paso 5 por que no uso interrupciones espero que termine aca, sino activaria y cuando se produzca la interrupcion significa que ya esta listo.
  18. while(ADCON0bits.GO);  // Cuando se pone a 0 es por que termino
  19.  
  20. // Paso 6, guardo el resultado
  21. ResultadoADC = (ADRESH << 8);
  22. ResultadoADC += ADRESL;
  23.  
  24. //Paso 7
  25. // Si necesito hacer lo de nuevo repito los pasos 3,4,5 y 6

Lo llene de comentarios, para que veas lo facil que era, siguiendo los pasos del datasheet. pero si observas son solo 2 lineas de configuracion (a lo sumo 2 mas si usas interrupciones) + 5 lineas que lleva el ADC
« Última modificación: 05 de Septiembre de 2015, 03:23:10 por KILLERJC »

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
« Respuesta #2 en: 05 de Septiembre de 2015, 13:22:56 »
Y todo eso a las 3 de la mañana? Que grande!
-
Leonardo Garberoglio

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
« Respuesta #3 en: 05 de Septiembre de 2015, 14:47:23 »
Fue un copy paste del ADC, solo busque lo que sabia que iba a encontrar xD jeje

Estaba renegando con el Altium Designer. No encontre la forma de hacer una placa de solo una capa bottom todavia.. parece facil pero cuando veo en 3D parece como que los caminos estuvieran en el top tambien.. lo cual yo jamas hice eso.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
« Respuesta #4 en: 05 de Septiembre de 2015, 19:37:39 »
Estaba renegando con el Altium Designer. No encontre la forma de hacer una placa de solo una capa bottom todavia.. parece facil pero cuando veo en 3D parece como que los caminos estuvieran en el top tambien.. lo cual yo jamas hice eso.
eso puede ser x q tenes seleccionada una net. Apreta Ctrl y hace click en un lugar vacío para que se deseleccione... o son todas las pistas las que te aparecen? a mi no me aparecen ninguna, ni las del top ni las del bottom
-
Leonardo Garberoglio

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
« Respuesta #5 en: 06 de Septiembre de 2015, 00:04:52 »
eso puede ser x q tenes seleccionada una net. Apreta Ctrl y hace click en un lugar vacío para que se deseleccione... o son todas las pistas las que te aparecen? a mi no me aparecen ninguna, ni las del top ni las del bottom

ya voy a preguntar en en la seccion de altium para no desvirtuar mas este hilo, aunque el dueño del post no paso por aca xD

Desconectado Giovannito

  • PIC10
  • *
  • Mensajes: 9
Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
« Respuesta #6 en: 06 de Septiembre de 2015, 14:29:46 »
Muchas gracias KillerJC, muy apreciable tu explicación. lo pondré en práctica. estuve desconectado por eso no pude contestar. Pero el dato es excelente