Różnice w funkcjach zapisu danych w wewnętrznej pamięci EEPROM mikrokontrolerów AT89S8252 i T89C51RD2


http://www.easy-soft.tsnet.pl/
Ten artykuł w zamiarze ma być krótki i zawierać same konkrety. Myślę, że uda się to osiągnąć.
Przecież  mądrej głowie dość po słowie , a więc do dzieła!
Różnice w funkcjach zapisu
danych w wewnętrznej pamięci EEPROM
mikrokontrolerów AT89S8252 i T89C51RD2,
Czasami zaczyna brakować pamięci na stale puchnący wraz z wymaganiami klienta, który już nauczył
się, że można od mikrokontrolera oczekiwać czegoś więcej, program i zaczynamy się rozglądać za
alternatywnymi mikrokontrolerami. Czasami również konieczne jest zwiększenie szybkości
wykonywania programu. Tak było i w moim przypadku: stanąłem przed obiema tymi kwestiami
jednocześnie. Używałem AT89S8252 i kod wynikowy programu przekroczył rozmiar pamięci FLASH.
Potrzebowałem mikrokontrolera o większej ilości pamięci lub zewnętrznej pamięci programu.
Potrzebowałem również większej szybkości CPU, ponieważ niebezpiecznie rozrosły się funkcje
realizowane w obsłudze przerwania jednego z Timer ów. Mój wybór padł na P89C51RD2, gdyż
wiedziałem od kolegi, że model RD2 posiada 2kB wewnętrznej pamięci EEPROM (której to bardzo
potrzebowałem do przechowywania danych), 6-taktową jednostkę CPU oraz 64kB na program.
Niestety, podczas zakupu nie uwzględniłem jednego, oczywistego faktu: kolega mówił o TEMIC u a ja
kupiłem PHILIPS a. Przecież RD2 to RD2! Okazało się, że są pomiędzy nimi różnice i że polegają one
na przykład na nieobecności pamięci EEPROM w produkcie firmy PHILIPS.
Oba mikrokontrolery posiadają możliwość zapisu własnej pamięci programu, ale to nie jest to samo.
Podstawowa różnica to ilość cykli zapisu: FLASH przeznaczony na kod programu można zapisać
około 1000 razy a EEPROM 100 tysięcy razy. Jest to istotna różnica, jeśli przechowywane dane
często ulegają zmianie. Ponadto aby zapisać pamięć programu trzeba posługiwać się funkcjami
bootlader a i zapisywać dane blokami. Nie jest to zbyt wygodne przy konstrukcji prostej, małej bazy
danych bez bufora i systemu plików.
Dla odmiany przeniesienie programu z AT89S8252 do T89C51RD2 a następnie do AT89C51RD2
odbyło się  bezboleśnie . Oprócz drobiazgów związanych z nastawami rejestrów konfiguracyjnych,
jedyna, najważniejsza różnica, polegała na obsłudze zapisu i odczytu danych w wewnętrznej pamięci
EEPROM. RD2 TEMIC a czy ATMEL a posiada jej tyle samo, co AT89S8252, czyli 2kB. Funkcje
obsługi pamięci EEPROM, wraz z przykładami ich wykorzystania w języku C, prezentują poniższe
listingi. Dosyć jest dodać, że sprawują się bez zarzutu. Resztę pozostawiam do analizy Czytelnikowi.
//*************************************
// AT89S8252, obsługa pamięci EEPROM
//*************************************
pdata char * ee2addr = 0; //wskaznik do pamięci eeprom
;Odczyt bajtu danych z pamięci EEPROM,16-bitowy adres w ADDRESS
char EE_GetByte(unsigned int ADDRESS)
{
char B;
WMCON |= 0x08; //załączenie trybu odczytu eeprom
B = *(ee2addr+ADDRESS); //odczyt bajtu
WMCON &= 0xE7; //wyłączenie pamięci eeprom
return (B);
}
;Zapamiętanie bajtu danych w pamięci EEPROM,16-bitowy adres w ADDRESS, bajt w X
void EE_StoreByte(char B, unsigned int ADDRESS)
{
WMCON |= 0x18; //włączenie trybu zapisu
*(ee2addr + ADDRESS) = B; //zapis bajtu
while (WMCON & 0x02); //testowanie stanu zajętości
WMCON &= 0xE7; //wyłączenie eeprom
}
Listing 1. Podstawowe funkcje obsługi pamięci EEPROM mikrokontrolera AT89S8252.
J.Bogusz  Różnice w funkcjach zapisu danych w wewnętrznym EEPROM mikrokontrolerów S8252 i RD2
http://www.easy-soft.tsnet.pl/
//*************************************
// T89C51RD2, obsługa pamięci EEPROM
//*************************************
//odczyt bajtu z eeprom; adres bajtu w eeprom zawiera parametr ADDRESS
char EE_GetByte(unsigned int ADDRESS)
{
char B;
EECON = 0x02; //załączenie trybu odczytu eeprom
B = *(e2addr+ADDRESS);
EECON = EECON & 0xFD;
return (B);
}
//zapis bajtu do eeprom, bajt przekazywany w parametrze B, adres w ADDRESS
void EE_StoreByte(char B, WORD ADDRESS)
{
EETIM = 0xDC; //ustawienie czasu programowania (Vss=5V)
EECON = 0x02; //załączenie eeprom
*(e2addr+ADDRESS) = B; //zapis bajtu do bufora
EECON = 0x50; //zapis bajtu do eeprom
EECON = 0xA0;
while (EECON & 0x01); //testowanie flagi zajętości
}
Listing 2. Podstawowe funkcje obsługi pamięci EEPROM w T/AT89C51RD2
//odczyt statusu rekordu w eeprom; wartość "1" oznacza, że pozycja jest zajęta
bit EE_PosActive(unsigned int ADDRESS)
{
return (EE_GetByte(ADDRESS) != 0xFF);
}
//zapis COUNT bajtów obszaru pamięci RAM pod adres wskazywany przez argument
//ADDRESS w eeprom
void EE_SaveBUF(unsigned int ADDRESS, char COUNT)
{
data char *ptrb = (data char*)(&BUF);
char i;
for (i=0; i < COUNT; i++) EE_StoreByte(*ptrb++, ADDRESS++);
}
//przepisanie COUNT bajtów z pamięci EEPROM do RAM spod adresu ADDRESS
void EE_ReadBUF(WORD ADDRESS, char COUNT)
{
data char *ptrb = (data char*)(&BUF);
char i;
for (i=0; i < COUNT; i++) *ptrb++ = EE_GetByte(ADDRESS++);
}
Listing 3. Przykłady użycia funkcji zapisu / odczytu pamięci EEPROM.
Jacek Bogusz
jacek.bogusz@easy-soft.tsnet.pl
J.Bogusz  Różnice w funkcjach zapisu danych w wewnętrznym EEPROM mikrokontrolerów S8252 i RD2


