IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Copie du contenu d'une eeprom vers une autre


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Points : 58
    Points
    58
    Par défaut Copie du contenu d'une eeprom vers une autre
    Bonjour,

    Voilà je me trouve face à un petit obstacle, j'ai programmé un système embarqué à base de microcontrolleur contenant egalement une eeprom afin d'enregsitrer des configurations.

    J'ai réalisé une nouvelle carte PCB identique, je charge bien mon programme, ça fontionne bien sauf aux endroits ou interviennent des données en provenance de l'eeprom ça bug à cause du contenu de l'eeprom qui par defqut est FF.

    J'ai fait une copie du contenu de mon eeprom de ma 1ere carte ce contenu je voudrais non pas le saisir manuellement dans l'eeprom de ma nouvelle carte PCB (car ça prendrait trop de temps) mais faire une restauration à partir d'un programme ou d'une fonction.

    Voici le contenu de mon eeprom printé de l'addresse 0 à FF correspondant à ss, et le contenu à cette addresse correspond à DATA mais attention vous remarquerez que les deux derniers chiffres de DATA allant de 00 à FF ne constituent pas le contenu. Donc autrement à l'adresse 0 , le contenu vaut simplement 30.

    Contenu EEPROM:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
     
     
    valeur de ss: 0 - 0
     DATA 3000h
    valeur de ss: 1 - 1
     DATA 2001h
    valeur de ss: 2 - 2
     DATA 3002h
    valeur de ss: 3 - 3
     DATA 2303h
    valeur de ss: 4 - 4
     DATA 2204h
    valeur de ss: 5 - 5
     DATA 1105h
    valeur de ss: 6 - 6
     DATA 206h
    valeur de ss: 7 - 7
     DATA 307h
    valeur de ss: 8 - 8
     DATA 408h
    valeur de ss: 9 - 9
     DATA 509h
    valeur de ss: 10 - A
     DATA 60Ah
    valeur de ss: 11 - B
     DATA 70Bh
    valeur de ss: 12 - C
     DATA 80Ch
    valeur de ss: 13 - D
     DATA FF0Dh
    valeur de ss: 14 - E
     DATA FF0Eh
    valeur de ss: 15 - F
     DATA FF0Fh
    valeur de ss: 16 - 10
     DATA 1010h
    valeur de ss: 17 - 11
     DATA 11h
    valeur de ss: 18 - 12
     DATA 1112h
    valeur de ss: 19 - 13
     DATA FF13h
    valeur de ss: 20 - 14
     DATA FF14h
    valeur de ss: 21 - 15
     DATA FF15h
    valeur de ss: 22 - 16
     DATA 16h
    valeur de ss: 23 - 17
     DATA FF17h
    valeur de ss: 24 - 18
     DATA FF18h
    valeur de ss: 25 - 19
     DATA FF19h
    valeur de ss: 26 - 1A
     DATA FF1Ah
    valeur de ss: 27 - 1B
     DATA FF1Bh
    valeur de ss: 28 - 1C
     DATA FF1Ch
    valeur de ss: 29 - 1D
     DATA FF1Dh
    valeur de ss: 30 - 1E
     DATA FF1Eh
    valeur de ss: 31 - 1F
     DATA FF1Fh
    valeur de ss: 32 - 20
     DATA FF20h
    valeur de ss: 33 - 21
     DATA 21h
    valeur de ss: 34 - 22
     DATA FF22h
    valeur de ss: 35 - 23
     DATA 23h
    valeur de ss: 36 - 24
     DATA FF24h
    valeur de ss: 37 - 25
     DATA FF25h
    valeur de ss: 38 - 26
     DATA 5226h
    valeur de ss: 39 - 27
     DATA FF27h
    valeur de ss: 40 - 28
     DATA FF28h
    valeur de ss: 41 - 29
     DATA FF29h
    valeur de ss: 42 - 2A
     DATA FF2Ah
    valeur de ss: 43 - 2B
     DATA FF2Bh
    valeur de ss: 44 - 2C
     DATA FF2Ch
    valeur de ss: 45 - 2D
     DATA FF2Dh
    valeur de ss: 46 - 2E
     DATA FF2Eh
    valeur de ss: 47 - 2F
     DATA FF2Fh
    valeur de ss: 48 - 30
     DATA FF30h
    valeur de ss: 49 - 31
     DATA 31h
    valeur de ss: 50 - 32
     DATA FF32h
    valeur de ss: 51 - 33
     DATA FF33h
    valeur de ss: 52 - 34
     DATA FF34h
    valeur de ss: 53 - 35
     DATA FF35h
    valeur de ss: 54 - 36
     DATA FF36h
    valeur de ss: 55 - 37
     DATA FF37h
    valeur de ss: 56 - 38
     DATA FF38h
    valeur de ss: 57 - 39
     DATA FF39h
    valeur de ss: 58 - 3A
     DATA FF3Ah
    valeur de ss: 59 - 3B
     DATA FF3Bh
    valeur de ss: 60 - 3C
     DATA FF3Ch
    valeur de ss: 61 - 3D
     DATA FF3Dh
    valeur de ss: 62 - 3E
     DATA FF3Eh
    valeur de ss: 63 - 3F
     DATA FF3Fh
    valeur de ss: 64 - 40
     DATA FF40h
    valeur de ss: 65 - 41
     DATA FF41h
    valeur de ss: 66 - 42
     DATA FF42h
    valeur de ss: 67 - 43
     DATA FF43h
    valeur de ss: 68 - 44
     DATA FF44h
    valeur de ss: 69 - 45
     DATA FF45h
    valeur de ss: 70 - 46
     DATA FF46h
    valeur de ss: 71 - 47
     DATA FF47h
    valeur de ss: 72 - 48
     DATA FF48h
    valeur de ss: 73 - 49
     DATA FF49h
    valeur de ss: 74 - 4A
     DATA FF4Ah
    valeur de ss: 75 - 4B
     DATA FF4Bh
    valeur de ss: 76 - 4C
     DATA FF4Ch
    valeur de ss: 77 - 4D
     DATA FF4Dh
    valeur de ss: 78 - 4E
     DATA FF4Eh
    valeur de ss: 79 - 4F
     DATA FF4Fh
    valeur de ss: 80 - 50
     DATA FF50h
    valeur de ss: 81 - 51
     DATA AA51h
    valeur de ss: 82 - 52
     DATA FF52h
    valeur de ss: 83 - 53
     DATA FF53h
    valeur de ss: 84 - 54
     DATA FF54h
    valeur de ss: 85 - 55
     DATA FF55h
    valeur de ss: 86 - 56
     DATA FF56h
    valeur de ss: 87 - 57
     DATA FF57h
    valeur de ss: 88 - 58
     DATA FF58h
    valeur de ss: 89 - 59
     DATA FF59h
    valeur de ss: 90 - 5A
     DATA FF5Ah
    valeur de ss: 91 - 5B
     DATA FF5Bh
    valeur de ss: 92 - 5C
     DATA FF5Ch
    valeur de ss: 93 - 5D
     DATA FF5Dh
    valeur de ss: 94 - 5E
     DATA FF5Eh
    valeur de ss: 95 - 5F
     DATA FF5Fh
    valeur de ss: 96 - 60
     DATA FF60h
    valeur de ss: 97 - 61
     DATA FF61h
    valeur de ss: 98 - 62
     DATA FF62h
    valeur de ss: 99 - 63
     DATA FF63h
    valeur de ss: 100 - 64
     DATA FF64h
    valeur de ss: 101 - 65
     DATA FF65h
    valeur de ss: 102 - 66
     DATA FF66h
    valeur de ss: 103 - 67
     DATA FF67h
    valeur de ss: 104 - 68
     DATA FF68h
    valeur de ss: 105 - 69
     DATA FF69h
    valeur de ss: 106 - 6A
     DATA FF6Ah
    valeur de ss: 107 - 6B
     DATA FF6Bh
    valeur de ss: 108 - 6C
     DATA FF6Ch
    valeur de ss: 109 - 6D
     DATA FF6Dh
    valeur de ss: 110 - 6E
     DATA FF6Eh
    valeur de ss: 111 - 6F
     DATA FF6Fh
    valeur de ss: 112 - 70
     DATA FF70h
    valeur de ss: 113 - 71
     DATA FF71h
    valeur de ss: 114 - 72
     DATA FF72h
    valeur de ss: 115 - 73
     DATA FF73h
    valeur de ss: 116 - 74
     DATA FF74h
    valeur de ss: 117 - 75
     DATA FF75h
    valeur de ss: 118 - 76
     DATA FF76h
    valeur de ss: 119 - 77
     DATA FF77h
    valeur de ss: 120 - 78
     DATA FF78h
    valeur de ss: 121 - 79
     DATA FF79h
    valeur de ss: 122 - 7A
     DATA FF7Ah
    valeur de ss: 123 - 7B
     DATA FF7Bh
    valeur de ss: 124 - 7C
     DATA FF7Ch
    valeur de ss: 125 - 7D
     DATA FF7Dh
    valeur de ss: 126 - 7E
     DATA FF7Eh
    valeur de ss: 127 - 7F
     DATA FF7Fh
    valeur de ss: 128 - 80
     DATA FF80h
    valeur de ss: 129 - 81
     DATA FF81h
    valeur de ss: 130 - 82
     DATA FF82h
    valeur de ss: 131 - 83
     DATA FF83h
    valeur de ss: 132 - 84
     DATA FF84h
    valeur de ss: 133 - 85
     DATA FF85h
    valeur de ss: 134 - 86
     DATA FF86h
    valeur de ss: 135 - 87
     DATA FF87h
    valeur de ss: 136 - 88
     DATA FF88h
    valeur de ss: 137 - 89
     DATA FF89h
    valeur de ss: 138 - 8A
     DATA FF8Ah
    valeur de ss: 139 - 8B
     DATA FF8Bh
    valeur de ss: 140 - 8C
     DATA FF8Ch
    valeur de ss: 141 - 8D
     DATA FF8Dh
    valeur de ss: 142 - 8E
     DATA FF8Eh
    valeur de ss: 143 - 8F
     DATA FF8Fh
    valeur de ss: 144 - 90
     DATA FF90h
    valeur de ss: 145 - 91
     DATA FF91h
    valeur de ss: 146 - 92
     DATA FF92h
    valeur de ss: 147 - 93
     DATA FF93h
    valeur de ss: 148 - 94
     DATA FF94h
    valeur de ss: 149 - 95
     DATA FF95h
    valeur de ss: 150 - 96
     DATA FF96h
    valeur de ss: 151 - 97
     DATA FF97h
    valeur de ss: 152 - 98
     DATA FF98h
    valeur de ss: 153 - 99
     DATA FF99h
    valeur de ss: 154 - 9A
     DATA FF9Ah
    valeur de ss: 155 - 9B
     DATA FF9Bh
    valeur de ss: 156 - 9C
     DATA FF9Ch
    valeur de ss: 157 - 9D
     DATA FF9Dh
    valeur de ss: 158 - 9E
     DATA FF9Eh
    valeur de ss: 159 - 9F
     DATA FF9Fh
    valeur de ss: 160 - A0
     DATA FFA0h
    valeur de ss: 161 - A1
     DATA 20A1h
    valeur de ss: 162 - A2
     DATA FFA2h
    valeur de ss: 163 - A3
     DATA FFA3h
    valeur de ss: 164 - A4
     DATA FFA4h
    valeur de ss: 165 - A5
     DATA FFA5h
    valeur de ss: 166 - A6
     DATA FFA6h
    valeur de ss: 167 - A7
     DATA FFA7h
    valeur de ss: 168 - A8
     DATA FFA8h
    valeur de ss: 169 - A9
     DATA FFA9h
    valeur de ss: 170 - AA
     DATA FFAAh
    valeur de ss: 171 - AB
     DATA FFABh
    valeur de ss: 172 - AC
     DATA FFACh
    valeur de ss: 173 - AD
     DATA FFADh
    valeur de ss: 174 - AE
     DATA FFAEh
    valeur de ss: 175 - AF
     DATA FFAFh
    valeur de ss: 176 - B0
     DATA FFB0h
    valeur de ss: 177 - B1
     DATA FFB1h
    valeur de ss: 178 - B2
     DATA FFB2h
    valeur de ss: 179 - B3
     DATA FFB3h
    valeur de ss: 180 - B4
     DATA FFB4h
    valeur de ss: 181 - B5
     DATA FFB5h
    valeur de ss: 182 - B6
     DATA FFB6h
    valeur de ss: 183 - B7
     DATA FFB7h
    valeur de ss: 184 - B8
     DATA FFB8h
    valeur de ss: 185 - B9
     DATA FFB9h
    valeur de ss: 186 - BA
     DATA FFBAh
    valeur de ss: 187 - BB
     DATA FFBBh
    valeur de ss: 188 - BC
     DATA FFBCh
    valeur de ss: 189 - BD
     DATA FFBDh
    valeur de ss: 190 - BE
     DATA FFBEh
    valeur de ss: 191 - BF
     DATA FFBFh
    valeur de ss: 192 - C0
     DATA FFC0h
    valeur de ss: 193 - C1
     DATA 10C1h
    valeur de ss: 194 - C2
     DATA FFC2h
    valeur de ss: 195 - C3
     DATA FFC3h
    valeur de ss: 196 - C4
     DATA FFC4h
    valeur de ss: 197 - C5
     DATA FFC5h
    valeur de ss: 198 - C6
     DATA FFC6h
    valeur de ss: 199 - C7
     DATA FFC7h
    valeur de ss: 200 - C8
     DATA FFC8h
    valeur de ss: 201 - C9
     DATA FFC9h
    valeur de ss: 202 - CA
     DATA FFCAh
    valeur de ss: 203 - CB
     DATA FFCBh
    valeur de ss: 204 - CC
     DATA FFCCh
    valeur de ss: 205 - CD
     DATA FFCDh
    valeur de ss: 206 - CE
     DATA FFCEh
    valeur de ss: 207 - CF
     DATA FFCFh
    valeur de ss: 208 - D0
     DATA FFD0h
    valeur de ss: 209 - D1
     DATA FFD1h
    valeur de ss: 210 - D2
     DATA FFD2h
    valeur de ss: 211 - D3
     DATA FFD3h
    valeur de ss: 212 - D4
     DATA FFD4h
    valeur de ss: 213 - D5
     DATA FFD5h
    valeur de ss: 214 - D6
     DATA FFD6h
    valeur de ss: 215 - D7
     DATA FFD7h
    valeur de ss: 216 - D8
     DATA FFD8h
    valeur de ss: 217 - D9
     DATA FFD9h
    valeur de ss: 218 - DA
     DATA FFDAh
    valeur de ss: 219 - DB
     DATA FFDBh
    valeur de ss: 220 - DC
     DATA FFDCh
    valeur de ss: 221 - DD
     DATA FFDDh
    valeur de ss: 222 - DE
     DATA FFDEh
    valeur de ss: 223 - DF
     DATA FFDFh
    valeur de ss: 224 - E0
     DATA FFE0h
    valeur de ss: 225 - E1
     DATA FFE1h
    valeur de ss: 226 - E2
     DATA FFE2h
    valeur de ss: 227 - E3
     DATA FFE3h
    valeur de ss: 228 - E4
     DATA FFE4h
    valeur de ss: 229 - E5
     DATA FFE5h
    valeur de ss: 230 - E6
     DATA FFE6h
    valeur de ss: 231 - E7
     DATA FFE7h
    valeur de ss: 232 - E8
     DATA FFE8h
    valeur de ss: 233 - E9
     DATA FFE9h
    valeur de ss: 234 - EA
     DATA FFEAh
    valeur de ss: 235 - EB
     DATA FFEBh
    valeur de ss: 236 - EC
     DATA FFECh
    valeur de ss: 237 - ED
     DATA FFEDh
    valeur de ss: 238 - EE
     DATA FFEEh
    valeur de ss: 239 - EF
     DATA FFEFh
    valeur de ss: 240 - F0
     DATA FFF0h
    valeur de ss: 241 - F1
     DATA FFF1h
    valeur de ss: 242 - F2
     DATA FFF2h
    valeur de ss: 243 - F3
     DATA FFF3h
    valeur de ss: 244 - F4
     DATA FFF4h
    valeur de ss: 245 - F5
     DATA FFF5h
    valeur de ss: 246 - F6
     DATA FFF6h
    valeur de ss: 247 - F7
     DATA FFF7h
    valeur de ss: 248 - F8
     DATA FFF8h
    valeur de ss: 249 - F9
     DATA FFF9h
    valeur de ss: 250 - FA
     DATA FFFAh
    valeur de ss: 251 - FB
     DATA FFFBh
    valeur de ss: 252 - FC
     DATA FFFCh
    valeur de ss: 253 - FD
     DATA FFFDh
    valeur de ss: 254 - FE
     DATA FFFEh
    valeur de ss: 255 - FF
     DATA FFFFh
    Comment pourrais je automatiser de façon à restaurer la config de l'eeprom dans les nouvelles eeprom ?

    Merci

  2. #2
    Membre éprouvé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 506
    Points : 1 005
    Points
    1 005
    Par défaut
    Bonjour aliveli

    Comme j'aime bien les eeprom, je vais essayé de t'aider aussi pour celui ci.

    Je n'ai pas vraiment compris ta question. Souhaite tu avoir des valeurs par défauts dans ton eeprom, ou avoir des valeurs issues d'un autre calculateur et qui pourrait évoluer dans le temps.

    La réponse change beaucoup de chose.
    Si ceux sont des valeurs par défauts, tu peux les stocker en flash, puis avoir une routine qui check si ton eeprom est vierge. Si elle est vierge, tu peux alors avoir une fonction qui va écrire toutes les valeurs par défauts stockées dans la flash vers ton eeprom

    Si tu veux pouvoir lire les valeur d'une autres carte , puis les programmer dans ta seconde carte, tu devras passer par un moyen de communication. Par exemple, une liaison série qui permet de lire et d'écrire des valeurs dans l'eeprom.

    La première méthode fige tes valeurs dans ton logiciel. Si tu veux changer ces valeurs, il faut aussi changer le logiciel.

    La seconde méthode permet une mise à jour dynamique de ton eeprom.

    Cordialement.

  3. #3
    Membre du Club
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Points : 58
    Points
    58
    Par défaut
    Bonsoir,
    Concretement j'ai plusieurs carte electronique (PCB) que je dois porgrammer de facon a ce qu'elle aient les memes configurations. Au niveau du programme c'est simple je charge le programme dans le microcontrolleur avec FLIP (logiciel de programmation ISP) mais pour charger des donnees dans l'eeprom il faut que c'est le programme qui le fasse, logique mais il faut la fonction pour.

    En fait il s'agit de valeurs par defaut, des configurations tel que le niveau de volume, des priorites etc et qui sont stockees sur une vingtaine de zones addresses de l'eeprom.
    Et donc les donnees que j'ai printees correspondent a ces configs. Donc je dois copier ce que j'ai printe sur la nouvelle carte qui elle aussi possede une eeprom. Mais attention une carte n'a qu'une seule eeprom donc la procedure logique c'est que je fasse un printf des donnees de la carte d'origine tel que j'ai fait par capture et que je fasse une fonction ou je colle simplement ces donnees de facon a ce que la fonction stocke ces donnees dans l'eeprom de la nouvelle carte. Mais comment vais je faire cette fonction que doi elle contenir ?

    Et aussi comme tu l'as dit eventuellement prevoir dans le soft un check qui verifie si la eeprom est vierge si c'est le cas de lancer cette fonction qui mettrait ces donnees par defaut aux bonnes adresses de cette nouvelle eeprom.

    comment vais je definir cette fonction ?

    Merci

  4. #4
    Membre éprouvé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 506
    Points : 1 005
    Points
    1 005
    Par défaut
    Bonjour Aliveli

    Commence par créer un tableau de const avec toutes les valeurs par défauts

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    const unsigned char defaultValue[] = { 0x30 , 0x20 , 0x30 , .... };
    En logiciel embarqué, le fait de mettre le mot clé const positionne tes données dans la rom (ou la flash selon les cas).

    Ensuite, lorsque tu entre dans le main juste après la mise sous tension, tu peux aller checker ton EEPROM.
    Pour checker tes données , tu peux définir un octet en eeprom qui va permettre de vérifier si ton eeprom est vierge ou non. Si il est à 0xFF, alors ton eeprom est vierge, sinon elle est programmée.

    Après il existe des méthode ou tu peux vérifier le contenu en protégant tes données par une checksum.

    Si ton eeprom est vierge, appele ta fonction d'écriture pour chaque octet à écrire. et positionne l'octet de controle à une valeur autre que 0xFF

    Cordialement

  5. #5
    Membre du Club
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Points : 58
    Points
    58
    Par défaut
    Ok,

    Merci je vais voir pour ma fonction d'écriture je pense que ça serait quelque chose de genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
    ecriture_data_eeprom()
    {
    const unsigned char defaultValue[] = { 0x21 , 0x30 , 0xFF , .... };
    int i;
    int k=0;
     
    for (i=0;i<256;i++)
    {
     
    EEP2408_ADDRESS = i;  
    EEP2408_VALUE = defaultValue[k];
    EEP2408_write_byte(EEP2408_ADDRESS,EEP2408_VALUE);
    k++;
    }
     
    }
    Le code d'écriture ne doit pas être plus que ça je crois?
    Mais je ne suis pas sur que l'incrementation avec des décimaux (variable i ) puisse bien marcher, normalement il y a conversion dec->hex mais serait mieux une incrementation en hex ? et comment ?

    Merci

  6. #6
    Membre éprouvé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 506
    Points : 1 005
    Points
    1 005
    Par défaut
    Bonjour aliveli,

    ta variable k est en trop.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    const unsigned char defaultValue[256] = { 0x21 , 0x30 , 0xFF , .... };
     
    ecriture_data_eeprom()
    {
      int i;
     
      for (i=0;i<256;i++)
      {
        EEP2408_write_byte(i,defaultValue[i]);
      }
    }
    Autrement c'est parfait.
    Decimal ou hexa n'est qu'une représentation gérer par le compilateur. Ton micro, lui ne voit que de l'hexa. Il faut toujours écrire ton code pour qu'il soit le plus lisible possible sans nuire à son efficacité

    Pense à remplir corretement le tableau avec les 256 valeurs.

    A+

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Aliveli
    Ok,

    Merci je vais voir pour ma fonction d'écriture je pense que ça serait quelque chose de genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    ecriture_data_eeprom()
    {
       const unsigned char defaultValue[] = { 0x21 , 0x30 , 0xFF , .... };
       int i;
       int k=0;
     
       for (i=0;i<256;i++)
       {
          EEP2408_ADDRESS = i;  
          EEP2408_VALUE = defaultValue[k];
          EEP2408_write_byte(EEP2408_ADDRESS,EEP2408_VALUE);
          k++;
       }
    }
    Ton E2PROM n'a pas de mode 'burst' en écriture ?

  8. #8
    Membre du Club
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Points : 58
    Points
    58
    Par défaut
    Salut Emmanuel,

    Mode 'burst' en écriture ? Je ne sais pas ce que represente ça ?

    Je ne pense que non voici les caracteristiques de mon microcontrolleur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    Features
    • MPEG I/II-Layer 3 Hardwired Decoder
    – Stand-alone MP3 Decoder
    – 48, 44.1, 32, 24, 22.05, 16 kHz Sampling Frequency
    – Separated Digital Volume Control on Left and Right Channels (Software Control
    using 31 Steps)
    – Bass, Medium, and Treble Control (31 Steps)
    – Bass Boost Sound Effect
    – Ancillary Data Extraction
    – CRC Error and MPEG Frame Synchronization Indicators
    • Programmable Audio Output for Interfacing with Common Audio DAC
    – PCM Format Compatible
    – I2S Format Compatible
    • 8-bit MCU C51 Core Based (FMAX = 20 MHz)2304 Bytes of Internal RAM
    • 64K Bytes of Code Memory
    – AT89C51SND1C: Flash (100K Erase/Write Cycles)
    – AT83C51SND1C: ROM
    • 4K Bytes of Boot Flash Memory (AT89C51SND1C)
    – ISP: Download from USB or UART
    • USB Rev 1.1 Controller
    – Full Speed Data Transmission
    • Built-in PLL
    – MP3 Audio Clocks
    – USB Clock
    • MultiMedia Card® Interface Compatibility
    • Atmel DataFlash® SPI Interface Compatibility
    • IDE/ATAPI Interface
    • 2 Channels 10-bit ADC, 8 kHz (8-true bit)
    – Battery Voltage Monitoring
    – Voice Recording Controlled by Software
    • Up to 44 Bits of General-purpose I/Os
    – 4-bit Interrupt Keyboard Port for a 4 x n Matrix
    – SmartMedia® Software Interface
    • 2 Standard 16-bit Timers/Counters
    • Hardware Watchdog Timer
    • Standard Full Duplex UART with Baud Rate Generator
    • Two Wire Master and Slave Modes Controller
    • SPI Master and Slave Modes Controller
    • Power Management
    – Power-on Reset
    – Software Programmable MCU Clock
    – Idle Mode, Power-down Mode
    • Operating Conditions:
    – 3V, ±10%, 25 mA Typical Operating at 25°C
    – Temperature Range: -40°C to +85°C
    • Packages
    – TQFP80, BGA81, PLCC84 (Development Board)
    – Dice
    Et celui de mon eeprom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Features
    • Single supply with operation down to 1.8V
    • Low-power CMOS technology
    - 1 mA active current typical
    - 1μA standby current typical (I-temp)
    • Organized as 4 blocks of 256 bytes (4 x 256 x 8)2-wire serial interface bus, I2C™ compatible
    • Schmitt Trigger inputs for noise suppression
    • Output slope control to eliminate ground bounce
    • 100 kHz (<2.5V) and 400 kHz (2.5V) compatibility
    • Self-timed write cycle (including auto-erase)
    • Page write buffer for up to 16 bytes
    • 2 ms typical write cycle time for page write
    • Hardware write-protect for entire memory
    • Can be operated as a serial ROM
    • Factory programming (QTP) available
    • ESD protection > 4,000V
    • 1,000,000 erase/write cycles
    • Data retention > 200 years
    • 8-lead PDIP, SOIC, TSSOP and MSOP packages
    • 5-lead SOT-23 package
    • Standard and Pb-free finishes available
    • Available for extended temperature ranges:
    - Industrial (I): -40°C to +85°C
    - Automotive (E): -40°C to +125°C
    Merci Patrick pour ton aide.

    Merci.

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Aliveli
    Mode 'burst' en écriture ? Je ne sais pas ce que represente ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Features
    • Organized as 4 blocks of 256 bytes (4 x 256 x 8)
    • Self-timed write cycle (including auto-erase)
    • Page write buffer for up to 16 bytes
    Effectivement, ça n'apparait pas clairement, bien que l'organisation en blocs pourrait le laisser supposer (ou alors le mode 'buffer' de 16 octets).

    C'est un mode d'écriture prévu pour la programmation en 'rafale' (burst). On ouvre le mode rafale, et ensuite on écrit toujours à la même adresse (auto incrément) ou à des adresses consécutives. C'est en principe beaucoup plus rapide que le mode octet.


    Exemple :

    http://download.siliconexpert.com/pd...doc0976old.pdf

    § Page write

  10. #10
    Membre du Club
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Points : 58
    Points
    58
    Par défaut
    Merci Emmanuel,

    donc je le fait en mode octet tant que ça marche c'est bon.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 11/03/2014, 09h01
  2. [AC-2007] Copie d'un ou plusieurs enregistrements d'une table vers une autre
    Par facedeharicot dans le forum VBA Access
    Réponses: 7
    Dernier message: 22/08/2011, 08h34
  3. Copie du contenu de la work vers une autre librairie
    Par coco_chanel86 dans le forum SAS Base
    Réponses: 6
    Dernier message: 04/08/2010, 17h11
  4. Réponses: 8
    Dernier message: 01/09/2007, 07h28
  5. [VB.NET] Copie d'une table d'une DB vers une autre
    Par SergeF dans le forum Windows Forms
    Réponses: 9
    Dernier message: 20/11/2004, 09h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo