Bonjours, je dois réaliser une liaison SPI entre un microcontrolleur ARM AT91m55800A ( maître )et un MSP430f1611 ( esclave .)
Sur l'ARM, j'ai une série d'instructions write/read qui s'occupe d'aller lire les valeurs des les registres de lecture/ecriture du SPI.
exemple :
WriteSPI(value)
ReadSPI(&value)
Delay(10)
WriteSPI(value)
ReadSPI(&value)
Delay(10)
Etc...
Sur le MSP430, j'ai deux interruptions :
Une qui se déclenche à la réception et qui met la valeur lu dans le registre de réception dans un tableau.
Et une autre qui se déclenche à la transmition et qui envoie une valeur qui s'incrémente à chaque fois. ( 1,2,3,4,5,6, etc... )
Le teste :
J'effectue une série de commandes Write/Read depuis le maitre. Je peux remarquer que l'esclave à bien reçu toutes les valeurs correctement.
Si je vais voir ce que le maitre à reçu de l'esclave, cela ne joue pas. Au lieu de recevoir "1,2,3,4,5,6", je reçois "une valeur indéfini, une deuxième valeur indéfinie,1,2,3,4".
J'essaye de remplir le buffer de transmition de l'esclave au tout début du programme, mais cela ne change rien.
Il me semble que tout est bien initialisé, car une bonne partie te la communication est correcte. Seul les envoie de l'esclave sont "shifté".
Pensez-vous que le problème vient plutôt du maitre ( je dois filtrer les valeur indéfinie) oû de l'esclave ( il faut le syncroniser avec le maître, les interruptions sont mal utilisé etc... )
Merci de votre attention !
Jérôme
-----