Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
}
/********************************************************************/
/********************************************************************/
/*read_adc: считывание результатов из АЦП */
/********************************************************************/
void read_adc {
ATDCTL5 = 0x50; /*Установить АЦП на режим многоканального,*/
/*
преобразования 8 каналов */
while((ATDSTAT & 0x8000) == 0)/* проверка бита SCF для окончания */
/*преобразования */
{
;
}
/* сохранения результата в глобальном массиве */
sens[0] = ADR7H; /*дальний левый датчик */
sens[l] = ADR6H; /*средний правый датчик */
sens[2] = ADR5H; /*центральный датчик */
sens[3] = ADR4H; /* средний правый датчик */
sens[4] = ADR3H; /* дальний правый датчик */
sens[5] = ADR2H; /*датчик Холла*/
}
/********************************************************************/
/*decision: решение о повороте основано на информации, полученной от*/
/* пяти датчиков. Порог датчика Холла (hes_threshold) и порог */
/* оптического датчика (opto_threshold) определяются экспериментально.*/
/********************************************************************/
void decision {
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);
}
}
/********************************************************************/
/*init_pwm: инициализация ШИМ контроллера 68HС12 */
/********************************************************************/
void init_pwm {
PWTST= 0x00;
PWCTL= 0x00; /*Режим фронтовой ШИМ */
WCLK= 0x3F; /*Каналы без каскадного соединения, E_CLK/128 */
PWPOL= 0x0F; /*set pins high then low transition */
DDRP = 0xFF; /*Порт PORT T на вывод */
PWEN = 0x0F; /*Активизировать выход ШИМ */
PWPER0 = 250; /*Установить частоту ШИМ 250 Гц */
PWPER1 = 250;
PWPER2 = 250;
PWPER3 = 250;
PWDTY0 = 0; /*начальная установка ШИМ на отсутствие движения*/
PWDTY1 = 0;
PWDTY2 = 0;
PWDTY3 = 0;
}
/********************************************************************/
/*pwm_motors: /*выполнение определенного поворота */
/********************************************************************/
void pwm_motors(const char a) {
for (i = 0;i<2000;i++) /*задержка на 3 мс чтобы позволить двигателю*/
Поделиться:
Популярные книги
Курсант: назад в СССР
1. Курсант
Фантастика:
попаданцы
альтернативная история
7.33
рейтинг книги
Чужая семья генерала драконов
6. Генералы драконов
Фантастика:
фэнтези
5.00
рейтинг книги
Пышка и Герцог
Фантастика:
юмористическое фэнтези
историческое фэнтези
фэнтези
5.00
рейтинг книги
Имперский Курьер. Том 5
5. Запечатанный мир
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Имя нам Легион. Том 7
7. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Возвышение Меркурия
1. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Законы Рода. Том 11
11. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Вираж бытия
1. Фрунзе
Фантастика:
героическая фантастика
попаданцы
альтернативная история
6.86
рейтинг книги
Отмороженный 11.0
11. Отмороженный
Фантастика:
боевая фантастика
рпг
попаданцы
фантастика: прочее
фэнтези
5.00
рейтинг книги
История "не"мощной графини
1. Истории неунывающих попаданок
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Крестоносец
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Газлайтер. Том 15
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Призыватель нулевого ранга
1. Эпоха Гардара
Фантастика:
аниме
фэнтези
фантастика: прочее
5.00