AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Батон Изюмыч
Родился
Сообщения: 17
Зарегистрирован: Пт янв 17, 2025 21:34:16

Re: AVR studio в вопросах и ответах

Сообщение Батон Изюмыч »

[uquote="shonty",url="/forum/viewtopic.php?p=4672911#p4672911"]
Батон Изюмыч писал(а):Но при отладке по наступлении совпадения регистров, отладчик почему-то не делает переход на обработчик прерывания.
Вы вектора прерывания настраивали?
Батон Изюмыч писал(а):А старое ПО или не найти, или оно не ставится на современный Windows.
На Win11 стоит студия 4.19 (2011 года) вроде свободно находится она.

Добавлено after 5 minutes 41 second:
https://www.mcu4you.ru/avr-studio-4-19/

сразу нашлось[/uquote]

Все выходные крутил и так и эдак. Уже и ассемблер вспомнил. ))) Пока у меня нет под руками программатора, приходится пытаться понять в Симуляции.
Если я Вас правильно понял - да, все разрешения прерываний я включаю в нужных регистрах. Обработчики прерываний я тоже прописываю.

Смысл такой. Хочется иметь выходной сигнал, в котором можно задавать длительность импульса и длительность паузы. Причем они кратны т.е. И/П от 1:1 до 1:30.

Таймер запускаем в режиме сравнения с изменением сигнала на ножке OC1A на противоположный при каждом совпадении таймера с OCR1A или ICR1. С кем сравнивать в следующем цикле выбираем в соответствующем прерывании. Т.е. прерывание по совпадению с OCR1A меняет регистр TCCR1B так, чтобы в следующем цикле было сравнение с ICR1, в прерывании которого мы меняем TCCR1B так, что следующее снова по OCR1A и так по кругу.

Согласно Даташиту это должно работать. Но в симуляции это не работает. Сначала по причине особенно умного компилятора, который обработчики прерываний не посчитал нужным добавлять в результирующий код. Потом, когда обработчик "поднастроил", симуляция подкинула вопросов. Почему-то Протеус пока солидарен при симуляции с ATMELStudio. Вероятно компилятор надо ещё крутить? попутно разбираясь в дизассемблере.

Я пробовал ставить какую-то студию 4 версии. Там был косяк при пошаговой отладке. После случайного количества шагов, т.е. каждый раз в разном месте, симуляция переходила сама по себе в автоматический режим, как будто я нажал F5... НО! После остановки по Ctrl+F5 счётчик тактов не был увеличен, т.е. симуляция не шла. Сначала я какое-то время нажимал Ctrl+F5, а потом меня это достало, и я стал искать какую-то другую версию. В 7 версии этого глюка не было. Но как оказалось есть другие. ))))

Теперь понятно, почему так много народа предпочитающего писать на ассемблере. Проще раз в логику погрузиться, чем пытаться отловить свои ошибки среди стада чужих косяков.
akl писал(а):Замечу, студия не полностью адекватно справляется с режимами работы таймера. Например, игнорирует режим 12 CTC ICR1.Так что только проверка в железе.
Starichok51 писал(а):причем, не только режим 12, и несколько других. зато Протеус правильно симулирует все режимы.
Эх, знать бы это сразу. Не пришлось бы несколько дней подряд доводить себя до депрессии подозрениями в собственном недостатке ума. )))

Остаётся ждать программатор и проверять в железе.

Всем спасибо за участие!

Добавлено after 7 minutes 54 seconds:
P.S. Если уходить куда-нибудь на STM32, там подобные проблемы, или есть более менее нормальная среда, где можно работать не натыкаясь на такое вот? Нынче ценник практически не различим, можно было бы попробовать.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: AVR studio в вопросах и ответах

Сообщение akl »

[uquote="Батон Изюмыч",url="/forum/viewtopic.php?p=4673524#p4673524"]... Хочется иметь выходной сигнал, в котором можно задавать длительность импульса и длительность паузы. Причем они кратны т.е. И/П от 1:1 до 1:30...[/uquote]Решается аппаратными возможностями таймера 1 без прерываний. При тактовой частоте 10МГц длительность импульса 0,1...6553,4 мкс, период 0,2...6553,5 мкс
Добавлю, чтобы не быть голословным.
https://radiokot.ru/forum/viewtopic.php ... 2#p3147192
Последний раз редактировалось akl Вт янв 21, 2025 04:00:22, всего редактировалось 1 раз.
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: AVR studio в вопросах и ответах

Сообщение Just_Fluffy »

