TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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.
-
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
-
Además usa el buscador, hay información sobre ello.
Saludos!
-
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.
-
En el apartado 2.9.2 del manual de C18 tienes como se hace y ejemplos.
un saludo!
-
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;
}
}
-
Buenas,
En principio yo no veo que el codigo este mal. ¿a que te refieres con un comportamiento un tanto anormal?
un saludo!
-
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.