Например TDA7294

Форум РадиоКот • Просмотр темы - Проблема с fast-ШИМ в AtmelStudio7
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Пн янв 27, 2020 00:39:47

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Пн ноя 18, 2019 21:25:15 
Родился

Зарегистрирован: Вт июл 15, 2014 13:45:41
Сообщений: 18
Рейтинг сообщения: 0
Здравствуйте! Я начинающий осваивать AVR, прощу помощи разобраться в проблеме с AtmelStudio7.
Потребовалось отследить выполнение программы использующей режим фаст-ШИМ. В частности режим позволяющий изменять длительность и частоту импульсов, что делается при помощи регистров OCR1A и OCR1B.
Отслеживаю строки при помощи F10 или F11. И вдруг заметил, что строка вида
Код:
OCR1B = <переменная типа unsigned int>

не выполняется при пошаговом режиме.
Стал "копать". В компиляторе отключена оптимизация (-O0), debugging на максимуме (-g3). Строка с присваиванием игнорируется.
Создал для применяемого контроллера Attiny44a пустой проект, где происходит только инициализация Т/С1.
Код:
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<WGM11) | (1<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (1<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
TCNT1=0x0000;
ICR1=0x0000;
OCR1A=0x00FF;
OCR1B=0x000B;
...

При пошаговом выполнении присвоение OCR1B не происходит, а присвоение регистру OCR1А происходит с задержкой. Однако, сделал чисто для любопытства так:
Код:
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);

программа стала работать как положено - курсор отладчика стоит на OCR1A, нажимаем F10, присваивается значение; курсор на OCR1B, нажимаем F10, присваивается значение.

Что я делаю на так? Что я недопонимаю в работе контроллера/студии?

Стоит добавить, что код своей программы я 1:1 компилировал также в CVAVR и IAR. Обе прошивки работали в Протеусе. Прошивка созданная в AStudio - в Протеусе не работает должным образом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 04:36:47 
Друг Кота

Карма: 54
Рейтинг сообщений: 724
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 3693
Откуда: Ижевск
Рейтинг сообщения: 0
Вы используете режим FAST PWM, который имеет двойное буферирование. Попробуйте прогнать код полностью до TCNT1=OCR1A=FF. Следующим шагом должны увидеть занесение в OCR1B значения из буфера и сброс TCNT1. Правильнее сначала сделать установки режима работы и только потом делать запуск таймера.
Попробуйте
Код:
TCCR1B=0x00
TCNT1=0x0000;
ICR1=0x0000;
OCR1A=0x00FF;
OCR1B=0x000B;

TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<WGM11) | (1<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (1<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
;TCNT1=0x0000;
;ICR1=0x0000;
;OCR1A=0x00FF;
;OCR1B=0x000B;


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 06:13:58 
Грызет канифоль

Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 268
Рейтинг сообщения: 0
Что я делаю на так? Что я недопонимаю в работе контроллера/студии?

Не читаете ДШ ) Хоть вам уже и ответили, выдержку с ДШ приведу:
Изображение


Вложения:
ocr0x.png [7.38 KiB]
Скачиваний: 279
Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 11:18:31 
Родился

Зарегистрирован: Вт июл 15, 2014 13:45:41
Сообщений: 18
Рейтинг сообщения: 0
Благодарю за ответы!
Действительно, значение регистра OCR1B всё-таки меняется - заметил это когда нажимаю паузу при "кручении" в бесконечном пустом цикле. Точный момент сейчас отслежу.
Значит, чтобы оперативно изменить значение регистров, мне надо остановить счетчик, изменить регистры и запустить счетчик. Попробую.
Но вот что мне не даёт покоя - почему один и тот же код, но скомпилированнный в CVAVR и IAR работает в Протеусе, а скомпилированный в AStudio - нет???
Ещё наткнулся на данном форуме на такую ссылку: https://forum.cxem.net/index.php?/topic ... 1-atmega8/


Вернуться наверх
 
DC/DC-преобразователи: принципы работы и уникальные решения Maxim Integrated

Что нового можно сказать про DC/DC? Написаны десятки статей, а самостоятельное изготовление преобразователя мощностью от единиц Вт до нескольких кВт даже в домашних условиях не составляет большого труда. Тем не менее, когда речь идет о микро-, или даже нано-ваттах, проектировщик может столкнуться с рядом трудностей. Грамотная схемотехника системы питания не возможна без знания основ работы DC/DC преобразователей. Освежить базовые знания и узнать об особенностях проектирования узлов питания мобильного устройства с оптимальным энергопотреблением можно из следующей статьи.

Читать статьи>>
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 11:37:01 
Грызет канифоль

Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 268
Рейтинг сообщения: 0
А что вы имеете в виду под "не работает в Протеусе"? Прям вывод ШИМ не идет или отладка просто не работает? Или еще в чем другом дело?

Кстати,
Цитата:
В компиляторе отключена оптимизация (-O0)

Для отладки лучше включать -Og.

Ну и давайте .elf прикрепляйте, можно будет глянуть что не работает.


Вернуться наверх
 
Руководство для разработчика приложений на базе STM32WB55

Представив двухъядерные беспроводные микроконтроллеры STM32WB для IoT-приложений, компания STMicroelectronics предлагает разработчикам экосистему, включающую в себя отладочные платы, примеры кода для микроконтроллера, готовое ПО всех уровней и большой массив документации.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 11:38:35 
Друг Кота

Карма: 54
Рейтинг сообщений: 724
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 3693
Откуда: Ижевск
Рейтинг сообщения: 0
...Значит, чтобы оперативно изменить значение регистров, мне надо остановить счетчик, изменить регистры и запустить счетчик...
Нет.Смысл буферирования в том, что можно асинхронно менять значения регистров, а выполнение сравнения будет только после завершения предыдущего цикла.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 12:52:12 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 837
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 9983
Откуда: ДОНЕЦК (ЮГО-ВОСТОК ua/DPR)
Рейтинг сообщения: 0
Читаем ограничения в разделе симулятора IDE.
Не знаю, как в 7-ке, а в 4.19 тех ограничений было предостаточно.
8)


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 16:06:02 
Родился

