ШИМ на 2313

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Zhmak

Сообщение Zhmak »

Нужно завести аппаратный ШИМ на 2313. Не подскажите последовательность действий?
Я, конечно, понимаю, что это есть в даташите ;) Но пока разберусь, что к чему.... Просто скажите: в этот регистр порог счета, в этот регистр устанавливаем набор бит, переключающий счетчик в шим, а здесь его запускаем. Или пример готового на асме ;)

Заранее спасибо!
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1529
Зарегистрирован: Пн авг 22, 2005 21:02:22
Откуда: Питер

Сообщение Serega »

Блин, вот что я никогда не делал на 2313 - так это аппаратный ШИМ... Товарищ, честно - все в ДШ, разжевано-пережевано!
Если не ошибаюсь, нужно правильно настроить таймеры, а именно - регистры TCCR1A и TCCR1B, там есть биты отвечающие за работу ШИМа (PWM по-ихнему).
Лучше быть первым в деревне, чем вторым в Риме
Реклама
Опытный кот
Аватара пользователя
Сообщения: 732
Зарегистрирован: Чт дек 29, 2005 07:29:25
Откуда: Омск

Сообщение Spider »

Вот кусок кода для mega8. Имхо работать будет без изменений ни на 2313.

Код: Выделить всё

#ifndef F_CPU
#define F_CPU 16000000UL
#endif

void init_pwm(unsigned char comp) {
	PORTB &= ~_BV(PB3);
	DDRB |= _BV(PB3); // setup PortB for output 	
	TCCR2 = _BV(WGM21) | _BV(COM20) | _BV(CS20);
	OCR2 = comp; 
	TCNT2 = 0x00; 
}

int main(void){
init_pwm(53); //125kHzl;
while(1);
return 0;
}
Перевести на ASM я думаю не составит труда.
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 219
Зарегистрирован: Вт сен 18, 2007 16:41:16
Откуда: Украина, г. Запорожье

Сообщение alex2103 »

Можно ли прокомментировать приведенный листинг? Пока ничего не понятно :)
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 586
Зарегистрирован: Ср мар 07, 2007 22:58:02
Откуда: Черкассы, Украина

Сообщение Negor »

Вобщем так... Для настройки аппаратных средств контроллера необходимо записывать биты в регистры. Каждый бит в таких регистрах что-то включает и выключает. Информацию о регистрах, битах, и т.д. можно почерпнуть из даташитов. Так вот. В нашем случае надо сделать так, чтобы таймер работал в так: досчитывал до значения в регистре OCR2 и счёт сбрасывался. Для удобства пишутся названия битов, но при компиляции они заменяются номерами. За установку вышепреведённого режима работы отвечает бит WGM21. Но что бы таймер начал считать надо установить пределитель. Тут есть варианты - каждый тик таймера может быть при каждом тике внутреннего генераторя, после 8, 32, 64, 128, 256 и 1024 тиков внутренего генератора. За это отвечают комбинации битов CS20 CS21 CS22. Spider видимо описАлся, установив два раза бит CS20... для указанной частоты надо установить биты СS20 и CS22. Все эти биты относятся к регистру TCCR2. Это касательно теории настройки переферии МК. Теперь методы записи в Си. Запись _BV(n) эквивалентна значению 8-разрядной переменной в которой установлен бит номер n. Допустим _BV(3) <-> 0b00001000. Тогда запись TCCR2 = _BV(WGM21) | _BV(COM20) | _BV(CS22) означает
TCCR2=0b01000000 | 0b00000001 | 0b00000100 .
Символ "|" означает "ИЛИ" т.е.
TCCR2=0b01000101.
Вроде всё объяснил... Правда может что-то непонятно)))
There is only 10 kind of people: those who understands binary code and those who dont!!!
Контактная информация:
Реклама
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

Zhmak писал(а):Нужно завести аппаратный ШИМ на 2313.

Не подскажите последовательность действий?
Подскажу с удовольствием ! Вот подробно - ШИМ в AVR на примерах по шагам.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 219
Зарегистрирован: Вт сен 18, 2007 16:41:16
Откуда: Украина, г. Запорожье

Сообщение alex2103 »

Negor, спасибо! именно такого рассказа я и ждал. Немного проясняется теперь :)

tych, сейчас почитаю...
Контактная информация:
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

Negor писал(а):Вобщем так... Для настройки аппаратных средств контроллера необходимо записывать биты в регистры.

Вроде всё объяснил... Правда может что-то непонятно)))
ШИМ сигнал только не получить по этому описанию :cry: :cry: :cry:

Я сичтаю что лучше подсказать человеку где написано как сделать
так чтоб работало :lol:
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

alex2103 писал(а):Negor, спасибо! именно такого рассказа я и ждал. Немного проясняется теперь :)
А вы попробуйте получить ШИМ по этому описанию ...
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 219
Зарегистрирован: Вт сен 18, 2007 16:41:16
Откуда: Украина, г. Запорожье

Сообщение alex2103 »

tych, сейчас повторяю предложенную задачу :)
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 586
Зарегистрирован: Ср мар 07, 2007 22:58:02
Откуда: Черкассы, Украина

Сообщение Negor »

tych кстати прав, а я за подробным описанием забыл что программа должна делать. Действительно - аппаратного ШИМа тут не получится. Я бы даже сказал - всё должно быть не так. Автору темы заодно тренировка - мы уже разобрали как настраивать переферию - а теперь попробуй сделать тоже самое, но таймер надо настроить на режим fast PWM (для начала покатит). Возьми даташит - и вперёд. Если что - помогу.
Я сичтаю что лучше подсказать человеку где написано как сделать
так чтоб работало
А я терпеть не могу такого подхода. Я считаю что если человек задаёт какойто вопрос и есть возможность ответить сдесь и сейчас, то нужно так и делать. Мне не лень написать простым языком простые вещи.
There is only 10 kind of people: those who understands binary code and those who dont!!!
Контактная информация:
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

Negor писал(а):если человек задаёт какойто вопрос и есть возможность ответить сдесь и сейчас, то нужно так и делать.
Конечно - если возможно ответить ПРАВИЛЬНО то да.

Я когда даю линк где написано - то точно знаю что там
Я написал ПРАВИЛЬНО ! И проверил код.

Когда пишешь быстро ответ в топике, тем более развернутый, навеняка налепишь ошибок и неточностей.

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

Кстати Админ считает вот как:
Serega писал(а): Товарищ, честно - все в ДШ, разжевано-пережевано!
Я то еще по-божески РУССКИЙ текст предлагаю почитать ...
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»