Autor Tema: Interrupcion ADC Pic 16f88  (Leído 2452 veces)

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

Desconectado Richi_Sambora

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 23
Interrupcion ADC Pic 16f88
« en: 03 de Abril de 2019, 17:37:03 »
Hola a todos.

Soy nuevo en programacion c, hasta ahora me habia arreglado para lo que necesitaba con FlowCode.
Hice un programa para leer una entrada analogica y mostrar el valor en volts y su equivalente en entero.
Lo que estoy tratando de hacer ahora(si es posible) es agregar una interrupcion ADC cuando la entrada sea de pulsos y tomar una decision en consecuencia.
pero mis conocimientos estan aun muy verdes.
No pido que me lo hagan si no que me digan si es posible y que me orienten un poco sobre el tema de interrupciones ADC.

Desde ya muchas gracias

Dejo el codigo c

Código: C
  1. #include <16f88.h>
  2. #device ADC = 8
  3. #fuses XT
  4. #use delay (clock=4)
  5. #define LCD_RS    PIN_B2
  6. #define LCD_E     PIN_B3
  7. #define LCD_DB4   PIN_B4
  8. #define LCD_DB5   PIN_B5
  9. #define LCD_DB6   PIN_B6
  10. #define LCD_DB7   PIN_B7
  11. #include <lcd1.c>
  12. int valor;
  13. float valor2=0;
  14. void main(){
  15.    SETUP_ADC(ADC_CLOCK_INTERNAL);
  16.    SETUP_ADC_PORTS(ALL_ANALOG);
  17.    lcd_init();
  18.    SET_ADC_CHANNEL(0);
  19.    
  20.    while(true){
  21.      
  22.       delay_us(20);
  23.       valor=READ_ADC();
  24.       valor2=(5.00*valor/255.0);
  25.       lcd_gotoxy(1,0);
  26.       printf(lcd_putc,"Probando=%03u",valor);
  27.       lcd_gotoxy(1,1);
  28.       printf(lcd_putc,"Voltaje=%3.2f V",valor2);
  29.    }
  30. }

Desconectado Richi_Sambora

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 23
Re:Interrupcion ADC Pic 16f88
« Respuesta #1 en: 03 de Junio de 2019, 18:02:35 »
Hola de nuevo, estoy tratando de entender como funcionan las interrupciones AD pero con encuentro la forma de hacerlo funcionar.

esta vez estoy probando con un 12f675

Código: C
  1. #include <12f675.h>
  2. #fuses NOMCLR , INTRC_IO, NOWDT
  3. #use delay(clock=4M)
  4. int voltage=0;
  5. #INT_AD
  6. void isr(){
  7.  output_toggle(PIN_A0);  
  8. }
  9. void main(){
  10.    SETUP_ADC(ADC_CLOCK_INTERNAL);
  11.    SETUP_ADC_PORTS(AN3_ANALOG);
  12.    SET_ADC_CHANNEL(3);
  13.    enable_interrupts(GLOBAL);
  14.    enable_interrupts(INT_AD);
  15.    READ_ADC(ADC_START_ONLY);
  16.  
  17.    while(TRUE){
  18.       delay_us(20);
  19.       voltage=READ_ADC(ADC_READ_ONLY);
  20.      
  21.         output_toggle(PIN_A1);
  22.         delay_ms(100);
  23.    }
  24. }

esto no funciona, que estoy haciendo mal

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Interrupcion ADC Pic 16f88
« Respuesta #2 en: 03 de Junio de 2019, 19:42:05 »
No te puedo ayudar con CCS.. Es un compilador que no utilizo.

Pero lo unico que te puedo decir es que al finalizar la conversion es cuando se dispara la interrupcion del ADC