Батон Изюмыч, ИМХО, ассемблер нужен только для особо критичных участков кода, когда необходимо, например, соблюсти четкие тайминги. В остальных случаях хватает ЯВУ.
(любителей холивара прошу не возбуждаться - это мое ЛИЧНОЕ мненеие).
Отладка в студии достаточно грустная бывает, АВРки проще отлаживать на макетке.

Касательно прерываний в режиме СТС. В некоторых АВРках (кажется, в мега8), когда ТОР счета не определен режимом, а задается в регистрах OCR1A/ICR1, по достижению верхнего значения генерируется не прерывание сравнения, а прерывание переполнения - OVF.

Запустите в отладчике свою программу, дождтитесь, когда счетчик достчитает до ТОР и обнулится - и посмотрите регистр флагов TIFR - какой там флаг поднялся. Вполне вероятно, что там будет не OCF1A/ICF1, а TOV1.

Вроде это где то в Евстифееве описано было, или в Белове. Но это было очень давно и я уже не помню, где я это читала.

--
Касательно STM32
СпойлерSTM32 - по уровню вхождения несколько более тяжелый МК, больший объем документации, меньше русскоязычной.
Но из плюсов после СТМ - памяти в разы больше. Скорости выше. Периферия более развесистая и богатая. Минус - нет ЕЕПРОМки.
И самый главный плюс - есть бесплатная среда разработки от ST на базе Эклипса - и в ней есть полноценная железная отладка, которая позволит заглянуть в любое место флеша, ОЗУ, периферии и даже их поменять - и это ценой 2-долларового ST-Link'а.
(Но это уже оффтоп для данной темы и с данным вопросом лучше в другую ветку форума)
Белая и Пушистая
Бубоник
Мучитель микросхем
Сообщения: 449
Зарегистрирован: Вс авг 16, 2015 13:08:53

Re: AVR studio в вопросах и ответах

Сообщение Бубоник »

Just_Fluffy писал(а):Минус - нет ЕЕПРОМки
Не пугай котов! :)) STM-ке он не нужен.
OKF
Это не хвост, это антенна
Сообщения: 1389
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: AVR studio в вопросах и ответах

Сообщение OKF »

[uquote="akl",url="/forum/viewtopic.php?p=4673590#p4673590"]Решается аппаратными возможностями таймера 1...[/uquote]
... с любыми соотношениями высокий/низкий. И даже компилятор танцору не мешает.)
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: AVR studio в вопросах и ответах

Сообщение Just_Fluffy »

Бубоник писал(а):Не пугай котов! STM-ке он не нужен.
Ну вот крутили мы с коллегой F411CE (128/512)
и там флеш - сначала 4 блока по 16к, потом блок 64к и далее три блока по 128к.
И как на таком конском блоке имитировать оргазм ЕЕПРОМ ?
Белая и Пушистая
Adrift
Вымогатель припоя
Сообщения: 540
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: AVR studio в вопросах и ответах

Сообщение Adrift »

[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4673721#p4673721"]И как на таком конском блоке имитировать оргазм ЕЕПРОМ ?[/uquote]
ST в AN3969 предлагает использовать последние два сектора на 16КБ... А вообще F1 и F4 - это же одни из первых серий, там старая периферия и размашистые Errata, я от такого давно избавился ) С другой стороны прыгать сразу на G4/H5 человеку который не может на AVR таймер запустить явно не стоит, максимум какой-нибудь мелконогий STM32G071 с секторами по 2КБ.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: AVR studio в вопросах и ответах

Сообщение akl »

[uquote="OKF",url="/forum/viewtopic.php?p=4673663#p4673663"]... с любыми соотношениями высокий/низкий. И даже компилятор танцору не мешает.)[/uquote]Бред! Привычка на ходу придумывать термины, характеризующие параметры импульсов? Поэтому
akl писал(а):...длительность импульса 0,1...6553,4 мкс, период 0,2...6553,5 мкс
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: AVR studio в вопросах и ответах

Сообщение Jack_A »

А что крамольного в этих параметрах? Период, длительность - базовые понятия в импульсной технике. А "соотношения высокий/низкий" - может, слегка коряво, но вплне понятно: скважность (коэффициент заполнения) .
Изображение
Батон Изюмыч
Родился
Сообщения: 17
Зарегистрирован: Пт янв 17, 2025 21:34:16

Re: AVR studio в вопросах и ответах

Сообщение Батон Изюмыч »

