Boujour,

Je travaille actuellement sur un Pic18f4680 que je dois faire communiquer avec un processeur ARM (partie dont je ne m'occupe pas) via un bus SPI. Le microcontrolleur a pour but de renvoyer des informations provenant de l'exterieur ( bus CAN, données analogiques ( conversion A/N ), pins Tout ou rien, .... ). Toutes ces données sont placés dans une trame pour être envoyer via le bus SPI. Je precise que le Pic est esclave du bus et le processeur ARM le maitre.
Etant donnée que le PIC traite l'ensemble de ses taches de façon séquentielle, il arrive que je rate des informations. Exemple, le Pic et entrain de lire des données sur le bus CAN alors qu'un flot de données arrive sur le bus SPI.
J'ai pensé à faire générer une interruption par le processeur ARM lorsque qu'il a des données à me faire parvenir et ainsi dans ma routine d'IT, je me concentre sur le traitement du bus SPI. Cependant cette solution ne m'a pas semblé viable puisque si je suis entrain de lire des données sur le bus CAN et qu'à cette instant une IT survient, ma lecture sera faussé. Je peux bien sur bloquer ces ITs durant ce genre d'action mais son utilité serait elle réelle?


J'aimerais avoir vos avis sur ce problème.

En espérant avoir suffisamment bien résumé mon cas et en attendant vos réponses.

Je vous remercie d'avance.

Legos