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

Тут можно читать онлайн Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Издательский дом «ДМК-пресс», год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом «ДМК-пресс»
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    5-9706-0034-2
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - описание и краткое содержание, автор Стивен Барретт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В книге последовательно рассматриваются все этапы создания встраиваемых систем на микроконтроллерах с применением современных технологий проектирования. Задумав эту книгу, авторы поставили перед собой задачу научить читателя искусству создания реальных устройств управления на однокристальных микроконтроллерах.

Издание содержит материал, охватывающий все вопросы проектирования, включает множество заданий для самостоятельной работы, примеры программирования, примеры аппаратных решений и эксперименты по исследованию работы различных подсистем микроконтроллеров.

Данная книга является прекрасным учебным пособием для студентов старших курсов технических университетов, которые предполагают связать свою профессиональную деятельность с проектированием и внедрением встраиваемых микропроцессорных систем. Книга также будет полезна разработчикам радиоэлектронной аппаратуры на микроконтроллерах.

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - читать онлайн бесплатно полную версию (весь текст целиком)

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - читать книгу онлайн бесплатно, автор Стивен Барретт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Проиллюстрируем такую работу примером.

Пример:Предположим, что робот, имеющий пять ИК локаторов (рис. 8.16) выполняет функцию названную process_turn, которая инициализирует систему ATD контроллера 68HC12, начиная последовательность преобразований, необходимую, чтобы записать аналоговые сигналы от пяти датчиков (с номерами от 0 до 4), которые связаны с каналами ATD от 7 до 3, соответственно. Выход датчика Холла, установленного в нижней части робота, чтобы обнаруживать магнитные мины, связан с каналом 2 ATD. Обратите внимание: этот пример придуман, чтобы показать, как следует подразделять код, чтобы обеспечить удобные точки прерывания.

Рис 816Робот c пятью ИК локаторами и датчиком Холла ИКдатчик обнаруживает - фото 312

Рис. 8.16.Робот c пятью ИК локаторами и датчиком Холла. ИК-датчик обнаруживает присутствие стенок лабиринта, в то время как датчик Холла обнаруживает присутствие магнитных мин.

Код process_turn, обеспечивающий процесс поворота, приведен ниже.

void process_turn() {

/*Инициализация системы ATD */

ATDCTL2 = 0x80; /*установка флага ADPU, чтобы подать питание на систему ATD*/

ATDCTL3 = 0x00; /*игнорировать «замораживание» системы */

ATDCTL4 = 0x7F; /*Снижение частоты таймера P до 125 кГц */

/*выборка, время преобразования = 32 ATD цикла */

/* 1 выборка за каждые 256 мкс */

for (i=0; i<67; i++) { /* ожидание 100 мкс при 8 МГц ECLK*/

;

}

/*Инициализация ATD-преобразования */

ATDCTL5 = 0x50; /*Начать многоканальное ATD-преобразование */

/* для 8 каналов */

while((ATDSTAT & 0x8000) == 0) { /* проверить окончание преобразования по*/

/*состоянию флага SCF */

;

}

/* сохранить результаты ATD-преобразования*/

/* в глобальном массиве char*/

sens[0] = ADR7H; /*крайний левый датчик */

sens[1] = ADR6H; /*средний левый датчик */

sens[2] = ADR5H; /*центральный датчик */

sens[3] = ADR4H; /*средний правый датчик */

sens[4] = ADR3H; /*крайний правый датчик */

sens[5] = ADR2H; /*Датчик Холла*/

/*анализ информации датчиков для решения о повороте. Примечание: пороги для*/

/*датчика Холла(hes_threshold) и для ИК-датчиков (opto_threshold)являются*/

/* глобальными переменными и определены экспериментально*/

if (sens[5] < hes_threshold) { /*сигнал с датчика Холла, объезд*/

pwm_motors(back_up); /* робот дает задний ход*/

/*действия, следующие после того */

/* как робот отъехал назад */

if(sens[0] > opto_threshold) pwm_motors(right_turn);

else pwm_motors(left_turn);

for(i=0; i<0xFFFF; i++) { /*задержка перед вращением двигателя */

for(j=0; j<15; j++){

;

}

}

}

/*если обнаружен тупик - задний ход*/

else if((sens[2]>opto_threshold) && (sens[0]>opto_threshold) && (sens[4]>opto_threshold)) {

pwm_motors(back_up);

}

/*если стенки спереди и слева, */

/*поворот робота направо */

else if((sens[0]>opto_threshold) && (sens[2]>opto_threshold)) {

pwm_motors(right_turn);

}

/*если стенки спереди и справа, */

/*поворот робота налево */

else if((sens[2]>opto_threshold) && (sens[4]>opto_threshold)) {

pwm_motors(left_turn);

}

/*если стенка перед средним правым */

/* датчиком, то полуповорот направо */

else if (sens[1] > opto_threshold) {

pwm_motors(half_right);

}

/*если стенка перед средним левым */

/* датчиком, то полуповорот налево */

else if (sens[3]>opto_threshold) {

pwm_motors(half_left);

}

/*если сигналов от датчиков нет, продолжить движение вперед*/

else {

pwm_motors(forward);

}

}

