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

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

Жанры

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

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

Шрифт:

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

/* CANONE.C Эта программа запускает плату 68HC12 и связывает ее с другой*/

/* платой 68HC12 с помощью контроллера CAN */

/* Авторы: Даниэль Пак и Стив Барретт */

/* Дата создания: 29 июля 2004 */

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

line 0 #include "68HC12DP256.h"

line 1 void main

line 2 {

line 3 COPCTL=0x00; /*Выключить
сторожевой таймер COP*/

line 4 /*установить модуль CAN */

line 5 CAN0CTL1 = CAN0CTL1 | 0x80; /*разрешение для модуля CAN */

line 6 CAN0CTL1 = CAN0CTL1 & 0xEF; /*выключение режима LISTEN*/

line 7 while ((CAN0CTL1 | 0x01) == 0) /*режим инициализации CAN*/

line 8 {

line 9 CAN0CTL0 = CAN0CTL0 | 0x01;

line 10 }

line 11 CAN0BTR0 = 0xC1; /*установка бит синхронизации CAN*/

line 12 CAN0BTR1 = 0xF7;

line 13 CANOCTL0 = CAN0CTL0 & 0xFE;/*выход CAN из режима инициализации*/

line 14 while ((CAN0CTL0 & 0x10) == 0){} /*ожидание синхронизации*/

line 15 CAN0TBEL = 0x01; /*выбор передающего буфера 0 */

line 16 /*установка передающего буфера */

line 17 CAN0TXFG0 = 0xFF;

line 18 CAN0TXFG1 = 0xFF;

line 19 CAN0TXFG2 = 0xFF;

line 20 CAN0TXFG3 = 0xFE; /*RTR = 0 для кадра данных */

line 21 CAN0TXFG4 = 0x01; /*сообщение */

line 22 CAN0TXFG5 = 0x02;

line 23 CAN0TXFG6 = 0x03;

line 24 CAN0TXFG7 = 0x04;

line 25 CAN0TXFG8 = 0x05;

line 26 CAN0TXFG9 = 0x06;

line 27 CAN0TXFGA = 0x07;

line 28 CAN0TXFGB = 0x08;

line 29 CAN0TXFGC = 0x08; /*спецификатор длины данных */

line 30 CAN0TXFGD = 0x00;

line 31 while(1)

line 32 {

line 33 while ((CAN0TFLG & 0x01) == 0) /*ожидание флага окончания передачи */

line 34 CAN0TFLG = CAN0TFLG | 0x01; /*очистка флага */

line 35 }

line36 } /* конец основной программы */

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

Команда на строке 3 выключает функцию сторожевого таймера COP контроллера. Команды на строках от 4 до 20 инициализируют контроллер msCAN12. Сначала, команда по строке 5 включает CAN контроллер. Команда на строке 6 выключает режим LISTEN, используемый для контроллеров, которые только прослушивают

данные сетевого трафика, не передавая никаких сообщения. Команды в строках с 7 по 10 используются, чтобы перевести контроллер CAN в режим инициализации. Сразу после инициализации, используются команды на строках 11 и 12, чтобы установить бит синхронизации CAN. Команда на строке 13 подготавливает контроллер CAN к работе с сетевым трафиком. Команда на строке 14 необходима, чтобы синхронизировать контроллер CAN с сетевым трафиком. Команда на строке 15 выбирает передающий буфер 0 для передачи информации, а команды на строках с 16-й по 30-ю готовят содержимое для передающего буфера. Отметим, что мы установили флаги SRR и IDE, выбрав тем самым расширенный формат, и, кроме того, очистили бит RTR, показав, что текущий буфер загружен кадром данных. Начиная со строки 31 до конца программы продолжается передача данных в сеть.

Ниже приведена программа, которая определяет работу второго МК, показанного в нижней части рис. 9.32.

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

/* CANTWO.C Эта программа запускает плату 68HC12 и связывает ее с другой */

/* платой 68HC12 с помощью контроллера CAN */

/* Авторы: Даниэль Пак и Стив Барретт */

/* Дата создания: 29 июля 2004 */

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

line 0 #include "68HC12DP256.h"

line 1 void main

line 2 {

line 3 COPCTL=0x00; /*Выключить сторожевой таймер COP */

line 4 /*установить модуль CAN */

line 5 CAN0CTL1 = CAN0CTL1 | 0x80; /*разрешение для модуля CAN */

line 6 CAN0CTL1 = CAN0CTL1 & 0xEF; /*выключение режима LISTEN */

line 7 while ((CAN0CTL1 | 0x01) == 0) /*режим инициализации CAN */

line 8 {

line 9 CAN0CTL0 = CAN0CTL0 | 0x01

line 10 }

line 11 CANOBTR0 = 0xC1; /*установка бита синхронизации CAN*/

line 12 CAN0BTR1 = 0xF7;

line 13 CAN01DM0 = 0xFF; /*прием всех сообщений */

line 14 CAN01DM1 = 0xFF;

line 15 CAN01DM2 = 0xFF;

line 16 CAN01DM3 = 0xFF;

line 17 CAN01DM4 = 0xFF;

line 18 CAN01DM5 = 0xFF;

line 19 CAN01DM6 = 0xFF;

line 20 CAN01DM7 = 0xFF;

line 21 CAN0CTL0 = CAN0CTL0 & 0xFE; /*выход CAN из режима инициализации */

line 22 while ((CAN0CTL0 & 0x10) == 0){} /*ожидание синхронизации */

line 23 /*ожидание сообщения */

line 24 while ((CAN0RFLG & 0x01) == 0){} /*ожидание флага сообщения */

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

Наследник 2

Шимохин Дмитрий
2. Старицкий
Фантастика:
попаданцы
альтернативная история
фэнтези
5.75
рейтинг книги
Наследник 2

Проданная Истинная. Месть по-драконьи

Белова Екатерина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Проданная Истинная. Месть по-драконьи

Помещица Бедная Лиза

Шах Ольга
Любовные романы:
любовно-фантастические романы
6.40
рейтинг книги
Помещица Бедная Лиза

Доктор 4

Афанасьев Семён
4. Доктор
Фантастика:
альтернативная история
5.00
рейтинг книги
Доктор 4

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

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

Страж Кодекса. Книга VII

Романов Илья Николаевич
7. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга VII

Последний Паладин

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

Адвокат Империи 3

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

Кодекс Крови. Книга VIII

Борзых М.
8. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VIII

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

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

Фею не драконить!

Завойчинская Милена
2. Феями не рождаются
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Фею не драконить!

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

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

Мама из другого мира. Дела семейные и не только

Рыжая Ехидна
4. Королевский приют имени графа Тадеуса Оберона
Любовные романы:
любовно-фантастические романы
9.34
рейтинг книги
Мама из другого мира. Дела семейные и не только

Завещание Аввакума

Свечин Николай
1. Сыщик Его Величества
Детективы:
исторические детективы
8.82
рейтинг книги
Завещание Аввакума