Чтение онлайн

на главную - закладки

Жанры

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

Пак Дэниэл Дж.

Шрифт:

В дополнение к функциональным изменениям в существующих девяти регистрах управления, контроллер MC9S12DP256 msCAN содержит три дополнительных регистра: регистр выбора передающего буфера msCAN (CANTBSEL), регистры старшего байта и младшего байта временной метки (TSRH:TSRL).

Режим «только для прослушивания» (LISTEN) позволяет программисту устанавливать контроллер CAN в рецессивное состояние на все время пока принимаются достоверные данные и кадры удаленного запроса. Контроллер CAN может быть запрограммирован на работу в таком режиме путем установки бита LISTEN в регистре управления 1 msCAN12. Дополнительная возможность присваивать временную метку каждому сообщению, упомянутая в предыдущем параграфе,

позволяет программисту легко отслеживать передаваемые и получаемые сообщения. Исключение порта регистров CAN не позволяет использовать его для создания универсального порта входов–выходов (I/O). Однако исключение этого порта делает контроллер CAN более компактным, а для создания порта входов/выходов можно использовать другие порты контроллера MC9S12DP256.

В результате изменений, которые мы перечислили, карта памяти, контроллера msCAN12 в микроконтроллера MC9S12DP256 изменится в соответствии с рис. 9.31.

Рис. 9.31. Карты памяти для контроллеров CAN в HC12 и MC9S12DP256

9.5. Пример программирования контроллера msCAN Схема включения аппаратных средств для двух отладочных плат Axiom

Рис. 9.32.

В этом разделе, мы рассмотрим простое применение, в котором два МК семейства 68HC12 объединяются в CAN сеть при помощи своих встроенных модулей msCAN12. Сначала мы покажем используемые в примере аппаратные средства (рис. 9.32), а затем представим программы, необходимые для работы обоих контроллеров. Для этого применения, мы выбрали отладочную плату Axiom CMD912 с микроконтроллером MC9S12DP256. Специальная плата была выбрана, чтобы воспользоваться преимуществами трансивера CAN, встроенного в ИС PCA82C259 компании Philips. Каждая плата должна выполнять собственную программу, чтобы реализовать простую связь между двумя msCAN модулями. Первая из программ, показанных ниже, является файлом заголовков (header file) 68hc9s12dp256.h, который содержит описания адресов регистров. Показан только фрагмент этого файла, относящийся к нашим программам CAN.

#define _REG_BASE 0

#define P(off) *(unsigned char volatile *)(_REG_BASE + off)

#define COPCTL _P(0x3C) /*управление сторожевым таймером */

#define CAN0CTL0 _P(0x0140) /*управляющий регистр 0 */

#define CAN0CTL1 _P(0x0141) /*CAN0 регистр управления 1 */

#define CAN0BTR0 _P(0x0142) /*CAN0 регистр синхронизации 0 */

#define CAN0BTR1 _P(0x0143) /*CAN0 регистр синхронизации 1 */

#define CAN0RFLG _P(0x0144) /*CAN0 флаги приема */

#define CAN0TFLG _P(0x0146) /*CAN0 флаги передачи */

#define CAN0TBEL _P(0x014A) /*CAN0 выбор передающего буфера */

#define CAN01DM0 _P(0x0154) /*CAN0 регистр маскирования идентификаторов 0*/

#define CAN01DM1 _P(0x0155) /*CAN0 регистр маскирования идентификаторов 1*/

#define CAN01DM2 _P(0x0156) /*CAN0 регистр маскирования идентификаторов 2*/

#define CAN0IDM3 _P(0x0157) /*CAN0 регистр маскирования идентификаторов 3*/

#define CAN0IDM4 _P(0x015C) /*CAN0
регистр маскирования идентификаторов 4*/

#define CAN0IDM5 _P(0x015D) /*CAN0 регистр маскирования идентификаторов 5*/

#define CAN0IDM6 _P(0x015E) /*CAN0 регистр маскирования идентификаторов 6*/

#define CAN0IDM7 _P(0x015F) /*CAN0 регистр маскирования идентификаторов 7*/

#define CAHORXFG0 _P(0x0160) /*основной буфер RX CAN0 */

#define CAN0RXFG1 _P(0x0161) /*основной буфер RX CAN0 */

#define CAN0RXFG2 _P(0x0162) /*основной буфер RX CAN0 */

#define CAN0RXFG3 _P(0x0163) /*основной буфер RX CAN0 */

