Il y a 34 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

aide prog

n°5313
b2o53
Posté le 28-03-2005 à 20:59:25  profilanswer
 


bjr tt le monde voila sur le meme composant bq26200, j'ai effectuer un programme en C afin de generer la trame figure 2 page6 du lien ci dessous a l'aide d'un micro_controleur89c51, mtn je dois modifier ce programme afin de faire communiquer le 89c51 directemt avc le bq26200 que dois je modifier ds mon programme afin que cela fonctionne merci
cordialement
http://focus.ti.com/lit/ds/symlink/bq26200.pdf
et voici mon programme
//PROGRAMMATION BQ2000 SPI rapide
#include <c:\bq\bq.h>
#include<stdio.h>
#include<math.h>
at 0xA2 sbit HDQ_TX ;
at 0xA3 sbit HDQ_RX ;
at 0xA4 sbit TEST ;
extern void INITIALISATIONS (void);
extern void Temporisation (char n);
char Ad1,byte1, byte2, HDQ;
void HDQ_REPOS(void)
{ HDQ_TX=1;
}
//************************** EMISSION ***********************
//************************************************************
void HDQ_WRITE_BYTE(char ADRESSE,char OCTET)
{ char compt;
ADRESSE=ADRESSE|0x80;
//break
HDQ_TX=0;
Temporisation(190);
//start
HDQ_TX=1;
Temporisation(1);
//EMISSION DE l'adresse+ bit write
for (compt=0; compt<=7; compt++)
{HDQ_TX=ADRESSE&0x01; //emmission poid faible
if (HDQ_TX==1)
{HDQ_TX=0;
Temporisation(25); //40us
HDQ_TX=1;
Temporisation(185);} //200us
else
{(HDQ_TX=0);
Temporisation(105); //120us
HDQ_TX=1;
Temporisation(105);
}; //120us
ADRESSE=(ADRESSE/2); //decalage de 1 a droite
};
HDQ_TX=1;
Temporisation(300);
//EMISSION DE l'octet
for (compt=0; compt<=7; compt++)
{HDQ=OCTET&0x01; //emmission poid fort
if (HDQ==1)
{HDQ_TX=0;
Temporisation(25);
HDQ_TX=1;
Temporisation(185);}
else
{(HDQ_TX=0);
Temporisation(105);
HDQ_TX=1;
Temporisation(105);};
OCTET=(OCTET/2); //decalage de 1 a droite et masque
};
}
//************************ RECEPTION ************************
//************************************************************
char HDQ_WRITE_READ(char ADRESSE)
{ char compt, octet_recu;
ADRESSE=ADRESSE & 0x7F;
// Temporisation(1);
//EMISSION DE l'adresse+ bit read
for (compt=0; compt<=7; compt++)
{HDQ=ADRESSE&0x01;
//emmission poid faible
if (HDQ==1)
{HDQ_TX=0;
Temporisation(25); //40us
HDQ_TX=1;
Temporisation(185);} //200us
else
{(HDQ_TX=0);
Temporisation(105); //120us
HDQ_TX=1;
Temporisation(105);}; //120us
ADRESSE=(ADRESSE/2); //decalage de 1 a droite
};
HDQ_TX=1; Temporisation(300);
//reception l'octet
for (compt=0; compt<=7; compt++)
{
};
return octet_recu;
}
 
//************************************************************
// acquisition de la valeur de l adresse
//************************************************************
long LIRE_ADRESSE(void)
{long d;
scanf ("%ld",&d);
return d;
}
//************************************************************
// acquisition de la valeur de l octet
//************************************************************
long LIRE_VALEUR(void)
{long val;
scanf ("%ld",&val);
return val;
}
//************************************************************
// PROGRAMME PRINCIPAL
//************************************************************
void main (void)
{ HDQ_REPOS();
INITIALISATIONS ();
while(1)
{ printf("entrez la valeur en decimal de l'adresse ou ecrire, puis touche ENTER \n " );
TEST=0;
Ad1 = LIRE_ADRESSE(); printf("\n" ); printf("\n" );
TEST=1;
 
printf("entrez la valeur en decimal de la valeur a envoyer, puis touche ENTER \n " );
byte1 = LIRE_VALEUR(); printf("\n" ); printf("\n" );
HDQ_WRITE_BYTE(Ad1, byte1);
// printf("entrez la valeur en decimal de l'adresse a lire, puis touche ENTER \n " );
// byte2 = LIRE_VALEUR(); printf("\n" ); printf("\n" );
// byte2= HDQ_WRITE_READ(Ad1);
};
}

