TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: zer0007 en 05 de Mayo de 2004, 04:10:00

Título: Interrupciones en PIC
Publicado por: zer0007 en 05 de Mayo de 2004, 04:10:00
Existe algun compilador de C para PIC (en mi caso P18) que trabaje directamente con la rutina de esta y no tenga que entrar en un poolling (con el c18 hay que hacer un pooling y un goto al final). Es una limitación del micro, o es del compilador ? Gracias
Título: RE: Interrupciones en PIC
Publicado por: cucaracha en 05 de Mayo de 2004, 04:17:00
Prueba el CCS (o PCWH que es lo mismo). Se hace muy simple...
La activas y creas una rutina. Un ejemplo de uso en este sería:
Codigo:

#include <16f84a.h>

#fuses HS,NOWDT
#use delay (clock=4000000)
#define INTS_PER_SECOND 15 // (4000000/(4*256*256))

byte seconds; // A running seconds counter
byte int_count; // Number of interrupts left before a second has elapsed
int numero;

#int_rtcc // This function is called every time
clock_isr() { // the RTCC (timer0) overflows (255->0).
--int_count;
if(int_count==0) { // per second.
   ++seconds;
   if (numero == 0) {
      numero = 1;
   } else {
      numero = 0;
      }
   int_count=INTS_PER_SECOND;
   }

}

void main(void) {
int_count=INTS_PER_SECOND;
set_timer0(0);
setup_counters( RTCC_INTERNAL, RTCC_DIV_256);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);

set_tris_a(0x00);
numero = 0;
for( ; ; ) {
if(numero==0) {
output_bit(PIN_A0,1);
} else {
output_bit(PIN_A0,0);
}
}
}



Como ves sólo hay que activarla y luego hacer una rutina indicando antes la interrupción que se trata, #int_rtcc . Osea, lo que esté debajo de esto, la función, es lo que hace cuando se crea esa interrupción. Fácil verdad...
Título: RE: Interrupciones en PIC
Publicado por: zer0007 en 05 de Mayo de 2004, 04:56:00
Muchas gracias, por cierto: este compilador se puede integrar con MPLAB o tiene su propio programa ¿?. Y otra cosilla cual es la ultima version de este, de donde lo puedo sacar (emule tal vez ?), y donde puedo encontrar ejemplos y documentacion /ya que la documentacion de la web microchip y las librerias es para el c18

Gracias
Título: RE: Interrupciones en PIC
Publicado por: cucaracha en 05 de Mayo de 2004, 08:04:00
Creo que si se puede integrar, no lo se seguro.
Pero trae su propio programa, muuuucho mejor que el MPLab.
Se puede usar el ICD1 de microchip, y va mucho mejor y más rápido.
En cuanto a la última versión, es la 3.190. Busca donde dices o con el Overnet, que es lo mismo (una variante) pero más cómodo, al estilo Kazaa...
Por el foro hay un manual de este en español. Suficiente para trabajar con el. Si no lo encuentras te lo envío yo. En cuanto a ejemplos, el foro está lleno...
Título: RE: Interrupciones en PIC
Publicado por: CDT_Gonzalo en 05 de Mayo de 2004, 08:14:00
Escrito originalmente por cucaracha
Prueba el CCS (o PCWH que es lo mismo). Se hace muy simple...
La activas y creas una rutina. Un ejemplo de uso en este sería:
Codigo:

#include <16f84a.h>

#fuses HS,NOWDT
#use delay (clock=4000000)
#define INTS_PER_SECOND 15 // (4000000/(4*256*256))

byte seconds; // A running seconds counter
byte int_count; // Number of interrupts left before a second has elapsed
int numero;

#int_rtcc // This function is called every time
clock_isr() { // the RTCC (timer0) overflows (255->0).
--int_count;
if(int_count==0) { // per second.
   ++seconds;
   if (numero == 0) {
      numero = 1;
   } else {
      numero = 0;
      }
   int_count=INTS_PER_SECOND;
   }

}

void main(void) {
int_count=INTS_PER_SECOND;
set_timer0(0);
setup_counters( RTCC_INTERNAL, RTCC_DIV_256);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);

set_tris_a(0x00);
numero = 0;
for( ; ; ) {
if(numero==0) {
output_bit(PIN_A0,1);
} else {
output_bit(PIN_A0,0);
}
}
}



Como ves sólo hay que activarla y luego hacer una rutina indicando antes la interrupción que se trata, #int_rtcc . Osea, lo que esté debajo de esto, la función, es lo que hace cuando se crea esa interrupción. Fácil verdad...


La verdad que es muy copado como trabaja este compilador, porque ademas se encarga de almacenar los registros y de resetear todos los flags q hagan falta.

Ademas tiene un monton de librerias como para manejar varias cosas, entre ellas ciertos integrados, displays lcds, protocolos (rs232 realmente esta tan "acoplado" al sistema que se hace realmente fácil, solo con la funcion printf), entre varias cosas...

Muy copado el compilador!

Saludos
Título: RE: Interrupciones en PIC
Publicado por: cucaracha en 05 de Mayo de 2004, 08:41:00
Y además hace un código bastante depurado. Es muy bueno, sí....
Título: RE: Interrupciones en PIC
Publicado por: zer0007 en 06 de Mayo de 2004, 02:33:00
Muchas gracias, por lo que veo parece mas "interesante" que C18, respecto a lo del manual cucaracha encantado si me lo envias por que no lo puedo bajar del foro mi email es luis_serrano@ya.com.

Grácias otra vez !!
Título: RE: Interrupciones en PIC
Publicado por: cucaracha en 06 de Mayo de 2004, 04:49:00
Ahí lo llevas...

En cuanto a lo de no poder bajar archivos del foro... creo que a muchos nos ha pasado. Pero se soluciona sólo. Yo ya bajo sin problemas... ¿?¿?¿?