Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

360 Часть 111. Практическое программирование микроконтроллеров АVR ориентируемся , подразумевает трехчасовой цикл (8 измерений в сутки) , тогда памяти нам хватит на 1 024 суток, или почти на 3 года записей ! Как видите , даже объем памя­ ти в 32 кбайта в такой ситуации вполне приемлем . Мы можем поставить несколько микросхем параллельно и, не снижая максимального времени записи , дополнить кадр данных другими значениями , в том числе временем, когда производилась запись. Для того чтобы обращаться к такой памяти, стандартные процедуры записи и чте­ ния TWI : write_i2c и read_ i2c (см. файл 12C. prg) надо дополнить еще одной (в слу­ чае памяти до 256 килобит) или двумя (для памяти большей емкости) операциями посылки адреса памяти. Я приведу здесь без особых комментариев только подле­ жащие изменению фрагменты процедур (листинги 1 3 . 5 и 1 3 .6) . В обычных про­ цедурах у нас в YL хранился адрес устройства, а в УН - адрес регистра. Здесь адрес устройства задан, а в пару УН : YL загружается двухбайтовый адрес памяти емкостью до 256 килобит включительно. ; универсальная write i2c - было (см. файл I2C . prg ) : loopl 2 0 : push DATA rcall start cbr YL , l mov DATA, YL ; addr device , r/w=O rcall write brcs rt write ; C=l ERROR mov DATA, YH ; set register address rcall write brcs rt write ; C=l ERROR рор DATA ; set data to DATA rcall write ; запись в АТ2 4 write 12с EEPROM - стало : loopl2 0ew : push DATA rcall start ldi DATA, OxAO ; addr device=O , r/w=O rcall write brcs rt write ew ; C=l ERROR - - mov DATA, YH ; set HI addres s rcall write brcs rt write ew ; C=l ERROR mov DATA, YL ; set 10 addres s rcall write brcs rt write ew ; C=l ERROR рор DATA ; set data to DATA rcall write

RkJQdWJsaXNoZXIy MTExODQxMg==