Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

ST7lite29 zapis i odczyt EEPROM w C.

obi one kenobi 09 Jan 2012 17:49 576 0
  • #1
    obi one kenobi
    Level 12  
    Witam.

    Piszę program na ST7lite29 w C i potrzebuję funkcji, która zapisze bajt danych podany jako pierwszy parametr w pamięci EEPROM pod adresem podanym jako drugi parametr, oraz funkcji, która odczyta bajt danych z adresu EEPROM podanego jako parametr i zwróci go do programu głównego.



    Pozdrawiam.

    P.S. Znalazłem na EP podobne funkcje, ale nie wiem, jak je przerobić na swoje potrzeby, czyli zapis jednego bajtu pod wskazany adres i odczyt bajtu spod wskazanego adresu i zwrócenie tego bajtu...

    void WriteVoltsToEEPROM(void)
    {i
    f(eeIndex < EE_SIZE) //
    {
    EECSR = 2; // ustawiamy bit E2LAT –> zapis
    *((unsigned int *)(EE_BASE + (eeIndex*2))) = volts; // zapis do buforów
    EECSR |= 1; // ustawiamy bit E2PGM –> wyzwolenie operacji zapisu
    while((EECSR & 1)!=0); // oczekiwanie za zakończenie procesu zapisu
    Beep(1); // sygnalizacja zapisu
    eeIndex++; // następna pozycja
    readIndex = eeIndex; // przygotowanie do odczytu
    }
    else
    {
    eeIndex = 0;// ustawienie pzycji na dolną granicę obszaru pamięci EEPROM
    Beep(2); // sygnalizacja osiągnięcia granicy obszaru
    }
    }


    void ReadVoltsFromEEPROM(void)
    {u
    nsigned char i;
    readIndex––; // poprzednio zapamiętany pomiar
    if(readIndex < 0) // jeśli przekroczono dolną granicę obszaru pamięci EEPROM
    {
    readIndex = EE_SIZE; // ustawienie pozycji na górną granicę obszaru
    Beep(2); // sygnalizacja osiągnięcia granicy obszaru
    }
    else // w przeciwnym razie
    {
    EECSR = 0; // zerowanie bitu E2LAT –> odczyt
    volts = *((unsigned int *)(EE_BASE + ((readIndex)*2))); // odczyt z pamięci
    LCD_GoTo(0,0); // ustawienie współrzędnych
    DisplayVolts(volts); // wyświetlenie odczytnej wartości napięcia
    LCD_GoTo(12,0); // ustawienie współrzędnych
    LCD_WriteText(„M>”);
    DisplayPosition(readIndex); // wyświetlenie numeru pozycji w pamięci
    Beep(1); // sygnalizacja odczytu
    }
    }