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

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

Жанры

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 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).

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

Мир-о-творец

Ланцов Михаил Алексеевич
8. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Мир-о-творец

Темный Лекарь 4

Токсик Саша
4. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 4

Жестокая свадьба

Тоцка Тала
Любовные романы:
современные любовные романы
4.87
рейтинг книги
Жестокая свадьба

Новый Рал

Северный Лис
1. Рал!
Фантастика:
фэнтези
попаданцы
5.70
рейтинг книги
Новый Рал

Жена на пробу, или Хозяйка проклятого замка

Васина Илана
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Жена на пробу, или Хозяйка проклятого замка

Проиграем?

Юнина Наталья
Любовные романы:
современные любовные романы
6.33
рейтинг книги
Проиграем?

Сумеречный Стрелок 10

Карелин Сергей Витальевич
10. Сумеречный стрелок
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Сумеречный Стрелок 10

Диверсант

Вайс Александр
2. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Диверсант

Кротовский, вы сдурели

Парсиев Дмитрий
4. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
рпг
5.00
рейтинг книги
Кротовский, вы сдурели

Возвышение Меркурия

Кронос Александр
1. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия

Неудержимый. Книга XIII

Боярский Андрей
13. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XIII

Никто и звать никак

Ром Полина
Фантастика:
фэнтези
7.18
рейтинг книги
Никто и звать никак

Береги честь смолоду

Вяч Павел
1. Порог Хирург
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Береги честь смолоду

Пожиратели миров. 3 том

Кири Кирико
3. Сердце реальности
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Пожиратели миров. 3 том