Зарегистрирован: Вт июл 15, 2014 13:45:41
Сообщений: 18
Рейтинг сообщения: 0
Не дают своими интересными делами на работе позаниматься :)))
Да, и правда регистру OCR1B присвоится новое значение, когда счетчик дойдёт до значения в OCR1A. Проинициализировал Т/С1 и куча _NOP() в столбик.
Для отладки буду знать теперь про опцию -Og. Спасибо!
Ну вот не работает в Протеусе :kill: Файл Протеуса прикрепил. Когда джамперы не установлены, то при нажатии на кнопки (можно и длительно) скважность меняется. При установке джампера, код из CVAVR работает, ШИМ выдается с другой частотой и скважностью. Из AS7 - нет, просто единица на выходе.
Протеус у меня версии 8.4, а CVAVR 3.10.


Вложения:
прицеп.zip [152.08 KiB]
Скачиваний: 57
Вернуться наверх
 
Распродажа паяльных станций ATTEN и аксессуаров!
Индукционная паяльная станция AT315D - 3 977 ₽, станция паяльная AT80D – 2177 ₽, станция паяльная AT936b – 1000 ₽!

Заходите в раздел акции и спецпредложения на сайте prist.ru, покупайте измерительные приборы, инструмент и паяльно-ремонтное оборудование по специальным ценам.
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 18:06:26 
Вымогатель припоя

Карма: 10
Рейтинг сообщений: 70
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 559
Рейтинг сообщения: 0
Не проще было код привести?

Полагаю, код был написан под CVAVR, вы его переделываете под AS7.

Строка temp = MaxValueSquare[_LightLevel-1] (читаем из флеш памяти) справедлива для CVAVR, но не для AS7.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 19:46:25 
Родился

Зарегистрирован: Вт июл 15, 2014 13:45:41
Сообщений: 18
Рейтинг сообщения: 0
Dimon456 писал(а):
Не проще было код привести?

Полагаю, код был написан под CVAVR, вы его переделываете под AS7.

Строка temp = MaxValueSquare[_LightLevel-1] (читаем из флеш памяти) справедлива для CVAVR, но не для AS7.