Wyszukiwarka

Podobne podstrony:
,analiza matematyczna 1, rachunek różniczkowy funkcji jednej zmiennej
Rachunek różniczkowy funkcji wielu zmiennych
Rachunek rozniczkowy funkcji dwoch zmiennych
Pamięci EEPROM w systemach mikroprocesorowych
W16 Różniczkowanie funkcji
Analiza Matematyczna Rachunek Różniczkowy Funkcji Jednej Zmiennej 02
Konspekt wykładu r różniczkowy funkcji jednej zmiennej(1)
Różniczka funkcji i wzór Taylora
Digital Image Recovery do odzyskiwania danych z kart pamięci fotograficznych
Rachunek rozniczkowy funkcji wielu zmiennych
Programator szeregowych pamieci EEPROM I2C sterowny z pakietu BASCOM
5 Rachunek różniczkowy funkcji jednej zmiennej
Analiza Matematyczna Rachunek Różniczkowy Funkcji Jednej Zmiennej 01
Rachunek różniczkowy funkcji 2 i 3 zmiennych
04 Rozdział 02 Różniczkowanie funkcji wielu zmiennych
Programator pamięci EEPROM z interfejsem szeregowym I2C
Pochodna i różniczka funkcji oraz jej zastosowanie do rachunku błędów pomiarowych K Rębilas

więcej podobnych podstron