Autor Tema: INT_RA CCS 12F683  (Leído 6153 veces)

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

Desconectado pmoreno

  • PIC10
  • *
  • Mensajes: 13
INT_RA CCS 12F683
« en: 30 de Marzo de 2008, 16:09:30 »
Hola a todos,
Necesito capturar el cruce por cero de la senoidal 230v 50Hz. Utilizo un 12f683 y en otras aplicaciones lo realizo mediante el pin gp2 y la interrupción externa ( una r de 10M entre el pin y fase "2 de 5M en serie como protección", el neutro está conectado a negativo del circuito y cambio la detección del flanco de subida o bajada en cada semiciclo). El concepto de esquema es similar al del "Minidimmer" de Nocturno. Todo me funcionaba perfecto hasta que he necesitado ese pin ( que es CCP ) para generar pwm (no tengo ciclos para generarla por soft).

Estoy intentando utilizar la interrupcion por cambio de estado de cualquier otro pin pero no me funciona, os dejo copia de cómo lo hago esperando me aportéis alguna idea:

#INT_RA
void  RA_isr(void){
   if ( INPUT(PIN_A2) != FlancoAnterior ){   
      FlancoAnterior = !FlancoAnterior;
      ........
      ........
   }
}

Este pic (12f683) dispone de interrupciones para cambio de estado individual de un pin pero no he conseguido que CCS me admita directivas del tipo:

#INT_RA1

Agradecería cualquier ayuda o sugerencia.

Un saludo a todos.
« Última modificación: 30 de Marzo de 2008, 16:33:03 por pmoreno »

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: INT_RA CCS 12F683
« Respuesta #1 en: 30 de Marzo de 2008, 16:46:57 »
Hola amigos!
por que no usa el Buscador ya en Foro se ha hablado muchos de estos, eso que desea es algo complicado dependiendo su uso, te recomiendo use el Buscador en el Foro General
Saludo

Desconectado pmoreno

  • PIC10
  • *
  • Mensajes: 13
Re: INT_RA CCS 12F683
« Respuesta #2 en: 31 de Marzo de 2008, 10:53:50 »
Hola de nuevo,

Muchas gracias por la sugerencia. Debí añadir al post que ya me he leído en el foro todo lo que he encontrado relacionado con el tema de captura de paso por cero. Creí que el texto dejaba por sentado que sé cómo implementarlo y ya lo he hecho otras veces y quizás debí resumir la cuestión de la siguiente manera:

Hola a todos,
Después de documentarme en este foro y otros recursos, decidí implementar la deteccion de cruce por cero de la senoidal 230v 50h utilizando el sistema que propone la AN521 de Microchip. Algunos habéis probado y teneis experiencia con ello y consiste en capturar los cambios en flancos de bajada y subida desde la int_ext del pic conectando el pin correspondiente a fase utilizando como limitador de intensidad una resistencia ( el negativo del circuito deberá estar conectado a neutro ).

Ahora debido a que, en el modelo de pic que utilizo, el pin para int_ext es el mismo que para generar pwm, y necesito esta última función querría consultaros si es posible con el mismo método de conexion capturar  el cruce por cero desde otro pin ( en lugar de utilizar la int_ext, aprovechar la interrupción por cambio de estado int_ra ). Lo he intentado, no lo he conseguido y no encuentro fallo software. El código de la interrupcion está en mi primer post. Por razones constructivas lo deseable es no añadir componentes.

Un saludo,

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: INT_RA CCS 12F683
« Respuesta #3 en: 01 de Abril de 2008, 08:49:06 »
Tal vez sería más fácil hacer el PWM por software en otro pin.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: INT_RA CCS 12F683
« Respuesta #4 en: 01 de Abril de 2008, 11:20:51 »
Según las definiciones de dicho micro en CCS puedes utilizar todas estas interrupciones:
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:
#define GLOBAL                    0x0BC0
#define INT_RTCC                  0x0B20
#define INT_EXT                   0x0B10
#define INT_AD                    0x8C40
#define INT_TIMER1                0x8C01
#define INT_TIMER2                0x8C02
#define INT_TIMER0                0x0B20
#define INT_EEPROM                0x8C80
#define INT_COMP                  0x8C08
#define INT_RA                    0x0B08
#define INT_CCP1                  0x8C20
#define INT_OSC_FAIL              0x8C04
#define INT_RA0                   0x010B08
#define INT_RA1                   0x020B08
#define INT_RA2                   0x040B08
#define INT_RA3                   0x080B08
#define INT_RA4                   0x100B08
#define INT_RA5                   0x200B08

¿Cuál es el error que te da si compilas con INT_RA1?

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: INT_RA CCS 12F683
« Respuesta #5 en: 01 de Abril de 2008, 17:12:51 »

   Hola, INT_RA1, INT_RA2, etc. solo pueden ser utilizados en enable_interrupts();

 si se utilizan como #INT_RA1, el programa no compila.

 Para entrar a la interrupcion debes utilizar #INT_RA y dentro de la interrupcion ver que pin cambio de estado, eso si activaste mas de un int_rax.

  Saludos

Desconectado pmoreno

  • PIC10
  • *
  • Mensajes: 13
Re: INT_RA CCS 12F683
« Respuesta #6 en: 02 de Abril de 2008, 09:30:44 »
ok, gracias por la ayuda. No acababa de entender el tema de int_ra1,int_ra2 y demás. Ahora habilito la interrupción como int_ra1  y en la rutina de atención utilizo la directiva #int_ra.
Como es el unico pin con interrupcion por cambio habilitada el sistema ha sido sencillo.
Me ha quedado libre gp2 para generacion de pwm y además me ahorro cambiar el flanco de detección en cada cruce por cero (usando int_ext era obligatorio).

Un saludo,


 

anything