[uquote="akl",url="/forum/viewtopic.php?p=4673590#p4673590"]Добавлю, чтобы не быть голословным.
https://radiokot.ru/forum/viewtopic.php ... 2#p3147192[/uquote]
Благодарю, обязательно изучу! Это прямо даже больше чем мне надо.
Just_Fluffy писал(а):Батон Изюмыч, ИМХО, ассемблер нужен только для особо критичных участков кода, когда необходимо, например, соблюсти четкие тайминги. В остальных случаях хватает ЯВУ.
Мне сейчас просто помогает понять попадают или не попадают конкретные функции в конечную прошивку. А они при некоторых настройках вполне конкретно не попадают, судя по тому, что я вижу в дизассемблере.
Я думал придётся долго курить Даташит на Мегу8, а вместо этого я курю форумы по глюкам IDE разных версий.
Just_Fluffy писал(а):Отладка в студии достаточно грустная бывает, АВРки проще отлаживать на макетке.
Вот я к этому и пришёл. Думаю придёт программатор и всё наладится у меня.
Just_Fluffy писал(а):Запустите в отладчике свою программу, дождтитесь, когда счетчик достчитает до ТОР и обнулится - и посмотрите регистр флагов TIFR - какой там флаг поднялся. Вполне вероятно, что там будет не OCF1A/ICF1, а TOV1.
Я проверял, поднимаются нужные флаги, но перехода почему-то нет. А в Proteus'e другой момент вылез для меня не понятный. Т.к. перехода на обработчик прерывания не происходит, то поднятые флаги остаются поднятыми до конца. Я решил добавить в основном цикле сброс типа "TIFR=0", Proteus шаг за шагом исполняет код, делает вид что исполняет это обнуление, но в WatchWindow у TIFR состояние остаётся не сброшено. :shock: Возможно это от того, что качаю программы откуда попало (откуда могу). Может в них кто поковырялся на предмет подселения вирусов и у них мозги съехали... ХЗ.
--
Just_Fluffy писал(а):Касательно STM32
СпойлерSTM32 - по уровню вхождения несколько более тяжелый МК, больший объем документации, меньше русскоязычной.
Но из плюсов после СТМ - памяти в разы больше. Скорости выше. Периферия более развесистая и богатая. Минус - нет ЕЕПРОМки.
И самый главный плюс - есть бесплатная среда разработки от ST на базе Эклипса - и в ней есть полноценная железная отладка, которая позволит заглянуть в любое место флеша, ОЗУ, периферии и даже их поменять - и это ценой 2-долларового ST-Link'а.
(Но это уже оффтоп для данной темы и с данным вопросом лучше в другую ветку форума)
Прежде чем начинать заново изучать AVR я слегка ознакомился с архитектурой СТМ в даташите. Архитектура прямо сказать более богатая, при соизмеримых ценах. В сторону ATMega склонился лишь от того, что в заначке лежит пяток чипов, которых хочется применить.
OKF писал(а):И даже компилятор танцору не мешает.)
В свое время я перешел на инженерную работу где мне пришлось учиться работать с SolidWorks. Там своих тонкостей конечно масса, но тогда я "танцевать" начал уже на 3ий день после начала установки ПО. Сейчас я никак не могу понять, почему вместо паркета в танцевальном зале наждак, пол кривой и в нём посередине люстра снизу вверх. Ну так, если как вы, метафорически.
Adrift писал(а):человеку который не может на AVR таймер запустить явно не стоит, максимум какой-нибудь мелконогий STM32G071 с секторами по 2КБ.
Простите, понесло на метафоры. Представьте, вы учитесь водить машину. Давите на газ как Вас учили в инструкции к машине, а машина ехать не хочет. И Вам все говорят, что значит вы не правильно давили, и вы пробуете разные варианты, даже идиотские, но ничего не выходит. А вы уже и правой ногой давили, и левой, и двумя руками, и ручник проверили и даже по колесу постучали, на всякий случай, а вдруг. А потом оказывается, что у Вас педаль газа не соединена с мотором, т.к. рабочий завода забыл тросик присоединить.
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: AVR studio в вопросах и ответах

Сообщение Just_Fluffy »

Adrift писал(а):ST в AN3969 предлагает использовать последние два сектора на 16КБ...
Вот в том то и проблема, что у 411 последние 2 сектора не по 16к, а по 128....
Батон Изюмыч писал(а):Я решил добавить в основном цикле сброс типа "TIFR=0", Proteus шаг за шагом исполняет код, делает вид что исполняет это обнуление, но в WatchWindow у TIFR состояние остаётся не сброшено
А даташит читать пробовали?
Эти флаги сбрасываются записью в них единички. TIFR |= _BV(OCF1A)

