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
}
}
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
}
}