[Firmware] SDCC et les interruptions
Bonjour,
Je suis actuellement en train d'écrire un firmware pour une webcam USB.
J'utilise le EZ-USB FX2LP de Cypress (microcontrolleur intel 8051).
Je suis sous Linux (kernel 2.6) , SDCC 2.5.6 et utilise cycfx2prog pour envoyer/executer mon firmware.
Aprés avoir essayé un tas de possibilités je n'arrive pas à resoudre mon problème.
En effet aucune interruption n'est executée alors que :
J'ai repris les exemples de codes sur ce site (bien complet)
J'ai déclaré la table d'interruption ainsi que le code C appelé en utilisant le mot clé interrupt :
Code:
1 2 3 4 5 6
| void ISR_Sudav(void) interrupt 13
{
GotSUD = TRUE; // Set flag
EZUSB_IRQ_CLEAR();
USBIRQ = bmSUDAV; // Clear SUDAV IRQ
} |
Mon programme utilise la même initialisation que dans ce programme (fw.c et periph.c)
Ainsi qu'une déclaration externe de cette fonction dans mon fichier contenant le main(), comme indiqué dans la doc de SDCC :
Code:
extern void ISR_Sudav(void) interrupt 13;
Y a-t-il des subtilités qui m'aurait echapé dans les docs ?
Merci d'avance, si vous voulez plus de renseignements n'hésitez pas !