Без проблем код привести, лучше даже проект целиком приведу.
Совершенно верно - писал на CVAVR, потом перенес на AS и на IAR. Ну чисто так, сравнить hex по размеру, и для освоения.
А как следует правильно сделать?
А как Вы прочитали из флеш памяти? Подскажите, где подробнее посмотреть про отладку, .elf и .cof файлы.
Немного поясню суть своего изделия. Оно управляет яркостью светодиодной линейки посредством ШИМ. Одна кнопка - шажок вверх, другая - шажок вниз. Можно и длительное нажатие - будет постепенно увеличиваться и уменьшаться. А можно и энкодер подвесить и ручкой крутить яркость. Но это про управление. Суть в том, что линейно управлять ШИМом, а вернее коэф.заполнения от 1/255 до 254/255 не айс. Так глаз устроен и вообще органы восприятия человека - закон Вебера-Фехнера. Поиск как правильно надо, дал три варианта ответа - по квадратичной кривой, по кубической и по показательной (обратно логарифмической). Коэф.заполнения будет формироваться как отношение OCR1B/OCR1A, значение которого будет максимально приближенно по значению к кривой регулирования в данной точке. Сто шагов яркости, соответственно рассчитаны два массива значений. А джампером выбираем одну из кривых. Правда я сам ещё одну сообразил (показательная с другим множителем). Так что четыре кривых. А если джампер не стоит, то линейная зависимость. Вот и вся суть кода. Берём значения соответствующие уровню яркости из массива, да суём в регистры. А контроллер сам аппаратно ножкой дрыгает.
Заранее извиняюсь за возможное нехорошее качество кода :)) Всё же учусь, да и мне пока так понятнее. Но выслушаю все замечания и поучения как надо правильно :)

Добавлено after 1 minute 27 seconds:
Читаем ограничения в разделе симулятора IDE.
Не знаю, как в 7-ке, а в 4.19 тех ограничений было предостаточно.
8)

Подскажите где посмотреть, ну чтобы на русском желательно :)


Вложения:
Комментарий к файлу: Проект в CVAVR.
CVAVR.zip [89.89 KiB]
Скачиваний: 63
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 19:56:58 
Грызет канифоль

Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 268
Рейтинг сообщения: 0
CVAVR, GCC, IAR - у всех свои нюансы. Проект без модификации не переносится. Разные библиотеки, разные заголовки, разные подходы.

EDIT: Без модификаций странно как он вообще собирается у вас.
Да и не могло собраться ведь. Вот хотя бы из-за этого:
Код:
interrupt [TIM0_OVF] void timer0_ovf_isr(void)

Прерывания не так в avr-gcc прописываются.


Последний раз редактировалось NStorm Вт ноя 19, 2019 20:03:18, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 19:59:31 
Вымогатель припоя

Карма: 10
Рейтинг сообщений: 70
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 559
Рейтинг сообщения: 0
Electro_Alex писал(а):
Подскажите где посмотреть, ну чтобы на русском желательно
К примеру здесь


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 20:04:39 
Грызет канифоль

Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 268
Рейтинг сообщения: 0
А, понял. Вы в AS используете CVAVR в кач-ве тулчейна. Я даже не знал, что оно CVAVR как тулчейн может использовать. Только с avr-gcc имел дело. Вполне возможно бага/ограничение интеграции тулчейна в AS какое-то.

Dimon456, по файлам проекта там в Atmel Studio подрублен именно CVAVR проект, с использованием его тулчейна, а не GCC. Так что PROGMEM тут не нужен.



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 20:14:43 
Родился

Зарегистрирован: Вт июл 15, 2014 13:45:41
Сообщений: 18
Рейтинг сообщения: 0
CVAVR, GCC, IAR - у всех свои нюансы. Проект без модификации не переносится. Разные библиотеки, разные заголовки, разные подходы.

:)) Ну естественно не абсолютно одинаковы они. Изменены были #include и пути к библиотекам, функции обработки прерываний по-другому названы, всякие sei написаны как требуется в среде и т.п. Поэтому и собралось :) Просто вся, скажем так сишная логика не менялась.
Dimon456 писал(а):
Electro_Alex писал(а):
Подскажите где посмотреть, ну чтобы на русском желательно
К примеру здесь

Благодарю! Ознакомлюсь.

Добавлено after 4 minutes 24 seconds:
А, понял. Вы в AS используете CVAVR в кач-ве тулчейна. Я даже не знал, что оно CVAVR как тулчейн может использовать.

Не понял про что Вы :shock: Я сделал примитивно. Написал в CVAVR, скомпилилось. Затем тупо Ctrl+C, Ctrl+V в среде AS7. Ну и подправил там инклуды, заголовки функций для обработки прерываний,...
Могу ещё IAR-овский исходник скинуть и AStudio, чтоб полная картина была...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 20:17:32 
Грызет канифоль

Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 268
Рейтинг сообщения: 0
В последнем приложенном вами файле с проектом AS там явно код чисто CVAVR и в настройках тулчейн стоит CVAVR.
Если делали под avr-gcc - дайте код в этом варианте, у вас же там проблема. Может что при портировании забыли. Помимо флэша/PROGMEM, там еще доступ к EEPROM, к примеру разный (ну это к слову).
Кстати, в avr-gcc, помимо PROGMEM, хранение переменных во флэше давно реализовано более удобно, через named address spaces: https://gcc.gnu.org/onlinedocs/gcc-6.1. ... paces.html
Почти аналогично CVAVR в общем-то.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 20:35:10 
Родился

Зарегистрирован: Вт июл 15, 2014 13:45:41
Сообщений: 18
Рейтинг сообщения: 0
К примеру здесь

Так это Вы про то, как размещать во флеше константы. А я подумал, что Вы как-то из приведенной ранее прошивки (которая во флеш пишется) и .elf файла исходник восстановили :))
Всё равно спасибо! Я уже так делал - размещал константы во флеш, когда часики на ИВ-4 делал, чтоб буквы там отображались, цифры. Работает.
NStorm писал(а):
В последнем приложенном вами файле с проектом AS там явно код чисто CVAVR и в настройках тулчейн стоит CVAVR.

Эммм... Я ж говорю, просто текст из CVAVR скопипастил в AS. Ну и косметика навёл.
Привожу все три варианта проектов. IAR у меня 7.20.1, а проекты AS - начинал в AS6.2, да поставил AS7, она и конвертнула в свой формат.


Вложения:
LightRegulator.zip [503.95 KiB]
Скачиваний: 72
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 21:04:36 
Вымогатель припоя

Карма: 10
Рейтинг сообщений: 70
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 559
Рейтинг сообщения: 0
Electro_Alex писал(а):
Я ж говорю, просто текст из CVAVR скопипастил в AS.
Еще раз
Dimon456 писал(а):
Строка temp = MaxValueSquare[_LightLevel-1] (читаем из флеш памяти) справедлива для CVAVR, но не для AS7.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 21:40:50 
Родился

Зарегистрирован: Вт июл 15, 2014 13:45:41
Сообщений: 18
Рейтинг сообщения: 0
Строка temp = MaxValueSquare[_LightLevel-1] (читаем из флеш памяти) справедлива для CVAVR, но не для AS7.

Кажется я Вас понял! :) В AS7 следует писать
Код:
temp = pgm_read_word(&MaxValueSquare[_LightLevel-1]);
Или не прав я?

Добавлено after 3 minutes 32 seconds:
Блииин! :o А ведь правда! Глянул исходник проекта часиков... присваивал там я через pgm_read_byte(&segm_a[i]). Вот жешь :facepalm:
Завтра на работе попробую.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 22:04:13 
Грызет канифоль

Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 268
Рейтинг сообщения: 0
Эммм... Я ж говорю, просто текст из CVAVR скопипастил в AS. Ну и косметика навёл.
Привожу все три варианта проектов. IAR у меня 7.20.1, а проекты AS - начинал в AS6.2, да поставил AS7, она и конвертнула в свой формат.

Вот сейчас вижу:
<ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
А прошлый проект, что вы выкладывали, он тоже в AS был сделан. Только тулчейном (компилятор+линковщик и т.д.) там стоял CVAVR. Т.е. код редактировать можно было в студии, но компилировался он с помощью CVAVR.

И я вам ссылочку давал. Чтобы не писать pgm_read... каждый раз, можно в объявлении массивов вместо PROGMEM написать __flash.
const __flash unsigned char LimitValueLog_6[] = { ... };


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема с fast-ШИМ в AtmelStudio7
СообщениеДобавлено: Вт ноя 19, 2019 22:24:05 
Родился

Зарегистрирован: Вт июл 15, 2014 13:45:41
Сообщений: 18
Рейтинг сообщения: 0
Я знал про возможность писать код в AS, а компилился чтобы в CVAVR. Пробовал так в 6.2 - при создании нового проекта, студия спрашивала про тип проекта: GCC C Executable Project, GCC C Static Library Progect, ... , CVAVR Project. Попробовал CVAVR тулчейн - при компиляции CVAVR спросил лицензионный ключик :))) Оказалось кряк для CVAVR с графической частью, а кряка для CVAVR с командной строкой (а как раз его и вызывает AS) нету. Да и забил.
AS7 уже не предлагает CVAVR тулчейн, вместо него ардуина.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  1,  

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


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

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y