Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 13. Интерфейс ТW/ (/2С) и его применение 349 ЗАМЕТКИ НА ПОЛЯХ В рассматриваемых далее программах процедуры , приведенные в файле i2c.prg (и ад ресное чтение/запись read_i2c/write_i2c , и просто чтение/отсылка байта read/write) , сопровождаются командой ьrсс для проверки состояния бита с в регистре флагов SREG с отсылкой на процедуру индикации ошибки , если этот флаг в результате опера ции оказался установленным неправильно. Отметим , что такая проверка для выпол нения протокола 12С необязательна, а в случаях, когда сообщение об ошибке отсы лать некуда , и вовсе оказывается лишней. В большинстве рассматриваемых далее программ эта проверка сохранена по формальным причинам, но может быть удалена без ущерба для функциональности процедур, подобно тому, как это сделано в случае инициализации дисплея МТ- 1 0Т1 1 (о чем рассказано далее) . Ч асы с интерфейсом 1 2С Моделей часов реального времени (Real Time Clock, RTC) существует множество. Все пользователи ПК с ними знакомы заочно - именно микросхема RTC питается от резервной батарейки, находящейся на любой материнской плате. Такие часы, кроме собственно функций счета времени и календаря, имеют небольшую встроен ную SRAM, в которой записаны установки ВIOS. Хранить их именно в энергозави симой памяти удобно, т. к. часы реального времени все равно требуются, а в случае чего установки легко сбросить в исходное состояние, просто лишив микросхему питания (или замкнув специальные контакты). Встроенную SRAM имеют не все такие микросхемы, но в остальном RTC внутри устроены примерно одинаково: ведут счет времени и календарь, имеют функции будильника и/или таймера, обязательную возможность автономной работы от бата рейки в течение длительного времени. Такие часы обычно снабжают кварцем на 32 768 Гц, иногда даже встроенным в микросхему. Кроме этого, значительная часть моделей имеет дополнительный выход (иногда и не один), на котором формируется некая частота, задаваемая программно. Этот выход можно использовать для управ ления прерыванием микроконтроллера, и таким образом организовать счет времени и его индикацию. Еще одна особенность микросхем RTC - единицы времени в них традиционно представлены в десятичном виде (в упакованном ВСD-формате) . Именно так вы дают значения времени RTC, встроенные в ПК. Например, число минут, равное 59, так и выдается - как байт со значением 5 9, но, как уже мы говорили (см. гла ву 8) - это не Ох5 9, что в десятичной системе будет равно 8 9, а именно 59 в при вычной нам десятичной записи . ВСD-представление удобно для непосредственной индикации, но при арифметических операциях (или, например, при сравнении) его приходится преобразовывать к обычному двоичному виду. На самом деле это поч ти не доставляет неудобств, скорее наоборот. Для наших целей выберем простейшую модель RTC под названием DS 1 307 . Я с 1 990-х годов пользовался этой микросхемой и, познакомившись с Arduino, с удивлением узнал, что там она тоже принята за базовую, - мне казалось, что можно было бы подыскать посовременней. Однако функциональности DS I 307 вполне хватает, а придумать что-либо новое трудно, потому ее используют до сих
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==