При включении питания все параметры обнуляются. В начале программы опрашиваются выводы порта В микроконтроллера, после чего АЦП считывает введенную константу для задержки включения. Последовательно выполняются подпрограммы задержки включения и выбора светового эффекта и светодиода, а затем происходит возврат в начало программы с обнулением параметров.
Работа АЦП микроконтроллера 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 | ||||||||||||||
Читайте также
Проектирование систем автоматизации электрических железных дорог
Последнее десятилетие характеризуется существенным
совершенствованием систем телемеханики и расширением областей их применения.
Это обусловлено новейшими достижениями микроэлектроники и ...
Нанотехнологии в науке и технике
В течение тысячелетий человек использовал в быту и технике
макроскопические тела, состоящие из большого числа атомов, будь это каменный
топор или авиалайнер. Первая научно- ...
Построение внутренней памяти процессорной системы, состоящей из ПЗУ и статического ОЗУ
Построить внутреннюю память процессорной системы, состоящую из ПЗУ и
статического ОЗУ. Процессорная система работает в реальном режиме.
Разрядность ША - 20, ШД - 8.
ИСХОДНЫЕ ДАННЫЕ: ...