Aktykuły które nie zmieściły się w żadnej kategorii

0102 /03
04Obsługa pamięci EEPROM w procesorach Atmel

Poniższe dane w trakcie kompilacji wygenerują pliki które należy wgraniać do procesora.
Jeżeli wgrywamy plik o rozszerzeniu *.elf dane do pamięci eeprom zostaną wgrane
automacznie, natomiast przy wgrywaniu danych do procesora przez plik *.hex musimy
jeszcze wgrać osobno plik o rozszerzeniu *.eep.

Stworzone poniżej dane stanowią fragment większego programu i przechowują dane
startowe dla całego programu.
06
070809

Deklarcja zmiennych
  1. uint8_t eeHEast EEMEM = 07; // godzina wschodu
  2. uint8_t eeMEast EEMEM = 30;
  3. uint8_t eeSEast EEMEM = 00;
  4. uint8_t eeHWest EEMEM = 20; // godzina zachodu
  5. uint8_t eeMWest EEMEM = 00;
  6. uint8_t eeSWest EEMEM = 00;
  7. uint8_t eeHTimSw EEMEM = 00; // czas trwania wchodu / zachodu
  8. uint8_t eeMTimSw EEMEM = 10;
  9. uint8_t eeSTimSw EEMEM = 00;
  10. uint8_t eem2x16 EEMEM = 0; // typ wyświetlacz 2x16 or 4x20
  11. uint8_t eembeep EEMEM = 1; // czy ma być dzwięk
  12. uint8_t eemled EEMEM = 1; // czy mają świecić ledy.
  13. uint8_t eemterminal EEMEM = 0; // czy mają świecić ledy.
  14. uint8_t eemdatetemp EEMEM = 0; // czy mają świecić ledy.
  15. uint8_t eemLcdOffTime EEMEM = 1; // po 5 minutach wyłącz podświetlenie 0=świecenie
  16.                                  // bez ograniaczenia
  17. uint8_t eemLcdOffMax EEMEM = 100; // maksymalne ustawienie to 100 minut
Odczytywanie danych z eepromu
  1. uint8_t h; uint8_t m; uint8_t s; 
  2. h = eeprom_read_byte(&eeHTimSw);
  3. m = eeprom_read_byte(&eeMTimSw);
  4. s = eeprom_read_byte(&eeSTimSw);
Zapisywanie danych do eepromu
  1. eeprom_write_byte(&eeSEast, s);
  2. eeprom_write_byte(&eeMEast, m);
  3. eeprom_write_byte(&eeHEast, h);

Dostęp do pamięci następuje przez bibliotekę #include <avr/eeprom.h> , przez rzutowanie adresu, dlatego używany znaku & przed nazwą zmiennej a w zasadzie adresem w pamięci eeprom.


Dasej (C) 2019 : 4574