mood
Google
Posté le 28-03-2005 à 20:59:25  profilanswer
 

n°5391
gimly
Quel pseudo de merde !
Posté le 11-04-2005 à 09:40:23  profilanswer
 

les balises cpp spa pour les chiens...

n°5404
nicodache
marmotte en chocolat concept ©
Posté le 11-04-2005 à 18:02:32  profilanswer
 

Code :
  1. /*==============================================================================*/
  2. /*==================== PROGRAMMATION BQ2000 SPI rapide =========================*/
  3. /*==============================================================================*/
  4. #include <c:\bq\bq.h>
  5. #include <stdio.h>
  6. #include <math.h>
  7. at 0xA2 sbit HDQ_TX ;
  8. at 0xA3 sbit HDQ_RX ;
  9. at 0xA4 sbit TEST ;
  10. extern void INITIALISATIONS (void);
  11. extern void Temporisation (char n);
  12. char Ad1,byte1, byte2, HDQ;
  13. void HDQ_REPOS(void){
  14.     HDQ_TX=1;
  15. }
  16. /*==============================================================================*/
  17. /*================================ EMISSION ====================================*/
  18. /*==============================================================================*/
  19. void HDQ_WRITE_BYTE(char ADRESSE,char OCTET) {
  20.     char compt;
  21.     ADRESSE=ADRESSE|0x80;
  22.     //break
  23.     HDQ_TX=0;
  24.     Temporisation(190);
  25.     //start
  26.     HDQ_TX=1;
  27.     Temporisation(1);
  28.     //EMISSION DE l'adresse+ bit write
  29.     for (compt=0; compt<=7; compt++) {
  30.         HDQ_TX=ADRESSE&0x01; //emmission poid faible
  31.         if (HDQ_TX==1) {
  32.             HDQ_TX=0;
  33.             Temporisation(25); //40us
  34.             HDQ_TX=1;
  35.             Temporisation(185);
  36.         } //200us
  37.         else
  38.         {
  39.             (HDQ_TX=0);
  40.             Temporisation(105); //120us
  41.             HDQ_TX=1;
  42.             Temporisation(105);
  43.         }; //120us
  44.         ADRESSE=(ADRESSE/2); //decalage de 1 a droite
  45.     };
  46.     HDQ_TX=1;
  47.     Temporisation(300);
  48.     //EMISSION DE l'octet
  49.     for (compt=0; compt<=7; compt++) {
  50.         HDQ=OCTET&0x01; //emmission poid fort
  51.         if (HDQ==1) {
  52.             HDQ_TX=0;
  53.             Temporisation(25);
  54.             HDQ_TX=1;
  55.             Temporisation(185);
  56.         } else {
  57.             (HDQ_TX=0);
  58.             Temporisation(105);
  59.             HDQ_TX=1;
  60.             Temporisation(105);
  61.         };
  62.         OCTET=(OCTET/2); //decalage de 1 a droite et masque
  63.     };
  64. }
  65. /*==============================================================================*/
  66. /*================================= RECEPTION ==================================*/
  67. /*==============================================================================*/
  68. char HDQ_WRITE_READ(char ADRESSE) {
  69.     char compt, octet_recu;
  70.     ADRESSE=ADRESSE & 0x7F;
  71.     // Temporisation(1);
  72.     //EMISSION DE l'adresse+ bit read
  73.     for (compt=0; compt<=7; compt++) {
  74.         HDQ=ADRESSE&0x01;
  75.         //emmission poid faible
  76.         if (HDQ==1) {
  77.             HDQ_TX=0;
  78.             Temporisation(25); //40us
  79.             HDQ_TX=1;
  80.             Temporisation(185);
  81.         } //200us
  82.         else
  83.         {
  84.             (HDQ_TX=0);
  85.             Temporisation(105); //120us
  86.             HDQ_TX=1;
  87.             Temporisation(105);
  88.         }; //120us
  89.         ADRESSE=(ADRESSE/2); //decalage de 1 a droite
  90.     };
  91.     HDQ_TX=1; Temporisation(300);
  92.     //reception l'octet
  93.     for (compt=0; compt<=7; compt++) {
  94.         // C'EST QUOI CE FOR VIDE ICI ?!
  95.     };
  96.     return octet_recu;
  97. }
  98. /*==============================================================================*/
  99. /*=================== acquisition de la valeur de l adresse ====================*/
  100. /*==============================================================================*/
  101. long LIRE_ADRESSE(void) {
  102.     long d;
  103.     scanf ("%ld",&d);
  104.     return d;
  105. }
  106. /*==============================================================================*/
  107. /*==================== acquisition de la valeur de l octet =====================*/
  108. /*==============================================================================*/
  109. long LIRE_VALEUR(void) {
  110.     long val;
  111.     scanf ("%ld",&val);
  112.     return val;
  113. }
  114. /*==============================================================================*/
  115. /*============================= PROGRAMME PRINCIPAL ============================*/
  116. /*==============================================================================*/
  117. void main (void) {
  118.     HDQ_REPOS();
  119.     INITIALISATIONS ();
  120.     while(1) {
  121.         printf("entrez la valeur en decimal de l'adresse ou ecrire, puis touche ENTER \n " );
  122.         TEST=0;
  123.         Ad1 = LIRE_ADRESSE(); printf("\n" ); printf("\n" );
  124.         TEST=1;
  125.         printf("entrez la valeur en decimal de la valeur a envoyer, puis touche ENTER \n " );
  126.         byte1 = LIRE_VALEUR(); printf("\n" ); printf("\n" );
  127.         HDQ_WRITE_BYTE(Ad1, byte1);
  128.         // printf("entrez la valeur en decimal de l'adresse a lire, puis touche ENTER \n " );
  129.         // byte2 = LIRE_VALEUR(); printf("\n" ); printf("\n" );
  130.         // byte2= HDQ_WRITE_READ(Ad1);
  131.     };
  132. }


 
