i
МИКРОКОНТРОЛЛЕРЫ
l
|
В данной статье речь пойдет о ряде сп е ц и ф и чн ы х проблем, ко то р ы е
Александр Черномырдин
>
в о зн и ка ю т к а к п р и п а р а л л е л ь н о й р а б о те отд ельны х б л о ко в м и к -
г. М агнитогорск
р о ко н т р о л л е р а , т а к и п а р а л л е л ь н о й р а б о те м и кр о ко н тр о л л е р а и
E-mail:
д р у ги х ко м п о н е н т о в к о н с т р у кц и и .
В о п р о с ы
п а р а л л е л ь н о г о п р о г р а м м и р о в а н и я
м и к р о к о н т р о л л е р о в
“Не умножай сущностей сверх необходимого”.
У. Оккам.
>
КОНВЕЙЕР КО М АН Д
>
ОЧЕРЕДЬ СО О БЩ ЕН ИЙ
>
РАБОТА С РА ЗДЕЛЯ ЕМ Ы М И РЕСУРСАМ И
>
ТЕХНИКА “ДВ О Й Н О ГО ЧТЕНИЯ”
Данная статья цикла будет заметно отличаться от ос-
тальных - в первую очередь потому, что в ней будут
рассмотрены вопросы, с которыми многим радиолю-
бителям, возможно, сталкиваться не придется. Тем не
менее, автор считает нужным эти вопросы рассмот-
реть (хотя бы самым кратким образом) - как из-за того,
что они практически не отражены в литературе, так и
из-за того, что описанные проблемы являются источ-
ником очень тонких и трудноуловимых ошибок, из-за
которых радиолюбитель нередко бросает на полпути
разрабатываемую конструкцию, да еще и винит в этом
“кривые ручки” производителей микроконтроллеров
(особенно, разумеется, российских).
Дисциплина “Параллельное программирование” яв-
ляется одним из наиболее сложных разделов програм-
мирования. Предметом ее изучения является взаимо-
действие нескольких одновременно (или квазиоднов-
ременно) работающих процессов - как с ресурсами
системы, так и друг с другом. Традиционно считается,
что вопросы параллельного программирования не име-
ют никакого отношения к работе микроконтроллеров.
На взгляд автора, это очень серьезное заблуждение.
Первое, что необходимо отметить - в микроконт-
роллерах имеются таймеры. Таймер - это устройство,
которое работает параллельно и независимо от рабо-
ты процессора микроконтроллера. В какой момент тай-
мер закончит счет, какое именно значение в нем на-
ходится сейчас - неизвестно. Для того, чтобы это уз-
нать, необходимо останавливать таймер и считывать
его показания, а останавливая таймер, мы во многих
случаях нарушаем тем самым его работу! Здесь уме-
стно вспомнить анекдот про хирурга и автомеханика,
один из которых, оказывается, умеет ремонтировать
работающий “мотор”.
Следующий источник проблем, находящихся в ве-
дении параллельного программирования - прерыва-
ния. Особенностью любого прерывания является то,
что оно может возникнуть в совершенно непредска-
зуемый момент времени. Хорошо, если в микроконт-
роллере не “крутится” никакой фоновый процесс, а все
34
| -------------------------------------------------------------------------------------------------
обработчики прерываний не мешают друг другу (не ис-
пользуют одни и те же ресурсы). Если же обработчик
прерываний готовит для ф онового процесса какие-
либо данные (или, наоборот, их использует), то здесь
без соблюдения определенных правил взаимодей-
ствия могут возникать очень трудноуловимые ош иб-
ки. Иными словами: как только в программе появи-
лась обработка прерываний - жди появления проблем
параллельного программирования.
И еще один момент, когда возможно появление тон-
ких ошибок - взаимодействие с внешней средой (на-
пример, с устройствами, требующими жесткого вре-
менного граф ика). В этом случае устройство активно
вмешивается в работу микроконтроллера (например,
с помощью того же механизма прерываний), и про-
грамма должна быть готова к такого рода вмешатель-
ству. Кроме того, в случае взаимодействия с внеш ни-
ми устройствами, нужно четко представлять себе, как
и когда появляются на линиях микроконтроллера те
или иные сигналы.
Разумеется, все вышеперечисленные проблемы
легко решить “ломовым” способом: не пользоваться
механизмом прерываний, не жалеть команд
пор
при
взаимодействии с устройствами и т.д. При таком под-
ходе все дальнейшее можно со спокойной душой про-
пустить. Если же столь прямолинейный способ реше-
ния проблем читателя не устраивает - начнем разбор
проблем и способов их решения!
КОНВЕЙЕР КОМАНД
Все или почти все выпускаемые в мире контроллеры
имеют внутри себя т.н. конвейер команд (уместно бу-
дет вспомнить, что впервые в мире конвейер команд
появился в советской машине БЭСМ-6).
В микроконтроллере КР1878ВЕ1 конвейер состоит
из трех блоков:
блок анализа и декодирования команд
блок вычислений
блок записи результата
| Радиолюбитель - 0 7 /2 0 0 6
предыдущая страница 34 Радиолюбитель 2006-07 читать онлайн следующая страница 36 Радиолюбитель 2006-07 читать онлайн Домой Выключить/включить текст