roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 09:48

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Помогите с ШИМ
СообщениеДобавлено: 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>


Вернуться к началу
  
 
 Заголовок сообщения: Re: Помогите с ШИМ
СообщениеДобавлено: 02 май 2008, 15:14 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
ИМХО - ОЧЕВИДНО !

Код:
TCCR1B = 0x09; // 00001001 - start Timer


START - т.е. ПУСК, ЗАПУСК ...

Добавлено спустя 11 минут 33 секунды:
Курс расчитан на последовательное чтение ! ШИМ - это уже задача 8.
А с таймерами работа есть в задачах 1 и 6.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с ШИМ
СообщениеДобавлено: 02 май 2008, 21:52 
Не в сети
Аватара пользователя

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

_________________
I live My life!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO