Ревич, Ю.В. Программирование микроконтроллеров 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, ни его прерывания из режима энергосбережения контроллер вывести не может. Но есть несколько методов, по зволяющих «разбудить» контроллер по такому случаю.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==