Страница 159 из 160
Re: AVR studio в вопросах и ответах
Добавлено: Пн янв 20, 2025 13:58:45
Батон Изюмыч
[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, там подобные проблемы, или есть более менее нормальная среда, где можно работать не натыкаясь на такое вот? Нынче ценник практически не различим, можно было бы попробовать.
Re: AVR studio в вопросах и ответах
Добавлено: Пн янв 20, 2025 15:47:46
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
Re: AVR studio в вопросах и ответах
Добавлено: Пн янв 20, 2025 16:11:48
Just_Fluffy
Батон Изюмыч, ИМХО, ассемблер нужен только для особо критичных участков кода, когда необходимо, например, соблюсти четкие тайминги. В остальных случаях хватает ЯВУ.
(любителей холивара прошу не возбуждаться - это мое ЛИЧНОЕ мненеие).
Отладка в студии достаточно грустная бывает, АВРки проще отлаживать на макетке.
Касательно прерываний в режиме СТС. В некоторых АВРках (кажется, в мега8), когда ТОР счета не определен режимом, а задается в регистрах OCR1A/ICR1, по достижению верхнего значения генерируется не прерывание сравнения, а прерывание переполнения - OVF.
Запустите в отладчике свою программу, дождтитесь, когда счетчик достчитает до ТОР и обнулится - и посмотрите регистр флагов TIFR - какой там флаг поднялся. Вполне вероятно, что там будет не OCF1A/ICF1, а TOV1.
Вроде это где то в Евстифееве описано было, или в Белове. Но это было очень давно и я уже не помню, где я это читала.
--
Касательно STM32Спойлер
STM32 - по уровню вхождения несколько более тяжелый МК, больший объем документации, меньше русскоязычной.
Но из плюсов после СТМ - памяти в разы больше. Скорости выше. Периферия более развесистая и богатая. Минус - нет ЕЕПРОМки.
И самый главный плюс - есть бесплатная среда разработки от ST на базе Эклипса - и в ней есть полноценная железная отладка, которая позволит заглянуть в любое место флеша, ОЗУ, периферии и даже их поменять - и это ценой 2-долларового ST-Link'а.
(Но это уже оффтоп для данной темы и с данным вопросом лучше в другую ветку форума)
Re: AVR studio в вопросах и ответах
Добавлено: Пн янв 20, 2025 17:24:29
Бубоник
Just_Fluffy писал(а):Минус - нет ЕЕПРОМки
Не пугай котов!

STM-ке он не нужен.
Re: AVR studio в вопросах и ответах
Добавлено: Пн янв 20, 2025 18:09:54
OKF
[uquote="akl",url="/forum/viewtopic.php?p=4673590#p4673590"]Решается аппаратными возможностями таймера 1...[/uquote]
... с любыми соотношениями высокий/низкий. И даже компилятор танцору не мешает.)
Re: AVR studio в вопросах и ответах
Добавлено: Вт янв 21, 2025 01:43:31
Just_Fluffy
Бубоник писал(а):Не пугай котов! STM-ке он не нужен.
Ну вот крутили мы с коллегой F411CE (128/512)
и там флеш - сначала 4 блока по 16к, потом блок 64к и далее три блока по 128к.
И как на таком конском блоке имитировать
оргазм ЕЕПРОМ ?
Re: AVR studio в вопросах и ответах
Добавлено: Вт янв 21, 2025 02:53:00
Adrift
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4673721#p4673721"]И как на таком конском блоке имитировать оргазм ЕЕПРОМ ?[/uquote]
ST в AN3969 предлагает использовать последние два сектора на 16КБ... А вообще F1 и F4 - это же одни из первых серий, там старая периферия и размашистые Errata, я от такого давно избавился ) С другой стороны прыгать сразу на G4/H5 человеку который не может на AVR таймер запустить явно не стоит, максимум какой-нибудь мелконогий STM32G071 с секторами по 2КБ.
Re: AVR studio в вопросах и ответах
Добавлено: Вт янв 21, 2025 04:24:36
akl
[uquote="OKF",url="/forum/viewtopic.php?p=4673663#p4673663"]... с любыми соотношениями высокий/низкий. И даже компилятор танцору не мешает.)[/uquote]Бред! Привычка на ходу придумывать термины, характеризующие параметры импульсов? Поэтому
akl писал(а):...длительность импульса 0,1...6553,4 мкс, период 0,2...6553,5 мкс
Re: AVR studio в вопросах и ответах
Добавлено: Вт янв 21, 2025 11:28:26
Jack_A
А что крамольного в этих параметрах? Период, длительность - базовые понятия в импульсной технике. А "соотношения высокий/низкий" - может, слегка коряво, но вплне понятно: скважность (коэффициент заполнения) .
Re: AVR studio в вопросах и ответах
Добавлено: Вт янв 21, 2025 22:24:44
Батон Изюмыч
[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 состояние остаётся не сброшено.

Возможно это от того, что качаю программы откуда попало (откуда могу). Может в них кто поковырялся на предмет подселения вирусов и у них мозги съехали... ХЗ.
--
Just_Fluffy писал(а):Касательно STM32Спойлер
STM32 - по уровню вхождения несколько более тяжелый МК, больший объем документации, меньше русскоязычной.
Но из плюсов после СТМ - памяти в разы больше. Скорости выше. Периферия более развесистая и богатая. Минус - нет ЕЕПРОМки.
И самый главный плюс - есть бесплатная среда разработки от ST на базе Эклипса - и в ней есть полноценная железная отладка, которая позволит заглянуть в любое место флеша, ОЗУ, периферии и даже их поменять - и это ценой 2-долларового ST-Link'а.
(Но это уже оффтоп для данной темы и с данным вопросом лучше в другую ветку форума)
Прежде чем начинать заново изучать AVR я слегка ознакомился с архитектурой СТМ в даташите. Архитектура прямо сказать более богатая, при соизмеримых ценах. В сторону ATMega склонился лишь от того, что в заначке лежит пяток чипов, которых хочется применить.
OKF писал(а):И даже компилятор танцору не мешает.)
В свое время я перешел на инженерную работу где мне пришлось учиться работать с SolidWorks. Там своих тонкостей конечно масса, но тогда я "танцевать" начал уже на 3ий день после начала установки ПО. Сейчас я никак не могу понять, почему вместо паркета в танцевальном зале наждак, пол кривой и в нём посередине люстра снизу вверх. Ну так, если как вы, метафорически.
Adrift писал(а):человеку который не может на AVR таймер запустить явно не стоит, максимум какой-нибудь мелконогий STM32G071 с секторами по 2КБ.
Простите, понесло на метафоры. Представьте, вы учитесь водить машину. Давите на газ как Вас учили в инструкции к машине, а машина ехать не хочет. И Вам все говорят, что значит вы не правильно давили, и вы пробуете разные варианты, даже идиотские, но ничего не выходит. А вы уже и правой ногой давили, и левой, и двумя руками, и ручник проверили и даже по колесу постучали, на всякий случай, а вдруг. А потом оказывается, что у Вас педаль газа не соединена с мотором, т.к. рабочий завода забыл тросик присоединить.
Re: AVR studio в вопросах и ответах
Добавлено: Ср янв 22, 2025 00:20:27
Just_Fluffy
Adrift писал(а):ST в AN3969 предлагает использовать последние два сектора на 16КБ...
Вот в том то и проблема, что у 411 последние 2 сектора не по 16к, а по 128....
Батон Изюмыч писал(а):Я решил добавить в основном цикле сброс типа "TIFR=0", Proteus шаг за шагом исполняет код, делает вид что исполняет это обнуление, но в WatchWindow у TIFR состояние остаётся не сброшено
А даташит читать пробовали?
Эти флаги сбрасываются записью в них единички. TIFR |= _BV(OCF1A)
Вообще, если уже так тяжело с изучением МК, начните кушать слоника частями, сначада х..обот, потом ухи...
Запустите таймер в режиме 0, убедитесь, что он считает.
Далее, сделайте три обработчика прерывания - по обоим каналам сравнения и по переполнению.
Разрешите все три прерывания в TIMSK, не забудьте выполнить SEI.
В регистры сравнения что то запишите, лучше разное, что б прерывания возникали в разное время.
В обработчиках прерываний переключайте состояние каких то битов порта .. PORTB ^= _BV(PORB1). Для каждого прерывания свой бит.
Когда добьетесь, что прерывания работают - пробуйте статично инициализировать таймер другими режимами и смотрите , что получается.
Вообще, прерывания таймера - достаточно простая штука в АВРках..
Главное помнить, что если из прерывания модифицируются какие то внешние переменные (флаги), то их надо волатильными объявлять.
Было бы неплохо эти эксперименты делать в железе. Но на худой конец протеус или встроенный отладчик подойдут.
Re: AVR studio в вопросах и ответах
Добавлено: Ср янв 22, 2025 00:40:42
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К.
Re: AVR studio в вопросах и ответах
Добавлено: Ср янв 22, 2025 00:45:13
Батон Изюмыч
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 писал(а):Главное помнить, что если из прерывания модифицируются какие то внешние переменные (флаги), то их надо волатильными объявлять.
Об этом я уже тоже начитан. В том коде, с которого начался мой вопрос уже так и было сделано сразу.
Re: AVR studio в вопросах и ответах
Добавлено: Ср янв 22, 2025 05:53:28
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.

На макетке с tiny2313a тактируемой от кварца 20МГц загрузил нижеследующую программу и получил как и предполагал положительный импульс длительностью 0,05 мкс и периодом 0,1 мкс (закомментировано) или 0,5 мкс (чтобы различить положительный импульс длительностью 0,05 мкс. На меандре это непонятно.)
Кстати, студия спасовала перед режимом 15.
Re: AVR studio в вопросах и ответах
Добавлено: Ср янв 22, 2025 14:01:06
Just_Fluffy
Батон Изюмыч писал(а): В симуляторе ATMELStudio в регистре ICR1 значение появляется сразу, а в OCR1A оно появляется, когда уже счётчик два раза через TOP прошел
В некоторых режимах значения регистров сравнения при присвоении кешируются в теневые регистры. И обновляются на следующем цикле счетчика.
Попробуйте на чистом асме нарисовать инициализацию таймера, его прерываний, нарисуйте обработчики прерывания таймера, что б они что то в порту инвертировали, например. Что б исключить компилятор Си.
И проверьте в в отладчике ассемблерный код прошагать.
Re: AVR studio в вопросах и ответах
Добавлено: Ср янв 22, 2025 17:33:14
Батон Изюмыч
Just_Fluffy писал(а):В некоторых режимах значения регистров сравнения при присвоении кешируются в теневые регистры. И обновляются на следующем цикле счетчика.
Я в курсе этого, но честно сказать, не сообразил проверить. Не обновляется как раз один из тех регистров, что в некоторых режимах буферизуются. Посмотрю. Спасибо!
Re: AVR studio в вопросах и ответах
Добавлено: Ср янв 22, 2025 17:54:01
Anatol48
Здравствуйте, может у кого-то завалялся уствновочный файл AT89LP developer studio? Нигде не могу найти =(
Re: AVR studio в вопросах и ответах
Добавлено: Сб май 03, 2025 16:14:41
bgan
Всем привет.Прошу помощи у участников форума.В своём проекте хочу использовать для микроконтроллера стороний загрузчик.Нашёл в сети открытый проект:
https://github.com/hexagon5un/fastboot- ... of-content.
Настроил под свой контроллер.Но компилятор выдаёт ошибки.Система - Win7x64, AVR Studio 4.18SP3, WinAVR 20100110.Что-то я делаю не так? Прошу наставить на путь истины.
Re: AVR studio в вопросах и ответах
Добавлено: Ср июл 09, 2025 11:41:48
bgan
Вопрос в теме закрываю. Ответ нашёлся на просторах интернета. Всем удачи.
Re: AVR studio в вопросах и ответах
Добавлено: Вт сен 30, 2025 19:59:34
Dm7203
Доброго времени суток.
Пишу код для вывода текста на символьный ЖК дисплей.
Создал некоторую функцию void LCD_string(char[]);. Вызываю LCD_string("TEXT123");.
С латинскими буквами и цифрами все гуд, но хотелось бы еще выводить и кириллицу.
Но тут загвоздка, в Atmel studio символы как я понял задаются в кодировка ASCII и там естественно русских букв нет и если ввести символы кириллицы в функцию как есть то получается ерунда в общем.
Как можно обойти данную проблему?
Можно ли как то поменять кодировку ?