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

Глава 15. Программирование UART и обмен данными с персональным компьютером 401 Про г ра мм а уст а новки ча со в DS1 307 Для иллюстрации приведенных ранее положений воспользуемся давно обещанной программой установки часов DS 1 307 (файл rtc1 307_set . asm из архива, расположен­ ного по адресу, указанному во введении) . Она специально ориентирована на ис­ пользование монитора порта Arduino, приспособленного к текстовому выводу и вводу. Прерывания UART в ней не используются, т. к. программа, кроме установки часов, больше ничего не делает. После включения программы контроллер с подключенными часами (см. рис. 1 3 .3 в главе 13) и адаптером USB-UART (по обеим линиям RxD и TxD) ожидает вашей команды. Получив от монитора порта символ R в качестве команды, программа на­ чинает выдавать каждую секунду строку значений времени и даты в том порядке, в каком они хранятся в регистрах часов : Секунды, Минуты, Часы, День недели, Дата, Месяц, Год. Остановить вывод можно, подав в качестве команды символ т (английский). Чтобы установить часы, необходимо сначала сформировать строку установочных значений, предварив ее командой s. Все значения вводятся в том же порядке, начи­ ная с минут (секунды будут автоматически установлены на 00), через пробел, еди­ ничная цифра дополняется ведущим нулем. День недели будем вводить по россий­ ско-европейскому стандарту из диапазона от 0 1 (понедельник) до 07 (воскресенье). Например, такая строка: s 23 1 9 03 10 04 1 9 установит часы на 1 0 .04 . 1 9, среда (03 день недели), время 1 9 :23 . Для установки удобно использовать часы Windows, предварительно уточнив их показания через Интернет. Строку следует сформировать заранее на минуту-другую раньше указан­ ного в ней времени и отправить ее нажатием клавиши <Enter> в момент, когда секундная стрелка на часах Windows дойдет до начала указанной минуты. Вместе с установкой всего времени секунды сбросятся в нулевое значение, и часы пойдут с начала установленной минуты. Как с помощью UART организовать выход из режима э нергосбережения? Есть приборы, в которых контроллер основное время проводит в режиме «сна>>, лишь изредка отвлекаясь на проведение измерений и запись результатов куда­ нибудь во внешнюю память. Но мы хотим работу этих приборов контролировать, настраивать их, считывать накопленные показания и т. д. , причем делать это в про­ извольный момент времени . Встает вопрос о том, как вывести контроллер из режи­ ма «сна>> при подключении к UART, например, компьютера через какой-либо адап­ тер? Ни сам по себе последовательный порт UART, ни его прерывания из режима энергосбережения контроллер вывести не может. Но есть несколько методов, по­ зволяющих «разбудить» контроллер по такому случаю.

RkJQdWJsaXNoZXIy MTExODQxMg==