Merci pour ta réponse 

Envoyé par
pfeuh
Il ne suffit pas d'écrire une interruption correctement pour que ça marche, il faut aussi configurer le hard, généralement dans une fonction HARD_Init() ou INT13_Init(). Par exemple, pour un timer, il faut configurer la fréquence, le single shot ou l'autoreload, etc... De plus, toutes les interruptions ont des bits individuels de validation/inhibition qui se programment par registres.
Alors effectivement ces initialisations sont présentes dans mon programme :
1 2 3 4 5 6 7
|
EZUSB_IRQ_ENABLE(); // Enable USB interrupt (INT2)
EZUSB_ENABLE_RSMIRQ(); // Wake-up interrupt
INTSETUP |= (bmAV2EN | bmAV4EN); // INT 2 & 4 autovectoring
USBIRQ = 0xff; // Clear any pending USB interrupt requests.
USBIE |= bmSUDAV | bmSUTOK | bmSUSP | bmURES | bmHSGRANT; // Enable selected interrupts |

Envoyé par
pfeuh
Pour finir, il y a un bit général qui valide/inhibe toutes les interruptions. Il faut donc chercher du coté des registres d'interruption
1 2
|
EA = 1; // Enable 8051 interrupts |

Envoyé par
pfeuh
Si tu as un débogueur, pose un point d'arrêt sur la première ligne de ton interruption. Une fois que les registres seront bien configurés, tu verras que tu t'y arrêteras.
Malheuresement je ne dispose pas de débogueur, seul un émulateur (que je n'arrive pas vraiment a faire fonctionner
)
Cependant je dispose de 3 LED qui me permet de faire du "déboguage de fortune" 

Envoyé par
pfeuh
Pour finir, l'interruption n'est pas forcément en cause, mais peut-être que l'évènement déclencheur de l'interruption (changement d'état de pin, fin de réception d'octet sur l'UART, fin de comptage de timer, etc...) ne se produit pas.
Pour ce qu'il en est de l'évènement déclencheur, il se produit bien c'est la présence d'une requête dans le buffer "SETUPDAT[1]", octet contenant bmRequestType qui correspond au type de requete que l'hôte (PC) envoie.
Ici, la requête est de récuperer le Device Descriptor, d'ailleurs voila ce que me dis mon noyau :
device descriptor read/64, error -110
Bon sinon a part ça j'ai tout de même fait un grand pas hier.
D'une je n'utilisait pas la bonne bibliothèque (Les fonctions EZUSB_XXX), à savoir celle du FX2 à la place de celle du FX2LP.
Aprés avoir cherché, je me rends compte que ce n'est pas forcement un problème d'interruption, en effet Cypress a un système de "Renumerate" qui consiste à deconnecter le périphérique et de le reconnecter (Car par défaut le firmware présent est un firmware de Cypress qui permet d'executer le firmware (celui du développeur) en mémoire sans écrire dans la EEPROM). Et mon programme s'arrete à la deconnection du périphérique.
USBCS |= (bmDISCON | bmRENUM);
Ici on met a 1 la deconnection et la renumeration dans le registre "USB Control and Status" (USBCS).
Si je ne suis pas clair c'est expliqué dans le chapitre 3.6 de la datasheet
Edit : En ajoutant des delais la deconnection/reconnection s'effectue, mais les interruptions qui sont sensé être executées ne le sont pas
Partager