получения высокой точности оцифров-
ки необходимо вначале запретить все
прерывания, кроме прерывания готов-
ности АЦП, затем установить в регист-
ре MCUCR режим “01”, а затем выпол-
нить команду sleep (не забыв предва-
рительно установить бит 5 в регистре
MCUCR), при этом автоматически за-
пустится АЦП. Такая последователь-
ность работы гарантирует минималь-
ное влияние шумов процессора на точ-
ность оцифровки.
Биты 1 и 0 регистра MCUCR управ-
ляют моментом появления внешнего
прерывания от линии порта В[2], а
именно:
- комбинация “00” - прерывание по-
является при сигнале лог.О на линии
В[2];
- комбинация “01” - прерывание по-
является при любом изменении сигна-
ла на линии В[2];
- комбинация “10" - прерывание по-
является при переходе сигнала В[2] с
лог.1 на лог.О;'
- комбинация “11” - прерывание по-
является при переходе сигнала В[2] с
лог.О на лог.1.
Назначение этих битов в некоторой
степени соответствует подрегистрам 6
и 7 управляющего регистра портов мик-
роконтроллера КР1878ВЕ1.
Регистр состояния микроконтролле-
ра MCUSR указывает причину, по ко-
торой был запущен (или перезапущен)
микроконтроллер:
- бит 3 - микроконтроллер был пе-
резапущен сигналом переполнения
сторожевого таймера;
- бит 2 - микроконтроллер был пе-
резапущен из-за “просадки” питания;
- бит 1 - микроконтроллер был пе-
резапущен сигналом сброса;
- бит 0 - микроконтроллер был толь-
ко что включен.
Остальные биты регистра не ис-
пользуются и должны быть равны
лог.О. Бит 3 - как раз та самая тон-
кость, о которой было упомянуто при
утверждении о маски руемости всех
прерываний
микроконтроллера
ATTiny. Немаскируемые прерывания
в микроконтроллере АТПпу вызыва-
ют один и тот же эффект - сброс
микроконтроллера в начальное со-
стояние: отдельных векторов преры-
ваний, как это было в КР1878ВЕ1,
для них не предусмотрено. Причину,
МИКРОКОНТРОЛЛЕРЫ
I
Таблица
3. Режимы работы линий порта
В
PORTB[iJ
DDRB[i]
Результат
0
0
Входная линия ВЩ без подтягивающих резисторов
1
0
'
Входная линия В[|] с подтягивающими резисторами
0
1
Выходная линия В[Ц, активный выход, сигнал = 0
1
1
Выходная линия ВО], активный выход, сигнал = 1
по которой микроконтроллер был сбро-
шен, и можно установить, анализируя
регистр MCUSR. Делать его анализ не-
обходимо как можно быстрее (жела-
тельно в самом начале программы), в
противном случае может возникнуть
новая причина для перезапуска микро-
контроллера, и информация о прежней
причине будет потеряна. Бит 2 устанав-
ливается, если напряжение питания
микроконтроллера находилось ниже
определенного значения в течение ука-
занного промежутка времени (обычно
от 3 до 7 микросекунд). Величина про-
садки задается значениями битов-пре-
дохранителей. Различия между битами
1 и 0 заключается в том, что бит 0 уста-
навливается, если микроконтроллер
был только что включен, а бит 1 - если
был выполнен сброс включенного мик-
роконтроллера без отключения пита-
ния. После анализа битов регистра
MCUSR все их обязательно следует
сбросить в лог.О. В подавляющем боль-
шинстве случаев анализа этого регис-
тра в программе не требуется.
И, наконец, последний регистр -
OSCCAL. Это как раз тот самый ре-
гистр, в который нужно записать зна-
чение калибровочного байта данного
экземпляра микроконтроллера, если
нам требуется высокая точность часто-
ты задающего генератора. Если этого
не требуется, регистр OSCCAL можно
не использовать.
Регистры порта В
Порты всех микроконтроллеров
ATMEL управляются тремя регистрами:
- регистром данных порта (их назва-
ния начинаются с PORTx);
- регистром направления передачи
данных порта (DDRx);
- регистром входных линий порта
(PINx).
В микроконтроллере ATTiny та-
ких регистров три - PORTB, DDRB и
PINB. В обычном режиме порт В со-
держит всего 5 линий (как порт А
микроконтроллера КР1878ВЕ1), но,
указанием соответствующих битов-
предохранителей, входную линию
сброса RESET можно использовать в
качестве шестой, дополнительной ли-
нии порта В - В[5]. Линия эта может
быть использована как входная линия
без “подтягивающего” резистора, либо
как выходная линия с открытым сто-
ком. Нагрузочная способность линии
В[5] - до 12 мА, остальных линий пор-
та В - до 20 мА.
Регистр PINB обеспечивает доступ
непосредственно к линиям порта. Это
не набор триггеров, в которых хранит-
ся выведенная в порт информация, а
именно реальные сигналы на линиях.
В регистре PINB, как и в остальных ре-
гистрах порта, используются только
биты с 0 по 5. Соответствие между ли-
ниями порта и битами регистров - по-
зиционное.
Режим работы линий портов зада-
ется совместной комбинацией битов
в регистрах PORTB и DDRB (см. таб-
лицу 3).
К великому сожалению, в микрокон-
троллерах ATMEL нет средств для орга-
низации вывода информации в режи-
ме открытого стока (кроме линии В[5] в
АГПпу15), поэтому в тех приложениях,
где требуется двухсторонний обмен
информацией по линиям порта, прихо-
дится, в отличие от КР1878ВЕ1, актив-
но манипулировать регистрами PORTx
и DDRx. Микроконтроллер КР1878ВЕ1
в этом смысле намного удобнее - в
практике автора необходимость пере-
ключения режимов работы линий в про-
цессе работы программы возникала
всего один раз в весьма и весьма спе-
цифическом приложении. Работа же с
регистрами DDRx в микроконтроллерах
ATMEL требуется, что называется,
сплошь и рядом, т.е. организация пор-
тов ввода-вывода в них, на взгляд ав-
тора, менее гибкая, чем в КР1878ВЕ1.
сЩ
Окончание в N96/2007
Радиолюбитель - 0 5 /2 0 0 7 [|
43
предыдущая страница 43 Радиолюбитель 2007-05 читать онлайн следующая страница 45 Радиолюбитель 2007-05 читать онлайн Домой Выключить/включить текст