bonjour je suis étudiant en bts électronique et pour mon projet je dois faire une démodulation FSK avec un msp430 et de la programmation en C.
j'ai donc plusieurs fonctions qui sont internes au MSP.
un CAN, un filtre passe haut, un retard, une multiplication ainsi qu'un passe bas.
j'ai déjà fait la fonction CAN que j'ai testé. Maintenant je dois programmer les autres fonctions.
j'ai posé la question a mon prof :
"
bonjour Mr Cremmel,
j'aimerai faire le programme pour tester le filtre passe haut (F2 de demod
FSK_V23)
j'ai le programme suivant en asm :
FONCTION_F2 mov R7,R6
sub R10,R6
mov R7, R10
je le transforme en C
R7=R6;
R10=R7-R6;
R7=R10;
en compilant il me dit que R6, R7 et R10 sont indéfinis"
sa réponse :
Aller au message précédent | Aller au message suivant | Supprimer | Boîte de réception
Bonjour
L'erreur est normale : on ne peut pas manipuler directement les registres en C comme cela se fait en assembleur. C'est un des intérets du C : le compilateur fait le travail d'affecter des variables à des registres si c'est possible, mais le programmeur (vous !) s'en soucie guère, sauf s'il faut optimiser le temps d'execution.
Voici une solution possible :
// Variables globales du programme
int Old_Data_CAN; //Echantillon précédent
.
.
// Programme d'interruption Timer A
#pragma vector=TIMERA0_VECTOR
__interrupt void INT_TIMER(void)
{
int VAR1; //Variable locale de calculs (peut être un registre)
int VAR2; //Variable locale de calculs (peut être un registre)
.
.
.
VAR1=xxxx ; //Echantillon actuel (résultat du CAN)
VAR2=VAR1-Old_Data_CAN ;//Résultat de F2: VAR2(z)=VAR1(z)-VAR1(z).Z-1
Old_Data_CAN=VAR1; //Rafraichissement Old_Data_CAN pour int. suivante
.
.
.
}
Attention : les variables "locales" n'existent que dans le programme d'interruption et ne conservent pas leurs valeurs entre 2 interruptions. D'où la déclaration de Old_Data_CAN : variable permanante.
"
il y'a des blancs que je n'arrive pas a compléter
quelqu'un peut t'il maider ?
-----