Если мы хотим подразделить этот код на три части обрабатываемые ОСРВ без прерывания, мы можем вставить точки прерывания после последовательности инициализации ATD и после последовательности записи данных с ATD. Это позволит функции без проблем прерывать и восстанавливать управление процессором. Чтобы выполнять эти изменения, мы должны ввести переменную, которую мы назовем code_section. Эта переменная позволит нам проследить, какая из трех частей кода должна быть выполнена при очередной активности задачи.

int process_turn(int code_section) {

switch(code_section) {

case 0:

/*Инициализация системы ATD */

ATDCTL2 = 0x80; /*включение ATD */

ATDCTL3 = 0x00; /*игнорировать доступ при отладке системы */

ATDCTL4 = 0x7F; /*Снижение частоты таймера P до 125 кГц */

/*выборка, время преобразования = 32 ATD цикла */

/* 1 выборка за каждые 256 мкс */

for (i=0; i<67; i++) {

/* ожидание 100 мкс при 8 МГц ECLK*/

;

}

code_section = 1; /*update code_section variable */

break;

case 1:

/*Инициализация ATD-преобразования */

ATDCTL5 = 0x50; /*Начать многоканальное ATD-преобразование*/

/* для 8 каналов */

while ((ATDSTAT & 0x8000) == 0) {

/* проверить окончание преобразования по*/

/*состоянию флага SCF */

;

}

/* сохранить результаты ATD-преобразования*/

/* в глобальном массиве char */

sens[0] = ADR7H; /*крайний левый датчик */

sens[1] = ADR6H; /*средний левый датчик */

sens[2] = ADR5H; /*центральный датчик */

sens[3] = ADR4H; /*средний правый датчик */

sens[4] = ADR3H; /*крайний правый датчик */

sens[5] = ADR2H; /*Датчик Холла */

code_section = 2; /*update code_section variable */

break;

case 2:

/*анализ информации датчиков для решения о повороте. Примечание: пороги для*/

/*датчика Холла(hes_threshold) и для ИК-датчиков (opto_threshold)являются*/

/* глобальными переменными и определены экспериментально*/

if (sens[5] < hes_threshold) { /*сигнал с датчика Холла, объезд*/

pwm_motors(back_up); /* робот дает задний ход*/

/*действия, следующие после того */

/* как робот отъехал назад */

if (sens[0] > opto_threshold) pwm_motors(right_turn);

else pwm_motors(left_turn);

for (i=0; i<0xFFFF; i++) { /*задержка перед вращением двигателя */

for(j=0; j<15; j++) {

;

}

}

}

/*если обнаружен тупик - задний ход*/

else if ((sens[2]>opto_threshold) && (sens[0]>opto_threshold) && (sens[4]>opto_threshold)) {

pwm_motors(back_up);

}

/*если стенки спереди и слева, */

/*поворот робота направо */

else if((sens[0]>opto_threshold) && (sens[2]>opto_threshold)) {

pwm_motors(right_turn);

}

/*если стенки спереди и справа, */

/*поворот робота налево */

else if((sens[2]>opto_threshold) && (sens[4]>opto_threshold)) {

pwm_motors(left_turn);

}

/*если стенка перед средним правым */

/* датчиком, то полуповорот направо */

else if (sens[1] > opto_threshold) {

pwm_motors(half_right);

}

/*если стенка перед средним левым */

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стивен Барретт читать все книги автора по порядку

Стивен Барретт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С, автор: Стивен Барретт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x