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: