Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

Так как имеется три передающих буфера, модуль msCAN12 должен иметь некоторые средства, чтобы передавать записанную в них информацию в порядке, определяемом ее важностью. Упорядочение трех буферов осуществляется с помощью регистра приоритета буферов передачи (рис. 9.11). Регистр приоритета буферов передачи, также как и 13-байтовый буфер, связан с каждым из передающих буферов. Контроллер msCAN12 оценивает значение приоритета для трех передавших буферных регистров, и определяет порядок передачи информации из каждого регистра. Чем меньше значение, записанное в регистре приоритета, тем выше приоритет, соответствующего буфера. В случаях, когда значения приоритетов равны, буфер с самым низким индексом получает наиболее высокий приоритет.

Рис. 9.11. Регистр приоритета передающего буфера msCAN12. Этот регистр используется, чтобы ранжировать порядок передачи сообщений из этого буфера.


Рассмотрим теперь три специальных регистра передающего модуля: регистр флагов CTFLG передатчика, регистр управления передатчика CTCR и регистр счетчика ошибок CTXERR. Формат регистра CTFLG показан на рис. 9.12. Биты 2, 1 и 0 являются флагами пустого буфера передачи, которые указывают, пуст или заполнен соответствующий буфер передачи. Логическая 1 указывает, что данный буфер передачи пуст и готов к новому использованию. Мы должны очистить этот флаг (записать 1 в соответствующий бит) после загрузки передающего буфера. Флаг также устанавливается в случае успешного выполнения запроса на аварийное прекращение работы передатчика. Биты 7 и 3 этого регистра не используются.

Рис. 9.12. Формат регистра CTFLG


Биты от 6 до 4 представляют собой флаги аварийного прекращения работы, показывающие, что выполнен запрос на аварийное прекращение работы. Логическая 1 показывает, что данное сообщение не было прервано; логический 0 свидетельствует, что сообщение было успешно прервано. Флаги запроса аварийного прекращения работы автоматически очищаются, когда сбрасываются флаги пустого буфера передачи.

Запрос на аварийное прекращение работы может быть сделан при изменении состояния регистра другого модуля передачи, названного регистром управления передатчиком CTCR. Формат регистра CTCR показан на рис. 9.13. В этом регистре также не используются биты 7 и 3. Программист может разработать программу, позволяющую запросить аварийное прекращение передачи с помощью битов 4, 5 и 6 этого регистра. Логический 0 соответствует отсутствию запроса, а логическая 1 показывает, что появился запрос. Когда сообщение успешно прерывается, соответствующий флаг TXE и флаг ABTAK устанавливается в CTFLG. Программист не может непосредственно очистить биты ABTRQ, но они очищаются при установке соответствующих TXE флагов в регистре CTFLG.

Рис. 9.13.

Формат регистра управления передатчиком msCAN12


Биты 2, 1 и 0 — это флаги разрешения на локальное прерывание, связанные с флагами пустого буфера в регистре CTFLG. Логическая 1 указывает, что соответствующий буфер передачи пуст (установлен флаг TXE в регистре CTFLG), вызвано прерывание из-за пустого передающего буфера. Логический нуль выключает систему прерывания.

Последним регистром, связанным с подсистемой передатчика модуля msCAN12, является регистр счетчика ошибок CTXERR. Как показывает его название, этот регистр подсчитывает число ошибок передачи. Когда контроллер msCAN12 находится в спящем режиме или в режиме программного сброса, регистр счетчика ошибок доступен только для чтения. Формат регистра счетчика ошибок показан на рис. 9.14.

Рис. 9.14. Счетчик ошибок передачи msCAN


Подсистема приемника. Приемный модуль контролера msCAN12 состоит из двух 13-байтовых буферов, восьми регистров идентификаторов приема CIDAR0…CIDAR7, восьми маскируемых фильтров идентификаторов приема CIDMR0…CIDMR7, регистра флагов приемника CRFLG, регистра разрешения прерываний приемника CRIER, регистра управления идентификаторами приема CIDAC и одного счетчика ошибок  приемника CRXERR. В этом разделе, мы рассмотрим каждый из этих компонентов приемного модуля msCAN12.

Естественно, два 13-байтовых буфера используют тот же формат, что и буфер передачи msCAN12, показанный на рис. 9.8. Сообщения, посылаемые устройством, подключенным к сети CAN, принимаются другими устройствами сети через эти буферы. Первым из приемных буферов, является так называемый предварительный буфер приема RxBG. Именно в него поступают сначала внешние сообщения. Второй приемный буфер, называемым основным буфером RxFG, доступен для ЦП 68HC12. Два буфера физически различны, но RxBG отображается в RxFG с помощью механизма, который мы рассмотрим далее в этом разделе, что заставляет буферы содержать одни и те же адреса. RxFG занимает физические адреса от $0140 до $014C.

Перейти на страницу:

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT