lecture d'eeprom ( HELP)

lecture d'eeprom ( HELP) - C - Programmation

Marsh Posté le 15-09-2003 à 09:07:26    

Je recherche la routine de lecture et aussi celle d'écriture pour une eeprom de type 24C04 !
Vous connaissez un bon site ? ou vous l'avez peut etre en stock ?
 
Merci !


Message édité par Stuffer le 15-09-2003 à 09:12:45
Reply

Marsh Posté le 15-09-2003 à 09:07:26   

Reply

Marsh Posté le 15-09-2003 à 09:21:26    

[:atreyu]

Reply

Marsh Posté le 15-09-2003 à 09:34:18    

[:atreyu]  PLEASE !!!!

Reply

Marsh Posté le 15-09-2003 à 09:57:18    

si tu dis pas  
- sur quel type de machine (PC ? MAC ? SUN ? HP ? ...)
- sur quel OS
- avec quel langage
 
on risque pas de pouvoir t'aider  :sarcastic:  
 
en plus, pour ce genre de question, google est souvent ton ami :D

Reply

Marsh Posté le 15-09-2003 à 10:02:18    

philou_a7 a écrit :

si tu dis pas  
- sur quel type de machine (PC ? MAC ? SUN ? HP ? ...)
- sur quel OS
- avec quel langage
 
on risque pas de pouvoir t'aider  :sarcastic:  
 
en plus, pour ce genre de question, google est souvent ton ami :D


 
Bah j'ai deja cherché sur GOOGLE mais bon pas top !
PC + win 2000 + langage C !
 
En gros voilà le programme :  
 
/*--------------------------------------------------------------------------*/
/* Travaux Pratiques  : Pilotage statique des Pins d'un port série          */
/*--------------------------------------------------------------------------*/
/* Nom du programme : Ctrl-DB9.cpp                                          */
/* Auteur :           D.PAYON                                               */
/* Date de création : 14/09/2003                                            */
/* Version :            1.0                                                 */
/* Modifications : -> Utilisation des API de Windows                         /
/*--------------------------------------------------------------------------*/
 
#include <windows.h>  // pour utiliser les API32
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
 
#define CR  0x0D // Symbole du retour chariot
#define LF  0x0A // Symbole du saut de ligne
#define aigu 0x82 // Symbole du é en code page 437
#define grave 0x8A // Symbole du è en code page 437
#define aaxan 0x85 // Symbole du à en code page 437
 
/*--------------------------------------------------------------------------*/
/* Choix du port série                                                      */
/*--------------------------------------------------------------------------*/
int Choix_Port()
{
 int NoPort,flag=0;
 do
  {
  system("cls" );
  flag=0;
  fflush(stdin);
  printf("\t\t\tÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n" );
  printf("\t\t\tº     Choix du Port S%crie      º\n",aigu);
  printf("\t\t\tÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n\n" );
  printf("\t- Quel Port s%crie est utilis%c pour cette liaison ?\n\n",aigu,aigu);
  printf("\t\t\t- 1 - COM1 ( 3F8 )\n" );
  printf("\t\t\t- 2 - COM2 ( 2F8 )\n" );
  printf("\t\t\t- 3 - COM3 ( 3E8 )\n" );
  printf("\t\t\t- 4 - COM4 ( 2E8 )\n\n\t\t\t  " );
  scanf("%d",&NoPort);
  if((NoPort==1)||(NoPort==2)||(NoPort==3)||(NoPort==4))
   {
   }
  else  
   {
    printf("\t\tMauvais choix, veuillez vous limiter au choix propos%c!\n\n",aigu);
    system("pause" );
    flag=1;
   }
  } while(flag==1);
 return(NoPort);
}
 
