Tiny861 PWM6 mode С Тактированием От Фапч 64Мгц

AVR версия программы

Tiny861 PWM6 mode С Тактированием От Фапч 64Мгц

Сообщение Vovan_G5 (Владимир) » 16 май 2016, 23:36

Решил поразвлекаться с тинькой 861. В финале хочу разобраться с фишкой motor control.
Пока туплю на инициализации, пока надо запустить режим 6 шимов с тактированием от PLL
не запускаются шимы.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Vovan_G5
Имя: Владимир
(Харьков)
Консультант
Консультант
Информация о пользователе

Re: Tiny861 PWM6 mode С Тактированием От Фапч 64Мгц

Сообщение Yushik (Андрей) » 17 май 2016, 19:29

В даташите написано что каналов ШИМ всего три (но как я понял они с прямыми и инверсными выходами). Хотя в этом же даташите указано что регистров на ШИМ четыре. Мой фловкоде 5.5.2.1 АВР показывает всего два канала ШИМ. Если в твоём фловкоде также, может здесь кроится бяка которая заставляет неправильно работать компилятор.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Yushik
Имя: Андрей
(Симферополь)
Разработчик
Разработчик
Информация о пользователе

Re: Tiny861 PWM6 mode С Тактированием От Фапч 64Мгц

Сообщение Vovan_G5 (Владимир) » 17 май 2016, 21:39

Я в этом проекте не пользуюсь макросами фловокода для шимов, поэтому мне все равно, что там написано.
Кстати ошибки в файле ATTINY861.fcd есть, но я не силен в его исправлении, так поправил несуществующий регистр TIMSK0 на TIMSK, чтоб таймера запускались, но в timer0 прескалер не работает
С простым шимом с прямым и инверсным выходом и dead time проблем не возникло, синусоиду крутит хорошо, тактирование от Фапч получилось
Но режим PWM6 пока не запустил.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Vovan_G5
Имя: Владимир
(Харьков)
Консультант
Консультант
Информация о пользователе
Вернуться наверх

Re: Tiny861 PWM6 mode С Тактированием От Фапч 64Мгц

Сообщение Vovan_G5 (Владимир) » 18 май 2016, 15:05

Вроде рыба получилось, осталось добавить пару таблиц синусов со смещением в 120 градусов
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Vovan_G5
Имя: Владимир
(Харьков)
Консультант
Консультант
Информация о пользователе
Вернуться наверх

Re: Tiny861 PWM6 mode С Тактированием От Фапч 64Мгц

Сообщение mim (mim) » 19 май 2016, 08:23

PLLCSR |= (1<<PLOCK); - это PLOCK: PLL Lock Detector - обнаружение запуска PLL. Этот бит только для чтения...
Правильно написать
Код: выделить все
while ((PLLCSR & 1)==0); // Wait for the PLL to lock
или
Код: выделить все
while ((PLLCSR & (1<<PLOCK))==0); // Wait for the PLL to lock

Vovan_G5 писал(а):осталось добавить пару таблиц синусов со смещением в 120 градусов
Смещение делается добавлением сдвига фазы, а не дополнительной таблицей (указывается значение индекса массива соответствующее значению из таблицы амплитуд)... таблица одна, посмотри внимательно мои примеры на старом форуме....
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Tiny861 PWM6 mode С Тактированием От Фапч 64Мгц

Сообщение Taska (Максим) » 19 май 2016, 10:56

Вот как то так с одно таблицой
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Tiny861 PWM6 mode С Тактированием От Фапч 64Мгц

Сообщение mim (mim) » 19 май 2016, 11:24

Угу... А можешь объяснить как получил начальные значения индекса? ;)
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Tiny861 PWM6 mode С Тактированием От Фапч 64Мгц

Сообщение Taska (Максим) » 19 май 2016, 12:26

Фазы сдвинуты относительно друг друга на 120градусов.
Выборку по маске 63, значит 63/3=21, т.е. выборка для фазы В будет сдвинута на 21, а для фазы С на 42, относительно фазы А.
Далее при занесении в регистры шима мы делим на 256. соответственно 21*256= 5376, 42*256=10752
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Tiny861 PWM6 mode С Тактированием От Фапч 64Мгц

Сообщение mim (mim) » 19 май 2016, 12:42

Ход мыслей правильный, но я пожалуй добавлю более точную математику...
Для данной реализации применяется Аккумулятор (3FFF) 14 разрядов (емкость 16383 единицы). Таким образом, 16383/3=5461.
5461 - смещение одной фазы, 5461*2=10922 - смещение второй фазы...

Проверочный вариант (он же "твой" - уточненный) Размер массива 64 значения (не 63, выбор по маске от 0 до 63 - это значит 64). Значит 64/3=21,33... Учитывать именно с дробным значение.
Далее все верно 21,33*256=5461 (5461,33) и 42,66*256=10922 (10922,66) (здесь берем только целые).
Вот теперь мы получили точные и математически правильные расчеты... Оба варианта имеют одинаковые значения...
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Tiny861 PWM6 mode С Тактированием От Фапч 64Мгц

Сообщение Vovan_G5 (Владимир) » 19 май 2016, 12:55

Исправляюсь, спасибо, Мим за мысли
mim писал(а):PLLCSR |= (1<<PLOCK); - это PLOCK: PLL Lock Detector - обнаружение запуска PLL. Этот бит только для чтения...


Это все протеус позволяет такие ляпы делать, если эту строку убрать и даже без паузы в 100мкс - в протеуле все работает

mim писал(а):Смещение делается добавлением сдвига фазы, а не дополнительной таблицей (указывается значение индекса массива соответствующее значению из таблицы амплитуд)... таблица одна, посмотри внимательно мои примеры на старом форуме....

Дошло, что надо 65535 поделить на 3
п.с. Сейчас почитаю, что вы мне еще написали и переварю, но у меня есть теперь вопросы практического характера, если у меня дойдет до железа
1 - убирать зи 3-ю гармонику?
2- может тупой вопрос, при уменьшении частоты надо ли уменьшать амплитуду значений шима?
3- если надо уменьшать, то в какой момент периода или неважно?
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Vovan_G5
Имя: Владимир
(Харьков)
Консультант
Консультант
Информация о пользователе
Вернуться наверх

След.

Вернуться в Flowcode AVR

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей