E2PROM 24C128

Bonjour

Quelqu'un aurait il déjà connecté une 24C128 à ARDUINO ? je n'ai aucune réponse ni en écriture ni en lecture et j'imagine que mon code est pas terrible. J'utilise la librairie Wire.

Le scanner I2C détecte un périphérique esclave à l'adresse 0x50 mais je l'ai configurée pour avoir l'adresse 0xA0 ...

Si quelqu'un a un bout de code qui fonctionne en lecture et en écriture pour une uno R3 merci d'avance. Je continue à rechercher mais je ne trouve rien pour le moment. J'aurait du faire softeux au lieu de hardeux moi ...

Un grand merci d'avance

Bon je ne sait plus lire une datasheet. L'adresse de base est bien 0x50 et l'adresse du bloc à adresser dépasse 256 ... Il faut donc écrire l'adresse en 2 fois et ca marche quand même beaucoup mieux ...

Je vais être quitte pour écrire des fonctions d'acces et des écritures / lectures par pages.

Allez plus qu'un gros bloc ...

Ca va être un chef d'oeuvre.

Bonjour toufou,

Moi aussi, je ne comprenais pas pourquoi l'adresse des SRAM I2C devait être 0x50 et non 0xA0, en fait, la lib twi, décale l'adresse à gauche, puis ajoute "0 " pour écrire ou "1" pour lire. Maintenant c'est clair pour moi.

Sinon, pour lire et écrire sur ces SRAM, pourquoi ne pas utiliser la lib Wire ? Il semble qu'il y a un problème pour l'écriture par page. Je pense qu'il s'agit de la taille des buffers définie dans twi.h

define TWI_BUFFER_LENGTH 32

if faudrait mettre 64 ou 66 si l'adresse de début est prise ou non en compte.

Tiens nous au courant, ça m'intéresse.

Lequel de twi.h ?
Parce qu’il y en a deux : pourquoi faire simple quand on peux faire compliqué au royaume Arduino ?

Il existe un twi.h dans l’avr-libC, la mère de toutes les librairies.
Il se trouve à deux endroits (aîe ça se gâte même chez Atmel):
(Nota je suis sous linux, je ne connais pas les chemins Windows mais ce doit être équivalent)

  1. usr/lib/avr/includes/utility/twi.h
  2. usr/lib/avr/includes/compat/twi.h

Et dans la classe TwoWire on trouve l’autre fichier twi.h :
/arduino/libraries/Wire/utility/twi.h,

Toujours pour simplifier Wire est abusivement appelée une classe.
En réalité “Wire” est un objet instancié à partir de la classe “TwoWire”. La preuve à la fin du fichier Wire.cpp on trouve la ligne : TwoWire Wire = TwoWire() .

Pour simplifier encore le fichier arduino/libraries/Wire/utility/twi.c inclu les deux fichier twi.h , celui de l’avr-libC : #include <compat/twi.h> et celui de la classe TwoWire : #include “twi.h” , les appels aux fichiers se faisant soit avec des < > soit des " ".

On ne peut pas dire que les auteurs de la classe TwoWire ignoraient l’existence de de ce fichier puisqu’ils l’utilisent.

Pour le problème qui m’intéresse je vais écrire un driver qui utilise la librairie WIRE car je n'ai pas besoin de grosse performance. Depuis le début de ce projet j’évite au maximum d'utiliser les librairies ARDUINO.

Elles ne sont pas suffisamment performantes pour mon projet. Comprendre par la qu'elles consomment trop de cycles machine et qu'elles occupent trop d'espace mémoire. Je comprend au fur et à mesure pourquoi il y a un engouement pour cette plateforme.

N'importe qui peut se prendre pour un bill gates en herbe :D mais bon quand j'utilise un micro à 20 MIPS c'est pas pour le transformer en tortue ... C'est pourquoi mon code devient de moins en moins portable (sections assembleur). Mais bon on arrive facilement à être 70 fois plus rapide que la même chose écrite en pseudo C sur les sections de codes temps critique.

Pour des applications simples c'est vraiment très bien fait. Prochain projet j'utilise la suite de développement ATMEL et je conserve le 328 - P qui est vraiment pas mal. Je mettrait mon petit bout de soft ici pour l'eeprom, ca manque d'avoir juste des exemples de code sur quelques lignes pour expliquer simplement les choses.

C'est vrai que l'adresse de base est bien 0xA0 mais bon le scanner E2PROM qu'on trouve m'a permis d’éviter la calvitie précoce. Par contre c'est inexcusable d'avoir omis que 16 Ko formrnt des adresses sur 2 octets.

Merci pour les interventions. Dés que je sort la tête de la bulle je vais regarder si je peut aider un peu en hardware.

Hé oui, c'est très simple, sur Windows il y en trois, mais elle sont complémentaires.

Le #define TWI_BUFFER_LENGTH 32 se trouve dans : hardware\arduino\avr\libraries\Wire\utility\twi.h pour Arduino-1.5.2 et arduino\libraries\Wire\utility\twi.h pour Arduino-1.0.1

Hé oui, c'est très simple, sur Windows il y en trois, mais elle sont complémentaires.

Complémentaires oui, mais conserver le même nom de fichier pour 2 fichiers différents qui ne sont différentiables que par leur emplacement.... bon. Parce que sous Win tu as forcément l'avr-libc et son twi.h qui doit se trouver du coté du compilateur GCC (avr-gcc ou gcc-avr).

Je comprend au fur et à mesure pourquoi il y a un engouement pour cette plateforme. Elles ne sont pas suffisamment performantes pour mon projet

Elles ne pas faites pour du travail pro, elles sont faites pour débuter ou pour faire un truc vite fait, et elles le font bien. Même si je critique et que cela m'agace quand je vois des utilisateurs partir à la pêche de versions différentes de la même librairie jusqu'à en trouver une qui tombe en marche avec le matériel qu'ils viennent d'acheter sur Ebay et qui bien entendu n'a pas de schéma, je reconnais le travail fourni par l'équipe Wiring/Arduino et chacun est libre, en fonction de son niveau, de s'y enfermer ou pas.

N'importe qui peut se prendre pour un Bill Gates en herbe

Ah bon Billou c'est un programmeur ? Depuis quand ? Je croyais que c'était juste un (excellent) marqueteur. Parce que même l'ancêtre DOS ce n'est pas lui qui l'a écrit : il a acheté la boîte qui l'avait conçu . A l'origine DOS = Dirty Operating System :grin:

Je ne vais pas ressortir la biographie de bilou mais oui il a été développeur en son temps ... Et oui il a programmé un truc qui ressemblait de loin à un DOS. Ensuite il est devenu le visionnaire / marketteux que l'on connaît et que pas mal de monde envie. Ca a servi de base à pas mal de choses développées sur commodore 64 et ORIC 1 pour ceux dont les "demos" disent quelque chose ...

Pour ce qui est d'Arduino on rentre très vite dedans. Bon parfois on a aussi envie d'en ressortir encore plus vite mais grâce aux forums on arrive à s'accrocher. Ca commence à prendre forme dans tous les cas, encore quelques moments difficiles à passer et le projet sera terminé.

Encore 2 - 3 poinds chauds auxquels je vait réflechir avant de solliciter de l'aide.

Une fois de plus merci pour le passage.

Bon ca fait un moment que je ne suis pas passé par ici. Merci pour votre aide j'ai pu terminer le projet et c'est un très beau bébé !.