logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak poprawnie zapisać i odczytać tablicę integer w EEPROM?

Ajatol 24 Maj 2004 01:20 1336 3
REKLAMA
  • #1 656495
    Ajatol
    Poziom 15  
    Posty: 259
    Pomógł: 1
    Ocena: 2
    Oto przykłądowy kod z tablicami integer w ram i eeprom. W ram nie ma problemu liczby integer zapisują i odczytują sie poprawnie. Niestety taka sama tablica w eeprom jóż nie działa poprawnie. Przy próbie odczytu dostaje wartość -1. Gdy używam w eeprom tablic bajtowych jest ok.
    Jak rozwiązać ten problem.


    $regfile = "8535def.dat"
    $crystal = 6000000
    Config Portb = Output
    Config Lcd = 20 * 2
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
    '-----------------------------------DEKLARACJA ZMIENNYCH------------------------------------------'
    Dim Ee(4) As Eram Integer 'Tablica w eeprom
    Dim Ram(4) As Integer
    Dim Licz As Integer 'Tablica w RAM
    Dim Zm As Integer
    Dim Dodaj As Integer

    '---------------------------------PROGRAM GŁÓWNY---------------------------------------------------
    '--------------------------------------------------------------------------------------------------
    '***************************************************************************************************
    '*************************************************
    ' Tu zapisanie liczbami integer tablicy w RAM
    Licz = 1
    Cls
    Do
    Dodaj = Licz + 1000
    Ram(licz) = Dodaj
    locate 1,1
    Lcd Licz
    Incr Licz
    Wait 1
    Loop Until Licz > 4
    Licz = 1
    Do
    Zm = Ram(licz)
    Locate 1 , 10
    Lcd Zm
    Incr Licz
    Wait 1

    Loop Until Licz > 4
    ' Tu zapisanie liczbami integer tablicy w EEPROM
    Licz = 1
    Cls
    Do
    Dodaj = Licz + 1000
    Writeeeprom Ee(licz) , Dodaj
    locate 1,1
    Lcd Licz
    Incr Licz
    Wait 1
    Loop Until Licz > 4
    Licz = 1
    Do
    Readeeprom Zm , Licz
    Locate 1 , 10
    Lcd Zm
    Incr Licz
    Wait 1

    Loop Until Licz > 4
    '--------------------------------------------------------
    Do
    Loop 'end program
  • REKLAMA
  • #2 656637
    diag
    Poziom 29  
    Posty: 1401
    Pomógł: 45
    Ocena: 209
    Może zbyt szybko chcesz odczytać liczbe z eeprom. Wydłuż czas od zapisu do odczytu. Zapisanie w eeprom najlepiej to 10mS.
  • REKLAMA
  • #3 656815
    euromatic
    Poziom 21  
    Posty: 422
    Pomógł: 17
    Ocena: 14
    Dim Ee(4) As Eram Integer At 1<<< tak zadeklaruj


    i zastąp tym kodem twój kod>>>>
    ' Tu zapisanie liczbami integer tablicy w EEPROM
    Licz = 1
    Cls
    Do
    Dodaj = Licz + 1000
    Ee(licz) = Dodaj
    Locate 1 , 1
    Lcd Licz
    Incr Licz
    Wait 1
    Loop Until Licz => 4
    Licz = 1
    Do
    Zm = Ee(licz)
    Locate 1 , 10
    Lcd Zm
    Incr Licz
    Wait 1

    Loop Until Licz => 4
    '--------------------------------------------------------


    może powiecie , że to dziwne , ale ja nie używam funkcji readeprom ani writeeprom!!!
    stosuję znak "=" i to wszystko............to działa...
  • #4 656821
    euromatic
    Poziom 21  
    Posty: 422
    Pomógł: 17
    Ocena: 14
    diag napisał:
    Może zbyt szybko chcesz odczytać liczbe z eeprom. Wydłuż czas od zapisu do odczytu. Zapisanie w eeprom najlepiej to 10mS.


    Gdybyś przeanalizował kod programu to zobaczyłbyś , że program czeka ponad 1 sekundę po zapisie do eepromu.
    Pozdrawiam
REKLAMA