Bonjour, quelqu'un a t'il deja programmer une memoire EEprom via Bus I2C?Merci.......
Version imprimable
Bonjour, quelqu'un a t'il deja programmer une memoire EEprom via Bus I2C?Merci.......
Salut!
Oui, je sais r�aliser ce genre de chose.
Le protocol I�C peut se concevoir � l'aide du port // ou du port s�rie.
Il suffit de conna�tre la r�f�rence de ton Eprom, de r�cup�rer le datasheet sur le net.
Pour le reste, on verra apr�s, commence d�j� par l�, �+
Salut, c l'EEPROM 24LC00 de Microship, je voudrais la programmer via C++ builder mais en pilotant un microcontroleur Hitachi(H8) qui dialogue avec l'eEPROM via I2c......Voila.......
Arf! Tu peux programmer ton Eprom sans le �C!
Il faut juste un pilote pour acc�der directement aux ports du PC sous Win2000/XP/NT,
et programmer l'Eprom avec l'I�C sur le port //.
Pour l'acc�s direct, j'utilise ZLPortIO qui fonctionne � merveille avec Delphi.
Il doit bien exister des �quivalents avec BC++...
Bref, il faut r�cup�rer le datasheet de chacun de tes composants.
:arrow: http://site.voila.fr/subut/data3/24LC00.pdf
Manque la r�f�rence du microcontroleur... pas grave!
J'esp�re pour toi que tu as d�j� le programmateur avec un fichier HEX! :lol:
Pour �a, il existe d�j� des programmes tout fait! Pas besoin de r�inventer la roue!
Bon courage, �+ :wink:
c le microcontroleur H8 de hitachi et je suis oblige de le faire avec lui.......
Et comment comptes-tu le programmer, avec quel programmateur?
Et puis par quelles broches va tu relier ton Eprom au �C?
�a devient tr�s compliqu� de passer par un �C... � moins de l'utiliser en direct...
As-tu d�j� un sch�ma? un programmateur, de la doc, etc... ?
Je te dis tout ca en message prive......Citation:
Envoy� par Sub0
Retour sur le forum, les mp ne sont pas destin�s � �a! :lol:
J'ai bien compris?
Tu as d�j� un programmateur d'Eprom (avec un �C H), et tu voudrais lire et �crire dans cette Eprom en passant par ce programmateur... Celui-ci te sert surtout � alimenter l'Eprom, positionner la tension d'�criture de l'Eprom, etc...
Si j'ai bien compris, tu arrives � d�finir les lignes Data et Clock du bus I�C, directement sur le �C, mais ton listing n'a aucun effet dur l'Eprom, n'est-ce-pas? Pourtant, tout est expliqu� dans le datasheet de l'Eprom, il suffit de se tenir au mode op�ratoire.
Attention � une chose peut-�tre, � l'accus� de reception (ou d'�mission), apr�s avoir envoyer (ou receptionner) les donn�es. En effet, le protocol I�C r�clame un "ACK" (acknowledge), pour valider une adresse ou les donn�es. Important aussi: Au repos, Data et Clock sont � l'�tat haut!
�+
Citation:
Envoy� par Sub0
Puis je t'envoyer mon code que quelqu'un d'exterieur y jette un oeil? sinon oui t'as compris mon pb....
Ce que j'avais fait pour simplifier la programmation de mes projets I�C, c'est:
Procedure I2C_SetAdd(Add:Byte); Envoit une adresse (pareil que...
Procedure I2C_SetData(Dat:Byte); Envoit un octet de donn�e
Function I2C_GetData:Byte; Re�oit un octet de donn�e
Procedure I2C_RecpAck; Accus� de reception (pareil que...
Procedure I2C_EmAck; Accus� d'emission
Comme �a, tu te m�langes moins les pinceaux, il est plus facile de g�rer l'I�C... :wink:
�+
Oui si les fonction marchent c le plus clair c vrai....mais moi mes fonctions marchent pas avec la 24LC00......Tu as programme en quoi?Citation:
Envoy� par Sub0
Mes sources sont en Pascal, pour TP, BPW et Delphi ( ou Kylix).Citation:
Envoy� par jeannot27
Si tu le d�sires, je poss�de une unit� "standart" qui est livr� avec un bouquin sur le sujet de l'I�C...
Plus ton code est m�thodiquement structur�, moins d'erreurs tu auras!
Je veux bien l'unite standard merci....
Tu connais le C, C++?
Grossomodo, tous les languages se ressmblent, ya juste la synthaxe qui changent...
Voici l'unit�; Il sagit d'une DLL avec 2 fonctions -> Lire & Ecrire:
http://site.voila.fr/subut/data3/i2c_dll.zip (3 ko)
Merci...sais tu si je peux trouver les codes se ratachant aux fonctions lecture ecriture?Citation:
Envoy� par Sub0
Citation:
Envoy� par Sub0
Pourrais tu jeter un oeil sur mon code? ca fait 2 jours que je suis dessus et je craque.....
O� �a?Citation:
Pourrais tu jeter un oeil sur mon code? ca fait 2 jours que je suis dessus et je craque.....
Bonjour,
je ne comprends rien � ce que vous raconter mais le sujet m'interesse beaucoup.
Je ne savais pas qu'il �tait possible de programmer des PIC (dites moi si je dis n'importe quoi) avec C++Builder ou Delphi.
Quel type "d'application" as tu d�velopp�e Sub0 ?
Je d�veloppe des programmes avec TP, BPW ou Delphi permettant de piloter des montages �lectroniques.
PIC, ADC, DAC, Eproms, frequencem�tre, ohmsm�tre, voltm�tre, capacim�tre, etc...
Mes applications sont tr�s sp�ciales, chacune d�di�e � un montage bien pr�cis.
J'utilise surtout le port //, mais je connais le port s�rie, usb, ide & joystick, �+
Je t envoye un message prive.....merciCitation:
Envoy� par Sub0
Je travaille avec un �lectronicien qui programme ses PIC avec un logiciel tr�s pr�cis.
Quelles sont les avantages de programmer avec ce type d'IDE par rapport � Delphi ou C++Builder ?
Combien de temps faut-il pour faire un programme tout simple sur un PIC avec Delphi (pour un d�butant) ?
As-tu essay� d'augmenter le d�lai?
Si tu veux, tu peux essayer d'utiliser la DLL que je t'ai donn�...
Pour cet aprem, je n'aurai pas le temps d'�tudier ton code, �+
g essaye d'augmente le delai oui....tu mets combien comme delai toi?Citation:
Envoy� par Sub0
Les avantages sont que tu n'auras pas � �plucher le datasheet du �C pour comprendre comment le programmer!Citation:
Quelles sont les avantages de programmer avec ce type d'IDE par rapport � Delphi ou C++Builder ?
Pour programmer un PIC, il est plus simple de ce servir de ce qui a d�j� �t� fait.
Mais pour le reste, il faut programmer soi-m�me.
-> Il n'existe pas de programme quand le montage est de sa propre conception.
Les programmes PIC sont des fichiers binaires � l'extension HEX. Il existe d�j� des compilateurs pour les PICs.Citation:
Combien de temps faut-il pour faire un programme tout simple sur un PIC avec Delphi (pour un d�butant) ?
Utiliser Delphi, C++ Builder, ou un autre compilateur est n�cessaire pour piloter un montage,
pas pour programmer des PICs.
Le temps que va prendre le d�veloppement d'un programme d�pend de sa complexit�, c'est tr�s variable, �+
Cela d�pend des limites du composant!Citation:
tu mets combien comme delai toi?
En g�n�ral, je commence pas un d�lai tr�s grand, et une fois que je suis s�r que tout fonctionne,
je diminue le d�lai progressivement jusqu'� que �a ne fonctionne plus.
Puis je r�augmente l�g�rement pour que tout refonctionne.
pour le 24LC00 tu mettrais combien?Citation:
Envoy� par Sub0
Citation:
pour le 24LC00 tu mettrais combien?
-> Voir la table 1-3 du datasheet que je t'ai donn�.Citation:
4 ms maximum byte write cycle time
Le d�lai est cr�e par une boucle d'incr�mentation.
Le temps r�sultant est variable selon la puissance de ton PC et des ressources libres.
Si ton montage ne fonctionne pas encore, mais un grand d�lai.
Tu le diminuras quand �a marchera, �+
Ca marche pas, qd tu auras 5min pourrais tu regarder mon code stp, ca doit etre un truc tout con mais je vois pas.......En totu cas merci pour tout...
a+
Ce d�lai corespond a quoi exactement ?
Une eprom poss�de une donn�e de plusieurs bits par adresse.Citation:
Ce d�lai corespond a quoi exactement ?
Pour l'�criture d'une donn�e, il faut d�finir l'adresse, la donn�e, puis envoyer l'�criture.
Cette �criture n�cessite un certain temps.
De m�me, la m�morisation d'un bit (d'adresse ou de donn�e) n�cessite un certain temps.
Quand tu envoit un bit au composant, il faut lui laisser le temps de le recevoir et de le m�moriser.
Le d�lai du bus I�C sert � �a. Il permet aussi au composant de diff�rencier l'�tat d'un changement d'�tat.
Je veux bien regarder ton code, mais je doute que 5 min suffisent!Citation:
qd tu auras 5min pourrais tu regarder mon code stp,
R�pond-moi d'abord:
- Est-ce-que c'est toi qui la �crit ce code de A � Z?
- As-tu v�rifier au voltm�tre que tu arrivais bien � d�finir l'�tat de data et clock?
- As-tu d'autres �l�ments � me donner, o� sont �crites les fonctions appell�es?
�+
Non j'ai repris les write et read d'un octet, qui marchent tres bien avec une eeprom Xicor X24C00, j'ai ecris moi la fonction d'ecriture de l'eeprom pour cette derniere, no probleme...Citation:
Est-ce-que c'est toi qui la �crit ce code de A � Z?
Le protocole I2C de la microship est completement different de celui de Xicor, donc je me suis dit que j'allais implementer le nouveau protocole I2C de la 24LC00 en me servant des fonctions de lecture/ecriture d'un octet sur le port I2C, mais heals ca ne marche pas......je penses avoir bien implementer ce nouveau protocole alors je ne comprends pas......
Non car ces etats marchent tres bien pour la Xicor.....donc le pilotage de SDA et SDL fonctionnent.....Citation:
As-tu v�rifier au voltm�tre que tu arrivais bien � d�finir l'�tat de data et clock?
Oui j'appelle tout betement mes fonctions ecriture/lecture d'eeprom pour la meme adresse j'ecris, je lis....Citation:
As-tu d'autres �l�ments � me donner, o� sont �crites les fonctions appell�es?
Ecriture
Lecture sur le port serie par borllandc++:Code:
1
2
3
4 Ecriture = 0xF0; pucPointeurDataI2C = (ubyte *) &Ecriture; IO_vI2C_Write_Bytes( 160,0);
voila et quoi que j'ecrive borland m'affiche toujours 0x00 et non par exemple comme ici : 0xF0.....Code:
1
2
3 Prov_Test1[0] = IO_ubI2C_Read_Bytes( 160,0); EmissionData(1,Prov_Test1);
Voila merci pour tout
Tu aurais d� commencer par l�! :lol:Citation:
Non j'ai repris les write et read d'un octet, qui marchent tres bien avec une eeprom Xicor X24C00, j'ai ecris moi la fonction d'ecriture de l'eeprom pour cette derniere
Ton erreur se trouve s�rement dans cette proc�dure.
Il faut comparer les modes op�ratoires des 2 Eproms dans leur datasheet!
L'une ne doit pas se piloter comme l'autre... la diff�rence?
Je te conseil de diminuer le d�lai et de faire des essais en modifiant des trucs dans cette proc,
jusqu'� trouver ton (ou tes) erreur(s).
-> Il faut �tudier la s�quence de lecture et d'�criture des Eproms.
Bon courage, �+
Attention, qaund je dis "write" et "read" c pour 1 octet! ca ne change pas quelque soit l'eeprom.......ce qui change c le protocole d'ecriture et de lecture de l'eeprom elle meme decrites dans les datasheet respective....je me trompe? je disais juste que les "write" et read" pour 1 octet fonctionnent puisque je les ai testees.....Citation:
Envoy� par Sub0
a+
Oui, c'est �a, tu ne te trompes pas.
Il faut que tu adaptes tes proc�dures d'�criture/lecture d'Eprom au nouveau mod�le...
Tu devras analyser les datasheets des composants, pour recr�er le protocol correspondant.
C'est tout! :wink:
Pour les essais, met un d�lai assez grand, et quand �a fonctionnera, tu le diminuras au maximum.
Bon courage, �+
c justement la que le bas blesse je pense avoir ete fidele au nouveau protocole....
Le delai a quel niveau de la programmation tu le mets?
5 it�rations, c'est trop peu! Surtout sous Windows...Code:
1
2
3
4
5
6 void IO_vI2C_Pause(void) { char a=0; for (a=0;a<3;a++) ; }
Je ne sais pas, essaye d'avoir 5 ..10ms pour un cycle, fait le calcul avec la fr�quence de ton cpu,
ou regarde combien de temps il mets pour l'op�ration compl�te, puis divise par le nombre de cycle... �+
Citation:
Envoy� par Sub0
J'avance, j'arrive a ecrire dedans (avec la tempo ci dessus) mais la lecture ne marche pas......
Comment peux-tu v�rifier l'�criture sans pouvoir lire son contenu? humm?
Bah g un logiciel qui ecrit et lit sur port parallele.....je peux ecrire et lire a volonte avec ce logiciel mais moi je veux le faire pour mon soft a partir de mon microcoleur......Citation:
Envoy� par Sub0
En g�n�ral, l'�criture est plus difficile � obtenir que la lecture.
Soit le probl�me vient du protocol de lecture, ou alors le d�lai...
A mon avis, tu n'es plus tr�s loin du tag r�solu! :lol: