ATtiny25-20pu проблема с ШИМ

Обсуждаем контроллеры компании Atmel.
Ответить
Открыл глаза
Сообщения: 76
Зарегистрирован: Чт ноя 13, 2014 19:37:34

Сообщение Stanislavich »

Привет. МК исправен, уже поигрался со светодиодами.
Мне нужно с помощью данного мк управлять двумя сервоприводами. Для начала нужно хоть с одним справиться. По даташиту на нем 2канальный pwm. Я решил выводить сигнал на ножку OC0A (нулевой пин B).
Делаю все по даташиту, ищу все, что связано с fast pwm :) .

Пишут: " TOP is defined as 0xFF when WGM0[2:0] = 3, and OCR0A when WGM0[2:0] = 7." ну так-как мне нужно различное значение угла, то ставлю в регистре TCCR0A биты WGM00,WGM01,WGM02(этот в B) по единице.
Идем дальше:
"In fast PWM mode, the compare unit allows generation of PWM waveforms on the OC0x pins. Setting the COM0x[1:0] bits to two will produce a non-inverted PWM" значит ставим COM0A1 в 1 и COM0A0 в 0.

Это максимум, что я смог вытащить из абзаца про fast powm.

Дальше ищу что-нибудь про TCCR0A:
Биты COM0,WGM выставили, в принципе здесь больше ничего нет.

Смотрю по TCCR0B: WGM02 есть, CS00 ставлю в единицу(No prescaling).

На следующей странице пишут про TCNT0, написано, что лучше это не трогать.
дальше идет регистр OCR0A. Как я понял, он нужен для генерации сигнала на серву, а именно на пин. к которому я ее подключил.

Внимание вопрос: что я cделал не так, что еще нужно сделать?
ДШ: http://www.atmel.com/images/atmel-2586- ... asheet.pdf
Последний раз редактировалось Stanislavich Ср июл 01, 2015 22:55:13, всего редактировалось 1 раз.
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

Спойлер; Включим ШИМ режим
ldi r16,(1<<COM0A1|0<<COM0A0|1<<COM0B1|0<<COM0B0|1<<WGM00)
out TCCR0A,r16
ldi r16,(0<<CS02|0<<CS01|1<<CS00) ; WGM2
out TCCR0B,r16

ldi r16,(1<<COM1A1|0<<COM1A0|1<<COM1B1|0<<COM1B0|1<<WGM10)
out TCCR1A,r16
ldi r16,(0<<CS02|0<<CS01|1<<CS00|0<<WGM12) ; WGM2
out TCCR1B,r16


ldi r16,0xAA
out OCR0B,r16
eor r16,xor
out OCR0A,r16
Это для двух каналов на АТтини2313. Регистры, в принципе, одинаковы, поиграйтесь.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Реклама
Открыл глаза
Сообщения: 76
Зарегистрирован: Чт ноя 13, 2014 19:37:34

Сообщение Stanislavich »

dr.doc писал(а):Это для двух каналов на АТтини2313. Регистры, в принципе, одинаковы, поиграйтесь.
Я пишу на си(atmel studio 6). Ассемблер, увы, пока не освоил.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

Так конструкции там должны быть понятны. Например: TCCR0A = (1<<COM0A1|0<<COM0A0|1<<COM0B1|0<<COM0B0|1<<WGM00) - выставляем конфигурацию бит. И далее таким же способом.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 76
Зарегистрирован: Чт ноя 13, 2014 19:37:34

Сообщение Stanislavich »

dr.doc писал(а):Так конструкции там должны быть понятны. Например: TCCR0A = (1<<COM0A1|0<<COM0A0|1<<COM0B1|0<<COM0B0|1<<WGM00) - выставляем конфигурацию бит. И далее таким же способом.
Ну допустим. А с помощью какого регистра управлять самим выводом? Изменение OCR0A ни к чему не приводит.
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

А Вы полный комплекс мер из приведенного примера сделали? Если работаете в студии, просмотрите меняется ли TCNT, записаны ли регистры?
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Реклама
Электрический кот
Аватара пользователя
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Сообщение Mishany »

элементарно, см. даташит и настраиваем:
1. выбираем режим fastpwm mode7(см. таблицу 11-5 дтш) либо mode3
2. режим компаратора COM0A1, COM0A0 (B)
3. настраиваем предделитель исходя из нужной длительности импулься для сервы (таблица 11-6) с учетом дальнейшей точной настройки OCR0A(B)
4. играемся со значениями регистра OCR0A (B) и наблюдаем через осциллограф за сигналом, опытным путем находим нужные настройки.
Открыл глаза
Сообщения: 76
Зарегистрирован: Чт ноя 13, 2014 19:37:34

Сообщение Stanislavich »

Проблема была решена сменой FastPWM 7го в таблице на 3й. Также хорошо работает и с phase correct pwm(1 в таблице)
Открыл глаза
Сообщения: 76
Зарегистрирован: Чт ноя 13, 2014 19:37:34

Сообщение Stanislavich »

Окей, новый вопрос: как управлять сервой и с порта OCR0A и с OCR0B?
Электрический кот
Аватара пользователя
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Сообщение Mishany »

найти для начала какой сигнал переваривает серва, и далее пытаться этот сигнал получить на ногах мк, информации по этому полно на просторах
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

как управлять сервой и с порта OCR0A и с OCR0B
Изменять длительность импульса путем изменения чисел, записываемых в OCR0x.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Ответить

Вернуться в «AVR»