Autor Tema: Ejemplo INTERRUPCION ADC :(  (Leído 2226 veces)

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

Desconectado hector915

  • PIC12
  • **
  • Mensajes: 78
    • Blog Personal.
Ejemplo INTERRUPCION ADC :(
« en: 30 de Enero de 2014, 15:37:35 »
Saludos , Recientemente estoy realizando un proyecto que implica interrupciones de teclas digitales , y ademas de eso leer varios potenciometros usando interrupciones, El micro con el que estoy realizando esto es el pic18f4550 y me gustaria saber si alguien tiene un ejemplo.

Dejo mi configuracion que actualmente no funciona. :8}
Código: [Seleccionar]
#include <p18f4550.h>
#include <delays.h>
#include <adc.h>
#include <usart.h>
#include <stdlib.h>
#include <stdio.h>

//Librerias Propias ver includes.txt
#include "alcd.h"                         //LIBRERIA LCD MODIFICADA
#include "fuses.h"                      //FUSES DEFINITIONS
#include "config.h"                     //PORTS, TRIS AND OTHER FLAVORS.
#include "interrupts.h"                //INTERRUPCIONES
char k ;
void main(void)
{
   InitPorts();                         //Configura Dispositivos Micro {USART,TRIS,ADC,PWM}
   ADCON0bits.ADON=1;        //HABILITO EL CONVERTIDOR
while(1){
     blinker();                         // STATUS DEL MICRO

                }
}

//******************************************
//HIGH INTERRUPTS

#pragma code high_vector=0x008        //HIGH PRIORITY
void high_interrupt (void)
{
 _asm GOTO high_isr _endasm
}
#pragma code
#pragma interrupt high_isr
void high_isr (void)
{
int x=0;
x=PORTB&0b00001110;                 //Filtra Cambio en teclas, Maskara
//INTERRUPCION INT0 DE TECLAS DIGITALES
if (INTCONbits.INT0IF==1)
{
switch (x)
{
  case 2:
      Activate();
      break;
  case 4:
      Desactivate();
      break; }
INTCONbits.INT0IF=0;}
/**ESTA PARTE NO FUNCIONA ,ADIF SE PONE EN UNO CUANDO UN POTENCIOMETRO PRESENTA UN CAMBIO**/
if (PIR1bits.ADIF==1)
{   PIR1bits.ADIF=0;                    //LIMPIA LA BANDERA DE INTERRUPCION POR ADC
    ADCON0=0x01;                        //SELECIONA CANAL AN0
    ADCON0bits.GO=1;                    //INICIA CONVERSION
    if(ADCON0bits.NOT_DONE);            //ESPERA A TERMINAR
    WriteCmdXLCD(0x01);
    }
}
#pragma code



Lo que deseo realizar es simple tener dos botones uno para activar y otro para desactivar como interrupciones que ya funciona, lo otro es que cuando la bandera por interrupcion del adc se ponga en uno lea el dato analogo , lo guarde en una variable y lo envie por la usart, pero haciendo debuging cuando activo el potenciometro nunca se pone en 1 el ADIF.

Esta es la configuracion que estoy usando para configurar las interrupciones .
  
Código: [Seleccionar]
   TRISA=0XFF;  
    INTCON =0b11010000;             //INTERRUPCION GLOBAL =1, INTERRUPCION PERIFERICOS=1,INTERRUPCION TIMER=0, INTERRUPCION EXTERNA  =1,INT PUERTOB =0,TIMER=0,INTERRUPCION FLAG=0,
    INTCON2=0b11110000;             //PULL UPS DIS=1,
    INTCON3=0b00000000;             //INDICA SI HUBO ALGUNA DE LAS INTERRUPCIONES.
    INTCONbits.GIEH=1;              //ENABLE HIGH INTERRUPT
    PIR1=0b00000000;
    PIR2=0b00000000;
    PIE1=0b01000000;
    PIE2=0b00000000;
    IPR1=0b01000000;
    IPR2=0b00000000;
    RCONbits.IPEN=1;        

Agradeceria que alguien me pudiera pasar algo de documentacion del adc como interrupcion, o algun ejemplo.
if you can imagine it, you can embed it

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Ejemplo INTERRUPCION ADC :(
« Respuesta #1 en: 30 de Enero de 2014, 16:47:26 »
la interrupcion del ADC no inicia la lectura, la interrupcion lo que hace es avisarte cuando la lectura se completó
"Nada es imposible, no si puedes imaginarlo"

Desconectado hector915

  • PIC12
  • **
  • Mensajes: 78
    • Blog Personal.
Re: Ejemplo INTERRUPCION ADC :(
« Respuesta #2 en: 30 de Enero de 2014, 23:53:46 »
la interrupcion del ADC no inicia la lectura, la interrupcion lo que hace es avisarte cuando la lectura se completó

Tenes algun ejemplo por ahi que me facilites , ando revisando la literatura apenas.Lo agradeceria profundamente.
if you can imagine it, you can embed it

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Ejemplo INTERRUPCION ADC :(
« Respuesta #3 en: 31 de Enero de 2014, 11:24:51 »

Tenes algun ejemplo por ahi que me facilites , ando revisando la literatura apenas.Lo agradeceria profundamente.

no tengo ejemplos usando esa interrupción en hitech, podrías intentar en el buscador, aunque esa interrupcion se maneja igual que las demas, solo que tu esperas que está inicie la conversión y la interrupción no funciona de esta manera
"Nada es imposible, no si puedes imaginarlo"