TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: black_flowers en 24 de Octubre de 2010, 17:27:23

Título: rutinas de atención a interrupción en c18 y c30
Publicado por: black_flowers en 24 de Octubre de 2010, 17:27:23
hola, necesito saber cómo hago una rutina de atención a interrupción para el modulo spi, de un pic18f y de un dspic30f, es decir como se hacen las rutinas en c18 y en c30. En c18, no tengo ni idea y en c30 hasta ahora las he venido haciendo por intuición:

si para el cad es: void __attribute__((interrupt, no_auto_psv)) _ADCInterrupt(void)

entonces para el t1 es: void __attribute__((interrupt, no_auto_psv)) _INT1Interrupt( void )

y hasta ahora me han funcionado pero no entiendo como funcionan.
Título: Re: rutinas de atención a interrupción en c18 y c30
Publicado por: migsantiago en 24 de Octubre de 2010, 17:32:13
Hola, para C30 te recomiendo que leas el manual de usuario. Ahí vienen las librerías y casi siempre un ejemplo de la atención a la interrupción.

C:\Program Files (x86)\Microchip\MPLAB C30\docs\periph_lib\Microchip PIC24F Peripheral Library.chm
Título: Re: rutinas de atención a interrupción en c18 y c30
Publicado por: Suky en 24 de Octubre de 2010, 17:39:12
Además usa el buscador, hay información sobre ello.


Saludos!
Título: Re: rutinas de atención a interrupción en c18 y c30
Publicado por: black_flowers en 24 de Octubre de 2010, 18:46:24
para el caso del c30 el manual de usuario es de bastante ayuda, por si alguien se cae por aquí, aclaro como funionan, y es tal y como puse arriba, es decir cada interrupcion tiene su manejador de interrupcion predefinido y todas ellas salen listadas en la página 103 del manual.
Para el caso del c18 sigo buscando.
Título: Re: rutinas de atención a interrupción en c18 y c30
Publicado por: Tisco en 24 de Octubre de 2010, 18:50:35
En el apartado 2.9.2 del manual de C18 tienes como se hace y ejemplos.
un saludo!
Título: Re: rutinas de atención a interrupción en c18 y c30
Publicado por: black_flowers en 24 de Octubre de 2010, 20:37:41
así estaría correcto? es que tiene un comportamiento un tanto anormal y no se si es por la rutina de interrupcion o por el resto del programa:

void InterruptHandlerHigh();

#pragma code InterruptVectorHigh = 0x08
void
InterruptVectorHigh (void)
{
  _asm
    goto InterruptHandlerHigh
  _endasm
}
#pragma code

#pragma interrupt InterruptHandlerHigh
void InterruptHandlerHigh()
{
    if (PIR1bits.SSPIF)
    {
   PIR1bits.SSPIF=0;
    }
}
Título: Re: rutinas de atención a interrupción en c18 y c30
Publicado por: Tisco en 28 de Octubre de 2010, 08:28:28
Buenas,
En principio yo no veo que el codigo este mal. ¿a que te refieres con un comportamiento un tanto anormal?
un saludo!
Título: Re: rutinas de atención a interrupción en c18 y c30
Publicado por: black_flowers en 28 de Octubre de 2010, 18:05:19
Buenas,
En principio yo no veo que el codigo este mal. ¿a que te refieres con un comportamiento un tanto anormal?
un saludo!

sí, la interrupción está bien, lo que hacía mal era por otro motivo.