Вообще, если уже так тяжело с изучением МК, начните кушать слоника частями, сначада х..обот, потом ухи...

Запустите таймер в режиме 0, убедитесь, что он считает.
Далее, сделайте три обработчика прерывания - по обоим каналам сравнения и по переполнению.
Разрешите все три прерывания в TIMSK, не забудьте выполнить SEI.
В регистры сравнения что то запишите, лучше разное, что б прерывания возникали в разное время.
В обработчиках прерываний переключайте состояние каких то битов порта .. PORTB ^= _BV(PORB1). Для каждого прерывания свой бит.

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

Вообще, прерывания таймера - достаточно простая штука в АВРках..
Главное помнить, что если из прерывания модифицируются какие то внешние переменные (флаги), то их надо волатильными объявлять.

Было бы неплохо эти эксперименты делать в железе. Но на худой конец протеус или встроенный отладчик подойдут.
Белая и Пушистая
Adrift
Вымогатель припоя
Сообщения: 540
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: AVR studio в вопросах и ответах

Сообщение Adrift »

[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4674081#p4674081"]Вот в том то и проблема, что у 411 последние 2 сектора не по 16к, а по 128....[/uquote]
Имелись в виду последние 2 сектора на 16К, из первых четырех. Ну да, оно не удобно, однако это старые F4 так отличились, у остальных мк сектора максимум по 8К, у более простых C0/G0/G4 - по 2КБ. И еще наметилась тенденция делать часть флеша с ресурсом 100К(H5), у U5 может даже весь флеш таким быть, для U3 тоже обещают 100К.
Батон Изюмыч
Родился
Сообщения: 17
Зарегистрирован: Пт янв 17, 2025 21:34:16

Re: AVR studio в вопросах и ответах

Сообщение Батон Изюмыч »

akl, Я решил свою задачу через FastPWM. Когда по диагонали читал Даташит, мне показалось, что этот режим мне не подойдёт, всю дорогу думал что у него TOP с завода задан константами по WGM. Оказалось его можно в свободной форме задавать. Сосредоточился на других режимах и потерял время. Спасибо, что дали пинка, он мне явно был очень нужен.

Одно только я так и не смог понять, как вы смогли достичь длительности импульса 0,1мкс при периоде 0,2мкс при тактовой частоте 10МГц. Это считай два такта счёта счетчика, а для FastPWM ограничение значения TOP согласно даташита - 2бита. (The minimum resolution allowed is 2-bit (ICR1 or OCR1A set to 0x0003), and the maximum resolution is 16-bit (ICR1 or OCR1A set to MAX) Стр.88 Даташита. Или я не правильно это себе представляю?
Just_Fluffy писал(а):А даташит читать пробовали?
Эти флаги сбрасываются записью в них единички. TIFR |= _BV(OCF1A)
Я в курсе инверсии у флагов. Тут принципиально было пишется или нет - в симуляторе почему-то не пишется.
Just_Fluffy писал(а):Когда добьетесь, что прерывания работают - пробуйте статично инициализировать таймер другими режимами и смотрите , что получается.


По частям и кушаю. Но что-то с прерываниями совсем затык. В некоторых вариантах указатель перескакивает в обработчик (смотрю в дизассемблере), но проходя по командам регистры почему-то не меняются.

Вот даже сейчас у меня без всяких прерываний в main присваиваются значения регистрам ICR1 и OCR1A двумя последовательными командами. В симуляторе ATMELStudio в регистре ICR1 значение появляется сразу, а в OCR1A оно появляется, когда уже счётчик два раза через TOP прошел, а программа давно в while(1) крутится. При том, что и в дизасме эти команды тоже конкретно по порядку шли, как и в СИ. И ATMELStudio по ним курсором проходит изображая деятельность, типа всё в порядке. Только в окне I/O в одном регистре все ОК а в другом пусто. ХЗ.

При теперешней реализации генератора прерывания мне не очень-то и нужны. Но хочется разобраться. Устал воевать с Симулятором, теперь уже подожду возможность проверять в железе (в четверг должно с программатором срастись), и тогда снова приступлю к этому вопросу.
Just_Fluffy писал(а):Главное помнить, что если из прерывания модифицируются какие то внешние переменные (флаги), то их надо волатильными объявлять.
Об этом я уже тоже начитан. В том коде, с которого начался мой вопрос уже так и было сделано сразу.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: AVR studio в вопросах и ответах

Сообщение akl »

[uquote="Батон Изюмыч",url="/forum/viewtopic.php?p=4674093#p4674093"]...Одно только я так и не смог понять, как вы смогли достичь длительности импульса 0,1мкс при периоде 0,2мкс при тактовой частоте 10МГц. Это считай два такта счёта счетчика, а для FastPWM ограничение значения TOP согласно даташита - 2бита. (The minimum resolution allowed is 2-bit (ICR1 or OCR1A set to 0x0003), and the maximum resolution is 16-bit (ICR1 or OCR1A set to MAX) Стр.88 Даташита. Или я не правильно это себе представляю?[/uquote]У меня нет под рукой DS mega8. :dont_know: На макетке с tiny2313a тактируемой от кварца 20МГц загрузил нижеследующую программу и получил как и предполагал положительный импульс длительностью 0,05 мкс и периодом 0,1 мкс (закомментировано) или 0,5 мкс (чтобы различить положительный импульс длительностью 0,05 мкс. На меандре это непонятно.)
IMP_PWM.zip
(1000 байт) 111 скачиваний
Кстати, студия спасовала перед режимом 15.
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: AVR studio в вопросах и ответах

Сообщение Just_Fluffy »

Батон Изюмыч писал(а): В симуляторе ATMELStudio в регистре ICR1 значение появляется сразу, а в OCR1A оно появляется, когда уже счётчик два раза через TOP прошел
В некоторых режимах значения регистров сравнения при присвоении кешируются в теневые регистры. И обновляются на следующем цикле счетчика.

Попробуйте на чистом асме нарисовать инициализацию таймера, его прерываний, нарисуйте обработчики прерывания таймера, что б они что то в порту инвертировали, например. Что б исключить компилятор Си.
И проверьте в в отладчике ассемблерный код прошагать.
Белая и Пушистая
Батон Изюмыч
Родился
Сообщения: 17
Зарегистрирован: Пт янв 17, 2025 21:34:16

Re: AVR studio в вопросах и ответах

Сообщение Батон Изюмыч »

Just_Fluffy писал(а):В некоторых режимах значения регистров сравнения при присвоении кешируются в теневые регистры. И обновляются на следующем цикле счетчика.
Я в курсе этого, но честно сказать, не сообразил проверить. Не обновляется как раз один из тех регистров, что в некоторых режимах буферизуются. Посмотрю. Спасибо!
Anatol48
Родился
Сообщения: 5
Зарегистрирован: Ср янв 22, 2025 16:42:26

Re: AVR studio в вопросах и ответах

Сообщение Anatol48 »

Здравствуйте, может у кого-то завалялся уствновочный файл AT89LP developer studio? Нигде не могу найти =(
bgan
Родился
Сообщения: 2
Зарегистрирован: Вс фев 09, 2020 13:58:09
Откуда: Майкоп Россия

Re: AVR studio в вопросах и ответах

Сообщение bgan »

Всем привет.Прошу помощи у участников форума.В своём проекте хочу использовать для микроконтроллера стороний загрузчик.Нашёл в сети открытый проект:
https://github.com/hexagon5un/fastboot- ... of-content.
Настроил под свой контроллер.Но компилятор выдаёт ошибки.Система - Win7x64, AVR Studio 4.18SP3, WinAVR 20100110.Что-то я делаю не так? Прошу наставить на путь истины.
Вложения
project.png
(213.6 КБ) 113 скачиваний
bgan
Родился
Сообщения: 2
Зарегистрирован: Вс фев 09, 2020 13:58:09
Откуда: Майкоп Россия

Re: AVR studio в вопросах и ответах

Сообщение bgan »

Вопрос в теме закрываю. Ответ нашёлся на просторах интернета. Всем удачи.
Аватара пользователя
Dm7203
Сверлит текстолит когтями
Сообщения: 1280
Зарегистрирован: Чт апр 05, 2012 09:49:44

Re: AVR studio в вопросах и ответах

Сообщение Dm7203 »

Доброго времени суток.
Пишу код для вывода текста на символьный ЖК дисплей.
Создал некоторую функцию void LCD_string(char[]);. Вызываю LCD_string("TEXT123");.
С латинскими буквами и цифрами все гуд, но хотелось бы еще выводить и кириллицу.
Но тут загвоздка, в Atmel studio символы как я понял задаются в кодировка ASCII и там естественно русских букв нет и если ввести символы кириллицы в функцию как есть то получается ерунда в общем.
Как можно обойти данную проблему?
Можно ли как то поменять кодировку ?
Ответить

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