Pages: 1 [2]   Go Down
Author Topic: Disparition eeprom_read_word(adr) !  (Read 3452 times)
0 Members and 1 Guest are viewing this topic.
Poitiers (France)
Offline Offline
Full Member
***
Karma: 0
Posts: 136
Ca va j'vais le faire !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Re, c'est FAIT !

Ca fonctionne !

J'avais divers pbs dans mon code, c'est résolu. Du coup j'ai revu mes fonctions de lecture/écriture dans l'eeprom et j'ai trouvé pourquoi auparavant mes fonctions refusaient de fonctionner avaec une adresse en int*. J'écrirai là-dessus ensuite...

Bon, le système est scindé en deux programmes : prog_jours2 et test_jours2.

Le premier, prog_jours2, inscrit les jours dans l'EEprom.
Le second, test_jours2, affiche sur la liason série (j'utilise HyperTerminal) le contenu de l'EEprom pour vérifier.

Le format de stockage dans l'EEprom est le suivant :
- premier octet, le nombre de chaînes stockées ;
- les n (nombre de chaînes stockées) mots suivants, les index de début des chaînes (ce que j'appelle la SAT, String Allocation Table) ;
- les octets suivants sont les caratères des chaînes de caractères avec un 0 délimiteur en fin de chacune.

Suite à différents essais, ... j'ai changé le système de description des chaînes. Il n'y a plus de tableau pour les "nombres", mais une chaîne de caratères. Plus simple à modifier vérifier, coder, ... Et cette chaîne de caractères est "compressée" pour éviter les redites. Le système est le suivant '/' pour une fin de chaîne, '1' pour 'un', 2 pour 'deux', ... 'D' pour 'dix', ... regardez le code, c'est compréhensible, je pense.

Le programme met un certain temps à programmer l'EEprom. Installez si vous le pouvez une LED sur la broche 13, elle s'allumera à la fin de la programmation de l'eeprom. Sans LED, attendre 30s.

Pas de place pour les programmes en direct dans le message donc :
- programme de programmation de l'EEprom : http://perso.wanadoo.fr/rousseau-benoit/codes/arduino/prog_jours2.txt,
- programme de lecture de l'EEprom : http://perso.wanadoo.fr/rousseau-benoit/codes/arduino/test_jours2.txt.

Dites-moi si ca fonctionne chez vous.

a+.
Logged

Cordialement,
Benoît ROUSSEAU

Britanny
Offline Offline
Full Member
***
Karma: 0
Posts: 233
Mais vrai, j'ai trop pleuré, toute lune est atroce
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour Benoît... ça fait longtemps hein smiley-razz

gros, gros projet sur le feu... pas eu de temps libre... mais là j'en ai du coups je reviens à mes amours.
j'ai installé un atmega168 sur une de mes cartes, mais le problème de manque de ram est le même que sur l'atmega8... donc j'ai besoin d'écrire mes trucs dans la rom...
donc je suis allé rechercher ton prog et j'ai testé....avec arduino06
et j'a une erreur ;D (3 versions d'arduino plustard...)

Code:
In function 'void eeprom_wr_byte(const unsigned int*, byte)':
error: 'EEWE' was not declared in this scope


qu'est c' y veut le monsieur ? :o
y a pas d'init de la var ?

merci d'avance

eric
« Last Edit: November 23, 2006, 01:41:14 pm by mrbbp » Logged

Poitiers (France)
Offline Offline
Full Member
***
Karma: 0
Posts: 136
Ca va j'vais le faire !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

salut smiley

non, c'est un problème du aux changements du nom des registres dans l'ATMEGA168 j'ai résolu le pb mais je ne te répondrai que demain... patience...
Logged

Cordialement,
Benoît ROUSSEAU

Britanny
Offline Offline
Full Member
***
Karma: 0
Posts: 233
Mais vrai, j'ai trop pleuré, toute lune est atroce
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est quand demain Benoit ?  :smiley
Logged

Poitiers (France)
Offline Offline
Full Member
***
Karma: 0
Posts: 136
Ca va j'vais le faire !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Désolé, je t'avais oublié, j'ai enchaîné deux missions et je pensais avoir le temps... Je te réponds ce soir de l'hôtel... smiley la je suis en cours et comme je suis le formateur, "ca la fout mal".
Logged

Cordialement,
Benoît ROUSSEAU

Poitiers (France)
Offline Offline
Full Member
***
Karma: 0
Posts: 136
Ca va j'vais le faire !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Alors...

Avec le 168 je n'ai pas encore pris le temps de réécrire des fonctions de gestion l'eeprom mais elles existent toujours dans la lib donc j'utilise celles de la lib.

En clair :
1) en tête de code je place : #include "avr/eeprom.h"
2) j'utilise la syntaxe avec cast (transtypage) pour les accès : sensibilite = eeprom_read_byte((const uint8_t*)eepromadresse++);
3) pour écrire idem genre : eeprom_write_byte ((uint8_t*)eepromadresse, sensibilite);

En complément de ceci je vous prépare un "post" sur la gestion des interruptions externes sur le 168 et sur la réduction de la taille du code. Pour l'instant je à l'étranger et débordé de travail. Un peu de patience pour que je rédige, mais ca fonctionne.
Logged

Cordialement,
Benoît ROUSSEAU

Pages: 1 [2]   Go Up
Jump to: