При включении питания все параметры обнуляются. В начале программы опрашиваются выводы порта В микроконтроллера, после чего АЦП считывает введенную константу для задержки включения. Последовательно выполняются подпрограммы задержки включения и выбора светового эффекта и светодиода, а затем происходит возврат в начало программы с обнулением параметров.
Работа АЦП микроконтроллера ATtiny12 отличается от правил, установленных более развитых моделей семейства AVR. На первом этапе необходимо выполнить коммутацию аналогового входа АЦП с помощью встроенного аналогового мультиплексора. Для этого в разрядах 0-2 регистра ADMUX устанавливается соответствующая комбинация нулей и единиц. Кроме того, необходимо установить источник опорного напряжения с помощью разрядов 6и 7 регистра ADMUX.
На втором этапе с помощью разрядов 0-2 регистра ADCSR задается тактовая частота АЦП путем деления тактовой частоты микроконтроллера. Затем разрешается работа АЦП, выбирается режим его работы.
(в данном случае - одиночное преобразование), и активизируется преобразование.
По завершении преобразования, которое длится 25 тактов АЦП, данные записываются в регистры ADCL и ADCH. Чтение этих регистров выполняют в строгой последовательности: вначале ADCL, затем ADCH.
В таком виде считывания данных АЦП программа работает нестабильно из-за наводок и шумов от питающей сети (переключение светодиодов происходит хаотически, с разной скоростью). Во время чтения АЦП автор не использовал «спящего» режима, поскольку эксперименты показали, что это необязательно.
Подпрограмма задержки выполнена в виде трех вложенных циклов (их количество определяется числом, считанным из АЦП). На данном этапе можно изменить программу и использовать встроенный в микроконтроллер таймер
При этом работа АЦП будет более наглядно проявляться паузами между моментами включения светодиодов (в представленной программе не реализовано).
Подпрограмма опроса реализована с применением команды загрузки данных из памяти программ LPM. При этом данные сохраняются в регистре R0. Считанные данные поступают в порт В на выводы PB0-PB3. Двоичный код с порта В микроконтроллера поступает на двоично-десятичный дешифратор VI. Он преобразует двоичный код в единичный сигнал (активный уровень - нулевой) на одном из выводов.
Первый световой эффект - бегущая единица, второй - поочередное мигание светодиодов по кругу, третий - чередующееся последовательное мерцание с реверсом по одному (таблица 2). [8]
В памяти программ микроконтроллера осталось еще много свободного места, поэтому можно придумать дополнительные световые эффекты.
Таблица 2 - Порядок размещения светодиодов по часовой стрелке
Светодиоды |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
Порт В, двоичный код |
Шестна-дцатерич-ные коды прошивки порта В | |||||||||||||||
Программа |
Шаг | ||||||||||||||||||||||||||
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0010 |
02 | ||||||||||||||
1 |
2 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1000 |
08 | ||||||||||||||
1 |
3 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0111 |
07 | ||||||||||||||
1 |
4 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0110 |
06 | ||||||||||||||
1 |
5 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0011 |
03 | ||||||||||||||
1 |
6 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0001 |
01 | ||||||||||||||
1 |
7 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0000 |
00 | ||||||||||||||
1 |
8 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0101 |
05 | ||||||||||||||
1 |
9 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0100 |
04 | ||||||||||||||
1 |
10 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1001 |
09 | ||||||||||||||
2 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1000 |
08 | ||||||||||||||
2 |
2 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0100 |
04 | ||||||||||||||
2 |
3 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0111 |
07 | ||||||||||||||
2 |
4 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0101 |
05 | ||||||||||||||
2 |
5 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0110 |
06 | ||||||||||||||
2 |
6 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0000 |
00 | ||||||||||||||
2 |
7 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0011 |
03 | ||||||||||||||
2 |
8 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0001 |
01 | ||||||||||||||
2 |
9 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0110 |
06 | ||||||||||||||
2 |
10 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0000 |
00 | ||||||||||||||
2 |
11 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0111 |
07 | ||||||||||||||
2 |
12 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0101 |
05 | ||||||||||||||
2 |
13 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1000 |
08 | ||||||||||||||
2 |
14 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0100 |
04 | ||||||||||||||
2 |
15 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0010 |
02 | ||||||||||||||
2 |
16 |
1 |
0 |
о |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1001 |
09 | ||||||||||||||
3 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0010 |
02 | ||||||||||||||
3 |
2 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0100 |
04 | ||||||||||||||
3 |
3 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1001 |
09 | ||||||||||||||
3 |
4 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0101 |
05 | ||||||||||||||
3 |
5 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0100 |
04 | ||||||||||||||
3 |
6 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0000 |
00 | ||||||||||||||
3 |
7 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0101 |
05 | ||||||||||||||
3 |
8 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0001 |
01 | ||||||||||||||
3 |
9 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0000 |
00 | ||||||||||||||
3 |
10 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0011 |
03 | ||||||||||||||
3 |
11 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0001 |
01 | ||||||||||||||
3 |
12 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0110 |
06 | ||||||||||||||
3 |
13 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0011 |
03 | ||||||||||||||
3 |
14 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0111 |
07 | ||||||||||||||
3 |
15 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0110 |
06 | ||||||||||||||
3 |
16 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1000 |
08 | ||||||||||||||
3 |
17 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0111 |
07 | ||||||||||||||
3 |
18 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0010 |
02 | ||||||||||||||
Читайте также
Приемник многоканальной линии связи
Любое радиоприемное устройство включает в себя приемную антенну,
радиоприемник и оконечное устройство, служащее для воспроизведения сигналов.
Существует классификация радиоприемник ...
Проект внутризоновой ВОЛП на участке Новосибирск—Карасук
Научно-технический
прогресс во многом определяется скоростью передачи информации и ее объемом.
Возможность резкого увеличения объемов передаваемой информации наиболее полно
реализуется ...
Применение пространственной фильтрации для улучшения радиоголографических изображений объектов, находящихся за препятствиями
В настоящее время активно развивается раздел науки, посвященный
радиовидению. Это связано с тем, что радиовидение может найти свое применение в
широкой сфере деятельности человека для об ...