/*--------------------------------------------------------------------------*/
/* Initialisation du Port Série            */
/*--------------------------------------------------------------------------*/
void Initialiser(HANDLE hCom, char N_Port[4+1])
{
 BOOL retour;
 //La structure DCB définit les paramétres de transmission de l'UART.
 DCB dcb_struct;        //Création de la structure Device Control Block
 
 retour = GetCommState(hCom,&dcb_struct);  // Vérifier l'existence du port.
 if (retour == 0) return;
 else
 {  
  dcb_struct.fDtrControl=DTR_CONTROL_DISABLE; // DTR=0
  dcb_struct.fRtsControl=RTS_CONTROL_DISABLE; // RTS=0
  dcb_struct.fOutxCtsFlow=TRUE;    // Par défaut
 
  retour = SetCommState(hCom,&dcb_struct); // Configuration du port avec ces paramètres.
 
 }
}
 
/*--------------------------------------------------------------------------*/
/* Paramètres de configuration de la liaison série                          */
/*--------------------------------------------------------------------------*/
void main(void)
{
 char carac,NomPort[4+1];
 int flag=0,CTS=7,EtatComm=0,state,x,y,z;
 BYTE *BufferIn;
 HANDLE hCom;
 BOOL retour;
 DCB dcb_structure;      //Création de la structure Device Control Block
 DWORD ModemStatus,NbOctetsALire,NbOctetsLus,i;
 
 
 sprintf(NomPort,"COM%d",Choix_Port()); // Saisie du N° du Port série utilisé
 system("CLS" );
 
 // Création du port de communication.
 hCom=CreateFile(NomPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
 
 if (hCom == INVALID_HANDLE_VALUE)   //Traitement des erreurs.
  {
   printf("\n\tErreur d'acc%cs au port S%crie %s\n\n\n",grave,aigu,NomPort);
   system("PAUSE" );
   return;  
  }
 else  
  {
  Initialiser(hCom,NomPort); // Saisie et affectation des paramétres du port série
  PurgeComm(hCom,PURGE_TXCLEAR&PURGE_RXCLEAR); // Vide des tampons d'émission/réception
 
/*--------------------------------------------------------------------------*/
/* Envoi de caractères saisis au clavier, et lecture des caractères reçus.  */
/*--------------------------------------------------------------------------*/
 
  printf("\t\tÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n" );
  printf("\t\tº       Communication avec le %s      º\n",NomPort);
  printf("\t\tÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n\n" );
  printf("\t( Appuyer sur la touche Ctrl + Q pour sortir de ce programme.)\n\n" );
 
  do
   {
    if(state!=EtatComm)
    {
     system("CLS" );
     state=EtatComm;
     x=(EtatComm&4)>>2;
     y=(EtatComm&2)>>1;
     z= EtatComm&1;
     printf("\t\tÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n" );
     printf("\t\tº       Communication avec le %s      º\n",NomPort);
     printf("\t\tÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n\n" );
     printf("\t( Appuyer sur la touche Ctrl + Q pour sortir de ce programme.)\n\n" );
     printf("\t\tÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n" );
     printf("\t\tº   RTS = %d      DTR = %d      CTS = %d   º\n",x,y,z);
     printf("\t\tÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n\n" );
     printf("\t    Pour faire commuter RTS %c l'%ctat 1 -> Appui sur 'r'\n",aaxan,aigu);
     printf("\t    Pour faire commuter RTS %c l'%ctat 0 -> Appui sur 't'\n",aaxan,aigu);
     printf("\t    Pour faire commuter DTR %c l'%ctat 1 -> Appui sur 'd'\n",aaxan,aigu);
     printf("\t    Pour faire commuter DTR %c l'%ctat 0 -> Appui sur 's'\n",aaxan,aigu);
     printf("\t    Pour lire les octets envoy%cs       -> Appui sur 'l'\n",aigu);
    }
    if ( kbhit() )
    {
     carac=getch();
     if (carac=='r')
     {
       retour = GetCommState(hCom,&dcb_structure); // Init d DCBpour hcom
       dcb_structure.fRtsControl=RTS_CONTROL_ENABLE; // RTS=1
       retour = SetCommState(hCom,&dcb_structure); // Configuration du port  
       EtatComm=EtatComm|0x4;      // Positionner le bit b2 à 1.
 
 
      }
      else if(carac=='t')
      {
       retour = GetCommState(hCom,&dcb_structure); // Init d DCBpour hcom
       dcb_structure.fRtsControl=RTS_CONTROL_DISABLE; // RTS=0
       retour = SetCommState(hCom,&dcb_structure); // Configuration du port  
       EtatComm=EtatComm&0xFB;     // Positionner le bit b2 à 0.
      }
     if (carac=='d')
      {
       retour = GetCommState(hCom,&dcb_structure); // Init d DCBpour hcom
       dcb_structure.fDtrControl=DTR_CONTROL_ENABLE; // DTR=1
       retour = SetCommState(hCom,&dcb_structure); // Configuration du port  
       EtatComm=EtatComm|0x2;      // Positionner le bit b1 à 1.
      }
      else if(carac=='s')
      {
       retour = GetCommState(hCom,&dcb_structure); // Init d DCBpour hcom
       dcb_structure.fDtrControl=DTR_CONTROL_DISABLE; // DTR=0
       retour = SetCommState(hCom,&dcb_structure); // Configuration du port  
       EtatComm=EtatComm&0xFD;     // Positionner le bit b1 à 0.
      }
    if (carac=='l')
    {
     retour = GetCommState(hCom,&dcb_structure);
     BufferIn= (BYTE*) malloc( NbOctetsALire * sizeof(BYTE));
     retour=ReadFile(hCom , BufferIn , NbOctetsALire , &NbOctetsLus , NULL);
     for (i=0 ; i<NbOctetsLus;i++)  
     {
      printf("%c",BufferIn[i]);    // Affichage à l'écran des octets lus
      if (BufferIn[i]==CR) putchar(LF);
     }
    free ( BufferIn );  
    }
 
 
    }
    retour=GetCommModemStatus(hCom,&ModemStatus);
    flag=MS_CTS_ON & ModemStatus;
    if(CTS!=flag>>4)
     {
     CTS=flag>>4;
     if(CTS==1) {EtatComm=EtatComm|0x1;}
     else {EtatComm=EtatComm&0xFE;}
     }
 
   } while(carac!=0x11);     // Caractère de sortie du programme.  
  }
 CloseHandle(hCom);        // Fermeture du Handle hCom.
}
 
/*--------------------------------------------------------------------------*/
/* Lecture sur le port série                                               */
/*--------------------------------------------------------------------------*/
 
 

Reply

Marsh Posté le 15-09-2003 à 10:05:58    

stuffer a écrit :


 
 
En gros voilà le programme :  
 
 


 
et ?
On en fait quoi de ton truc ?

Reply

Marsh Posté le 15-09-2003 à 10:09:52    

chrisbk a écrit :


 
et ?
On en fait quoi de ton truc ?


 
Bah disons que j'aimerais bien en faire ce que tu penses mais peux pas !
Ct juste pour donner une idée de mon problème !
 
 [:mirz]  Stuffer   [:mirz]

Reply

Marsh Posté le 15-09-2003 à 10:39:16    

On n'a pas de 24C04 dans nos placards.
 
http://membres.lycos.fr/webelec/24c04.htm dit que l'interface est I2C. Y a qq infos sur le comment lui causer.
 
Sur http://hometown.aol.com/mcs51supp/24c04/24c04.htm (allemand), y a brochage.
 
Qq infos sur www.jlink.com.tw/Datasheet/24c04.pdf (Googlisation du 24C04).
 
Ce qu'il faut voir est : les broches à mettre à la masse, au + d'alim, la ou les broches par lesquelles envoyer des données..
Ensuite, le prog envoie (en l'adaptant) ce qu'il faut pour que le circuit soit content.

Reply

Marsh Posté le 15-09-2003 à 11:57:13    

C'est juste de la lecture ecriture sur port série une fois que tu as fait le bon cablage. Par contre il faut connaitre le protocole de communication avec l'eeprom pour lui envoyer qqchose qu'elle comprendra :D et ça je sais pas :D
 
PS : c'est quoi ces horreurs de system("cls" ) et system("pause" ) ???????? sert toi des APIs curses si tu veux faire un peu de mise en forme texte, mais pitié, pas ça !!!

Reply

Marsh Posté le 15-09-2003 à 15:17:39    

Ok et bah merci bien les gars pour votre HELP !
 
 :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed