Autor Tema: interrupcion int_comp en 18F2550  (Leído 2464 veces)

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

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
interrupcion int_comp en 18F2550
« en: 24 de Noviembre de 2010, 21:54:15 »
wenasss a tod@s... aqui traigo una duda que me tiene un poco mosca... estoy intentando hacer un capacimetro con un 16f628a usando los comparadores que lleva reduciondo al maximo la cantidad de componentes necesarios pero me he dado cuenta que para condensadores de baja capacidad...<100pf necesito un pic de gama media/alta... y aqui esta el problema... no puedo configurar las interrupciones de los comparadores del 18f2550... alguien los ha usado? he estado mirando el datashell para ver si necesitaba algun tipo de registro como el cvrcon pero aun probando todas las opciones nada de nada, decir que el Vref que utilizo es externo..
aqui va el codigo que gasto para la prueba

Citar
#include <18f2550.h>
#fuses HS,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,NOVREGEN,NOPBADEN
#use delay(clock=20000000)
#word cncom=0x0fb4
#word portb=0x0f81
#word cvrcon = 0x0fb5
#use standard_io(a)


#int_comp
void interrupcion()
{
   if(!c1out){
      portb=0xff;
   }
   else portb=0x00;
}
void main(){
   set_tris_b(0x00);   
   set_tris_a(0xFF);
   SETUP_ADC(ADC_OFF);
   SETUP_ADC_PORTS(NO_ANALOGS);
        setup_comparator(A0_A3_A1_A2);
   enable_interrupts(int_comp);
   enable_interrupts(global);   
   portb=0x00;
while(1){}
}

un saludo...
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: interrupcion int_comp en 18F2550
« Respuesta #1 en: 25 de Noviembre de 2010, 08:50:11 »
voy a colgar los archivos del proteus para poder simular y el codigo para que lo mireis a ver... me estoy haciendo loco....
por cierto lo he probado en proboard y tampoco va, osea que descarto el bug de los comparadores en proteus....
Esperando estoy alguna chispa que me ilumine...
un saludo....
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: interrupcion int_comp en 18F2550
« Respuesta #2 en: 11 de Diciembre de 2010, 22:52:10 »
lo siento pero aun sigo dandole vueltas y mas vueltas de por que no me van los comparadores en la gama de los 18f...
me pasaron un ejemplo en el foro de ccs pero no se por que a mi no me va....
aqui va el codigo que me pasaron...
Código: [Seleccionar]
#include <18F4550.h>
#fuses INTRC_IO,NOWDT,PUT,BROWNOUT,NOLVP
#use delay(clock=4000000)

#define VREF_LOW_THRESHOLD   11      // Vref = 2.3 volts
#define VREF_HIGH_THRESHOLD  12      // Vref = 2.5 volts

#define LED_PIN  PIN_B0

#byte CMCON = getenv("SFR:CMCON")

//------------------------------------
#INT_COMP
void isr()
{
int8 temp;

if(C1OUT == 1)
  {
   output_high(LED_PIN);  // LED on
   setup_vref(VREF_LOW | VREF_LOW_THRESHOLD);
  }
else
  {
   output_low(LED_PIN);  // LED off
   setup_vref(VREF_LOW | VREF_HIGH_THRESHOLD);
  }
 
// Read CMCON register to clear the "mismatch" condition.
temp = CMCON;   
}

//==================================================
void main()
{
int8 value;
   
setup_comparator(A0_VR_A1_VR | CP1_INVERT);

setup_vref(VREF_LOW | VREF_HIGH_THRESHOLD);

// Initialize the LED.
if(C1OUT == 1)
   output_high(LED_PIN);
else
   output_low(LED_PIN);

value = CMCON;  // Clear mismatch condition.   
clear_interrupt(INT_COMP);  // Clear interrupt flag
enable_interrupts(INT_COMP);  // Enable interrupts
enable_interrupts(GLOBAL);

while(1);
}
un saludo y a ver si hay suerte y alquien me puede aclarar un poco donde esta el fallo por que yo no lo encuentro...
PD... alguien podria bajarse los archivos que he puesto antes o compilar este programa y que me lo pase asi mirare si es un bug en mi compillador ccs, yo uso el 4.104
gracias y un saludo...
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...


 

anything