roboforum.ru

Технический форум по робототехнике.

Помогите с ШИМ

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

Помогите с ШИМ

Сообщение 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
 

Re: Помогите с ШИМ

Сообщение 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
Откуда: Москва
Предупреждения: -8

Re: Помогите с ШИМ

Сообщение SSG » 02 май 2008, 21:52

Таймер 1 16-и битный. Поэтому его счетный регистр состоит из двух восьмибитных: старшего (пишется с буквом H (от хай) и младшего L (от лоу)). Первая непонятная запись - запись числа в счетный регистр таймера TCNT1. Старший байт числа в старший регистр, а младщий - в младший. Такое записывание используется когда нужно, чтобы таймер-счетчик не с нуля считал, а с какого-то значения.
Про OCR1A написано в комментариях. Это регистр сравнения. Когда значение в счетном регистре таймера сравняется со значением, предварительно заботливо записанным в регистр сравнения, может произойти некоторое событие. При генерации ШИМ таким событием может быть изменение уровня сигнала на выходе схемы сравнения - ножке контроллера OC1A.
Советую про таймеры и ШИМ почитать в книге Евстифеева.
I live My life!
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК


Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 58