#define CAN0RXFG4 _P(0x0164) /*основной буфер RX CAN0 */

#define CAN0RXFG5 _P(0x0165) /*основной буфер RX CAN0 */

#define CAN0RXFG6 _P(0x0166) /*основной буфер RX CAN0 */

#define CAN0RXFG7 _P(0x0167) /*основной буфер RX CAN0 */

#define CAN0RXFG8 _P(0x0168) /*основной буфер RX CAN0 */

#define CAN0RXFG9 _P(0x0169) /*основной буфер RX CAN0 */

#define CAN0RXFGA _P(0x016A) /*основной буфер RX CAN0 */

#define CAM0RXFGB _P(0x016B) /*основной буфер RX CAN0 */

#define CAN0RXFGC _P(0x016C) /*основной буфер RX CAN0 */

#define CAN0RXFGD _P(0x016D) /*основной буфер RX CAN0 */

#define CAN0RXFGE _P(0x016E) /*основной буфер RX CAN0 */

#define CAN0RXFGF _P(0x016F) /*основной буфер RX CAN0 */

#define CAN0TXFG0 _P(0x0170) /*основной буфер TX CAN0 */

#define CAN0TXFG1 _P(0x0171) /*основной буфер TX CAN0 */

#define CAN0TXFG2 _P(0x0172) /*основной буфер TX CAN0 */

#define CAN0TXFG3 _P(0x0173) /*основной буфер TX CAN0 */

#define CAN0TXFG4 _P(0x0174) /*основной буфер TX CAN0 */

#define CAN0TXFG5 _P(0x0175) /*основной буфер TX CAN0 */

#define CAN0TXFG6 _P(0x0176) /*основной буфер TX CAN0 */

#define CAN0TXFG7 _P(0x0177) /*основной буфер TX CAN0 */

#define CAM0TXFG8 _P(0x0178) /*основной буфер TX CAN0 */

#define CAN0TXFG9 _P(0x0179) /*основной буфер TX CAN0 */

#define CAN0TXFGA _P(0x017A) /*основной буфер TX CAN0 */

#define CAN0TXFGB _P(0x017B) /*основной буфер TX CAN0 */

#define CAN0TXFGC _P(0x017C) /*основной буфер TX CAN0 */

#define CAN0TXFGD _P(0x017D) /*основной буфер TX CAN0 */

#define CAN0TXFGE _P(0x017E) /*основной буфер TX CAN0 */

#define CAN0TXFGF _P(0x017F) /*основной буфер TX CAN0 */

/********************************************************************/

Следующая программа выполняется контроллером первой платы, показанной в верхней части рис. 9.32. Эта программа инициализирует связь, а затем непрерывно посылает в сеть 8-байтовый блок данных ($01, $02, $03, $04, $05, $06, $07, и $08).

Поделиться:
Популярные книги

Я не Монте-Кристо

Тоцка Тала
Любовные романы:
современные любовные романы
5.57
рейтинг книги
Я не Монте-Кристо

Адвокат вольного города

Парсиев Дмитрий
1. Адвокат
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Адвокат вольного города

Орден Багровой бури. Книга 4

Ермоленков Алексей
4. Орден Багровой бури
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Орден Багровой бури. Книга 4

Убивать чтобы жить 9

Бор Жорж
9. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 9

Защитник

Астахов Евгений Евгеньевич
7. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Защитник

Законы Рода. Том 11

Flow Ascold
11. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 11

Город Богов

Парсиев Дмитрий
1. Профсоюз водителей грузовых драконов
Фантастика:
юмористическая фантастика
детективная фантастика
попаданцы
5.00
рейтинг книги
Город Богов

Седьмая жена короля

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Седьмая жена короля

Плеяда

Суконкин Алексей
Проза:
военная проза
русская классическая проза
5.00
рейтинг книги
Плеяда

Товарищ "Чума"

lanpirot
1. Товарищ "Чума"
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Товарищ Чума

Идеальный мир для Лекаря 10

Сапфир Олег
10. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 10

Три `Д` для миллиардера. Свадебный салон

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Три `Д` для миллиардера. Свадебный салон

Я еще не князь. Книга XIV

Дрейк Сириус
14. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще не князь. Книга XIV

Попаданка в деле, или Ваш любимый доктор - 2

Марей Соня
2. Попаданка в деле, или Ваш любимый доктор
Любовные романы:
любовно-фантастические романы
7.43
рейтинг книги
Попаданка в деле, или Ваш любимый доктор - 2