juste pour rendre ca moins illisible...
(je sais, je suis trop gentil)
 
et quelques remarques :

  • un while(1) te vaut la pendaison
  • tu as des noms de variable qui font très visual basic... pour rappel, tout en minuscule en C, sauf les constantes. et pour les fonctions, c'est

    Code :
    1. type_de_retour nom_de_la_fonction(type param1, type param2)

  • t'as appris à indenter ton code ou ca ? (je cause surtout des
Code :
  1. type_de_retour tagada(int plop)
  2. { long truc;
  3. truc = plop;
  4. return truc; }


  • Pas besoin de mettre des ; derrière les accolades des fonctions ou des structures conditionelles
  • compile ton code avec l'option -Wall de gcc, ca te fera sortir un code propre
  • t'aime visiblement pas les pointeur ni les int; c'est pourtant une des grandes force du C...


Message édité par nicodache le 11-04-2005 à 18:09:54

---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°5416
Deadog
Dain Bramaged
Posté le 11-04-2005 à 19:52:35  profilanswer
 

-Wall -pedantic -ansi , ça c'est propre :o


Message édité par Deadog le 11-04-2005 à 19:52:57
n°5418
nicodache
marmotte en chocolat concept ©
Posté le 11-04-2005 à 19:53:34  profilanswer
 

voué, mais bon...
on peut aussi rajouter des programmes qui s'amusent à voir les leak mémoire tant qu'à faire ;)


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°5421
gimly
Quel pseudo de merde !
Posté le 12-04-2005 à 09:28:19  profilanswer
 

Deadog a écrit :

-Wall -pedantic -ansi , ça c'est propre :o


 
c koi -pedantic et -ansi ?? :??:  

n°5424
nicodache
marmotte en chocolat concept ©
Posté le 12-04-2005 à 10:05:37  profilanswer
 

-ansi pour mettre les erreurs pour le code non-normalisé ansi
-pedantic pour rejeter le code pas ISO, et/ou qui utilise des extensions pas ISO


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°5434
Deadog
Dain Bramaged
Posté le 12-04-2005 à 17:35:13  profilanswer
 

on peux remplacer -ansi par -std=c99 si la cible gueule pas trop ;)


Message édité par Deadog le 12-04-2005 à 17:35:40
mood
Google
Posté le 12-04-2005 à 17:35:13  profilanswer
 


Aller à :
Ajouter une réponse
 

Hit Parade