TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Giovannito en 04 de Septiembre de 2015, 22:42:19

Título: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
Publicado por: Giovannito en 04 de Septiembre de 2015, 22:42:19
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:
Título: Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
Publicado por: KILLERJC 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
Título: Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
Publicado por: elgarbe en 05 de Septiembre de 2015, 13:22:56
Y todo eso a las 3 de la mañana? Que grande!
Título: Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
Publicado por: KILLERJC 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.
Título: Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
Publicado por: elgarbe 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
Título: Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
Publicado por: KILLERJC 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
Título: Re: Requiero un ejemplo de codigo para usar conversión AD en pic16f819 con XC8
Publicado por: Giovannito 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