Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Gérard
conversion longint en exadecimal
- cyril13110
Expert- Messages : 1176
- Âge : 42
- Enregistré en : avril 2016
- Localisation : 13
conversion longint en exadecimal
- cyril13110
Expert- Messages : 1176
- Âge : 42
- Enregistré en : avril 2016
- Localisation : 13
paulfjujo a écrit :oui, c'est cela...
void SendSerialDataByteToAD9850(unsigned char Donnee)
{
Byte counter = 0;
do
{
SData = 0;
if(Donnee & 0x01) SData=1; // Check LSB bit
Donnee = Donnee>>1; // RIGHT SHIFT THE Donnee BY ONE BIT
W_CLCK = 1;
Delay_us(100);
W_CLCK = 0;
Delay_us(100);
counter++;
}while(counter<8);
}
en premier le bit de poids faible (LSB)
ensuite on pousse les autres bits à droite via >>1
..etc ...pour chaque byte composant le mot de 32 bits
Bonjour paul et bonjour à tous,
Je reviens au sujet du décalage de bit car j'ai eu un probleme que je ne comprends pas.
J'ai ecris le code suivant:
J'ai declaré une variable simple avec la donnée fixe suivante
variable =%10101010
et dans la boucle du code principal j'ai mis ca
Code : Tout sélectionner
for i=0 to 7
portD = variable >> i
delay_ms(500)
next i
dans la logique des chose la valeur de variable devrait être décalé toute les 500ms vers la droite d'un bit et des bits à 0 devrait apparaitre sur la gauche et bien rien ne c'est passé.
Le portD est resté figé sur la valeur de variable et c'est tous.
C'est quelques lignes était écrite dans le corps principal du code.
Est ce que c'est quelques lignes de codes comportent des erreurs?
Celons moi non il ny a rien de plus simple a moins que je sois passé a coté de quelque chose mais je ne vois pas quoi.
conversion longint en exadecimal
conversion longint en exadecimal
- cyril13110
Expert- Messages : 1176
- Âge : 42
- Enregistré en : avril 2016
- Localisation : 13
paulfjujo a écrit :for i=0 to 7
variable = variable >> 1 <--- decalage à droite 1 fois ( sans frites)
portD=variable
delay_ms(500)
next i
ou
PORTD=%10101010
for i=0 to 7
PORTD=PORTD >> 1
delay_ms(500)
next i
pulse en RD0...
Sans frite???
donc sans belge alors c'est ca???
conversion longint en exadecimal
conversion longint en exadecimal
- cyril13110
Expert- Messages : 1176
- Âge : 42
- Enregistré en : avril 2016
- Localisation : 13
conversion longint en exadecimal
conversion longint en exadecimal
- cyril13110
Expert- Messages : 1176
- Âge : 42
- Enregistré en : avril 2016
- Localisation : 13
conversion longint en exadecimal
- cyril13110
Expert- Messages : 1176
- Âge : 42
- Enregistré en : avril 2016
- Localisation : 13
paulfjujo a écrit :for i=0 to 7
variable = variable >> 1 <--- decalage à droite 1 fois ( sans frites)
portD=variable
delay_ms(500)
next i
ou
PORTD=%10101010
for i=0 to 7
PORTD=PORTD >> 1
delay_ms(500)
next i
pulse en RD0...
J'ai testé les 2 ca fonctionne je ne vois pas pourquoi du coup celui que j'avais fait ne fonctionne pas
conversion longint en exadecimal
- cyril13110
Expert- Messages : 1176
- Âge : 42
- Enregistré en : avril 2016
- Localisation : 13
Bonjour paul et bonjour à tous,
Je reviens sur le sujet.
Du coup hier j'ai vite testé et ca a fonctionné.
J'ai un peut bricolé autour et tous est ok.
Je suis allé jusqu'à le faire avec une variable de 32bits et le bit de poids le plus faible copié sur le PortD.0 et tous est ok.
Merci paul pour ton aide et tes lumière mais j'aimerais comprendre pourquoi ce que j'avais écrit moi c'était pas bon.
C'est quoi qui bloquait dans ce que j'avais écrit celons toi?
Maintenant il me reste plus qu'a comprendre la procedure à programmer pour l'envoie de la donnée au AD9850 avec une communication serie.
J'avoue que c'est la premiere fois que je passe par une communication serie comme ca , il y a un debut a tous.
Du peut que j'ai compris, apparement il faut envoyer des grappes de 8 bits avec un creneau sur l'entré Wclk du module et tous les 8 bits faire un creneau de validation pour sauter au 8 bits suivant sur FQUD.
est ce que j'ai bien compris le bazard?
Je reviens sur le sujet.
Du coup hier j'ai vite testé et ca a fonctionné.
J'ai un peut bricolé autour et tous est ok.
Je suis allé jusqu'à le faire avec une variable de 32bits et le bit de poids le plus faible copié sur le PortD.0 et tous est ok.
Merci paul pour ton aide et tes lumière mais j'aimerais comprendre pourquoi ce que j'avais écrit moi c'était pas bon.
C'est quoi qui bloquait dans ce que j'avais écrit celons toi?
Maintenant il me reste plus qu'a comprendre la procedure à programmer pour l'envoie de la donnée au AD9850 avec une communication serie.
J'avoue que c'est la premiere fois que je passe par une communication serie comme ca , il y a un debut a tous.
Du peut que j'ai compris, apparement il faut envoyer des grappes de 8 bits avec un creneau sur l'entré Wclk du module et tous les 8 bits faire un creneau de validation pour sauter au 8 bits suivant sur FQUD.
est ce que j'ai bien compris le bazard?
Retourner vers « Langage BASIC & PASCAL »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités