Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.
PS2 » 02 май 2008, 12:38
Не могу дойти как задействовать шим на микроконтроллере AVR. (mega16) Читал курс avr123.nm.ru но не всё понятно. А конкретно непонятно как программно включить.
- Код: Выделить всё
DDRD=0x20; // 00100000 PD5(OC1A)-PWM Timer1 OUT ---- тут всё понятно, 5 нога выход для ШИМ
// ножку PD5 назначить выходом
// Настройка TIMER1 для генерации ШИМ
//TIMER1 initialize
//prescale:1 clock 7.37 MHz
// WGM: 7) PWM 10bit fast, TOP=0x03FF
// actual value: 7200,000Hz (100,0%)
// последнее - это частота ШИМ сигнала
TCCR1B = 0x00; //stop Timer
TCNT1H = 0xFC; // 11111100 --- эти строчки не понятны
TCNT1L = 0x01; // 00000001
---
в общем и дальше не понятно. Разъясните пожалуйста.
---
- Код: Выделить всё
/* значение в 16 битном регистре OCR1A определяет величину генерируемого ШИМ сигнала на ножке PD5 - если поделить ее на 10.23 то получим PWM в процентах*/
OCR1AH = 0x03; // PWM(PD5) = OCR1A / 10.23
OCR1AL = 0xFF; // 0x03FF это число 1023
/* регистр OCR1A состоит из двух 8-ми битных регистров OCR1AH и OCR1AL запись в них нужно проводить в указанной последовательности! */
OCR1BH = 0x03;
OCR1BL = 0xFF;
ICR1H = 0x03;
ICR1L = 0xFF;
TCCR1A = 0x83; // 10000011
TCCR1B = 0x09; // 00001001 - start Timer
// Теперь ШИМ 100% - т.е. на ножке PD5 лог. "1"
На форуме есть тег 'CODE' для вставки листингов программ! Использование его для вставки листингов ОБЯЗАТЕЛЬНО! <Digit>
-
PS2
-
avr123.nm.ru » 02 май 2008, 15:14
ИМХО - ОЧЕВИДНО !
- Код: Выделить всё
TCCR1B = 0x09; // 00001001 - start Timer
START - т.е. ПУСК, ЗАПУСК ...
Добавлено спустя 11 минут 33 секунды:Курс расчитан на последовательное чтение ! ШИМ - это уже задача 8.
А с таймерами работа есть в задачах 1 и 6.
-

avr123.nm.ru
- отсылающий читать курс
-
- Сообщения: 14195
- Зарегистрирован: 06 ноя 2005, 04:18
- Откуда: Москва
-
SSG » 02 май 2008, 21:52
Таймер 1 16-и битный. Поэтому его счетный регистр состоит из двух восьмибитных: старшего (пишется с буквом H (от хай) и младшего L (от лоу)). Первая непонятная запись - запись числа в счетный регистр таймера TCNT1. Старший байт числа в старший регистр, а младщий - в младший. Такое записывание используется когда нужно, чтобы таймер-счетчик не с нуля считал, а с какого-то значения.
Про OCR1A написано в комментариях. Это регистр сравнения. Когда значение в счетном регистре таймера сравняется со значением, предварительно заботливо записанным в регистр сравнения, может произойти некоторое событие. При генерации ШИМ таким событием может быть изменение уровня сигнала на выходе схемы сравнения - ножке контроллера OC1A.
Советую про таймеры и ШИМ почитать в книге Евстифеева.
I live My life!
-

SSG
-
- Сообщения: 1058
- Зарегистрирован: 15 янв 2007, 19:23
- Откуда: Беларусь, Барановичи
- прог. языки: С для МК, Delphi для ПК
Вернуться в Новичкам или основы основ роботостроения.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3