Предыдущая Следующая

Микроконтроллерный генератор

199

Листинг 8.2, Окончание

1007700001DC01D301CA01C201B901B001A7019E88 100780000196018D0184017В0173016А01620159А7 1007900001510149014001380130012801200118AF 1007А00001100108010000F800F100E900E200DAA0 1007B000O0D3O0CC00C5O0BE0OB7003000A900A364 1007C000009C00960090008A0084007E00780072F1 1007D000006D00670062005D00580053004E004 944 1007Е00000450040003С003800340030002С002957 1007F00000250022001F001C001900160014001123 10080000000FOOODOOOB00090008000600050004A1 1008100000030002000100010000000000000000D1 1008200000000001000100020003000400050006В2 1008300000080009000BOOODOOOF00110014001645 100840000019001C001F00220025002 9002C003088 1008500000340038003С004000450049004Е005381 100860000058005D00620067006D00720078007E35 10087 0000084008A009000960 09COOA300A900BOAC 100880O000B700BE00C500CC00D30ODA0OE20OE9EA 1008900000F100F8010001080110011801200128F1 1008А0000130013801400149015101590162016AD9 1008В0000173017В0184018D0196019Е01А701ВОА6 1008C00001B901C201CA01D301DC01E501EE01F762 0208D000020024 00000001FF

Для работы программы назначаются переменные (в микроконтроллере tinyl 5 в выполнении арифметических действий могут принимать участие регистры с 16 по 31), а также определяется вектор прерывания, в котором используется только вектор RESET. Далее определяется конфигурация порта В (в микроконтроллере tinyl 5 имеет шесть выводов).

В начале цикла обязательно обнуляются переменные, а в его теле определяется количество переданных данных i, ограниченное числом 10 800. В шестнадцатеричном представлении i соответствует двухбайтное число 2A30h, поэтому используются две переменные: i и il.

Нам необходимо получить гармонический, периодический сигнал, поэтому все паузы между выводом периода сигнала и аналого-цифровым преобразованием должны быть компенсированы, а промежутки передачи коэффициентов сигнала в ЦАП — быть равными независимо от действий программы. Исходя из этого правила, для ветви программы без АЦП формируется обычная задержка, а для ветви с АЦП — укороченная задержка.

В процессе аналого-цифрового преобразования двоичное число Z вычисляется по уравнению Z = 1 024 * Ubx / Uref [16]. Крмое того, пре-

200

Глава 8

образование выполняется несколько раз, а результат вычисляется как среднее арифметическое считанных данных. Следует отметить, что столбец градусов в табл. 8.1 начинается с 0 и заканчивается 360, а это значит, что мы работаем с 361 числом, представленным в двухбайтном виде. По этой причине в конце программы в таблице progl в строках записано по четыре цифры, каждая из которых представлена двумя байтами.

Алгоритм вывода цифр в ЦАП несовершенный, поскольку существует вероятность, что микроконтроллер собьется со счета, и тогда данные будут выводиться хаотически. В конце программы обязательно проводится проверка числа градусов, выведенных в ЦАП. Если в ЦАП выведено 360 данных, то S = 0. В шестнадцатеричном представлении 360 градусов S = 168h.


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book8_80.html on line 116

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book8_80.html on line 116

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book8_80.html on line 116