Робота з зовнішньої EEPROM в Bascom-AVR на прикладі 24lc08
У номенклатурі Microchip серії 24LC числове значення після літерного індексу позначає обсяг пам'яті в кілобітах. Так, піддослідна мікросхема 24LC08 має на борту 8 кілобіт простору під зберігання даних (або 1 кілобайт).
Дана мікросхема випускається в різних корпусах: DIP, SOIC, TSOP, DFN. Для кожного восьміногового типу корпусу зберігається терморегулятори контактів.
Таке ж розташування контактів мають мікросхеми старших моделей, тому вони запросто можуть бути замінені у разі нестачі ресурсів, без зміни типології плати.
Призначення висновків мікросхеми дивимося нижче:
SCL - лінія тактових імпульсів
WP - захист від запису. Якщо на даний висновок подано логічний 0, то запис в пам'ять дозволена. Якщо подати логічну одиницю, то можливо тільки читання з пам'яті.
Vcc - харчування мікросхеми. Напруга може бути в межах від 2.5 вольта до 5.5 вольта.
До микроконтроллеру мікросхема підключаються дотримуючись традицій протоколу I2C, тобто сигнальні лінії підтягуються до шини харчування через резистори номіналом 4,7к. Невикористані висновки A0, A1, A2 можна посадити на землю (IC1 в прикладі Attiny2313)
Для запису в мікросхему одного байта, потрібно виконати наступну послідовність дій:
$ Regfile = "2313def.dat"
$ Crystal = 1000000
'Конфігуруємо scl і sda Піни
Config Sda = Portb. 7 'I2C Data
Config Scl = Portb. 6 'I2C Clock
$ Regfile = "2313def.dat"
$ Crystal = 1000000
'Конфігуруємо scl і sda Піни
Config Sda = Portb. 7 'I2C Data
Config Scl = Portb. 6 'I2C Clock
I2cwbyte HF0 'відправляємо 1 байт
I2cwbyte HF1 'відправляємо 2 байт
I2cwbyte HF2 'відправляємо 3 байт
I2cwbyte HF3 'відправляємо 4 байт
I2cwbyte HF4 'відправляємо 5 байт
I2cwbyte HF5 'відправляємо 6 байт
I2cwbyte HF6 'відправляємо 7 байт
I2cwbyte HF7 'відправляємо 8 байт
I2cwbyte HF8 'відправляємо 9 байт
I2cwbyte HF9 'відправляємо 10 байт
I2cwbyte HFA 'відправляємо 11 байт
I2cwbyte HFB 'відправляємо 12 байт
I2cwbyte HFC 'відправляємо 13 байт
I2cwbyte HFD 'відправляємо 14 байт
I2cwbyte HFE 'відправляємо 15 байт
I2cwbyte HFF 'відправляємо 16 байт
I2cstop 'зупиняємо роботу i2c
Тут записується вся перша сторінка числами від 240 (в шістнадцятковій системі F0) до 255 (FF).
Тепер розберемо як прочитати записані в мікросхему дані. Для читання одного байта потрібно виконати наступне:
Читання першого осередку першого блоку буде виглядати так:
$ Regfile = "2313def.dat"
$ Crystal = 1000000
'Конфігуруємо scl і sda Піни
Config Sda = Portb. 7 'I2C Data
Config Scl = Portb. 6 'I2C Clock
'Робота з мікросхемою
А тепер практичний приклад. До микроконтроллеру підключений датчик температури ds18b20, на дисплей виводиться поточна температура і значення температури, яке було записано в пам'ять мікросхеми 24LC08. Запис температури в пам'ять мікросхеми відбувається при натисканні на кнопку PB2, зчитування і висновок записаного значення відбувається при натисканні на кнопку PB1.
За документації у серії 24lc гарантовано 1 мільйон циклів запису / стирання. Є серія 25lc, там уже 10 мілііони циклів.
Доброго вам дня.
А який ресурс цих мікросхем пам'яті.
Роблю девайс, який повинен кожну хвилину запам'ятовувати час в незалежній пам'яті (якийсь логгер) на випадок зникнення живлення. Девайс працює за схемою 24/7. Використання незалежної пам'яті мікроконтролера - не варіант, як я розумію, швидко спрацюється. А як довго протягне 24LCXX?