До сих пор обнаружил несколько несоответствий реакции кода при Proteus, но не против протестировать часть кода с его помощью. Но никогда: весь код, особенно с алгоритмами, связанными с отчетами о времени, прерывания и подобные.
AVR studio в вопросах и ответах
На "живой конструкции" нельзя попробовать? Напр. светодиод привязан к флагу, или флаг -> к дисплея и т.н. А нет двух свободных пинов для флаг-контроля через модуль rx/tx и UART с визуализации к компу? Так эти туманные вопросы (цитат: "И кому верить? Протеусу или Студии?"), часто граничащие со слухами, легендами и т.п. непроверенные утверждения, то будут устранены. Или код разрабатываться только "на бумаге" (и на симуляторе)?
До сих пор обнаружил несколько несоответствий реакции кода при Proteus, но не против протестировать часть кода с его помощью. Но никогда: весь код, особенно с алгоритмами, связанными с отчетами о времени, прерывания и подобные.
До сих пор обнаружил несколько несоответствий реакции кода при Proteus, но не против протестировать часть кода с его помощью. Но никогда: весь код, особенно с алгоритмами, связанными с отчетами о времени, прерывания и подобные.
- Реклама
- Сообщения: 217
- Зарегистрирован: Ср янв 11, 2012 11:55:51
veso74, можно конечно в железе посмотреть. Печаль в том, что собственно этот кусок в железе тестировался и все крутилось. Правда с меньшим числом шагов, может я и не заметил проблемы. А ног свободных нет, это в 13-й тиньке сидит. Ок, значит надо будет опять проводочки паять )
[uquote="Land",url="/forum/viewtopic.php?p=4224413#p4224413"][/uquote]
Наверное, так делать не стОит.
Код: Выделить всё
ISR(TIM0_COMPB_vect)
...
--steps;
TCNT0 = 0;
...
Наверное, так делать не стОит.
[uquote="Land",url="/forum/viewtopic.php?p=4224413#p4224413"]
вроде как и все правильно
Может это глюк протеуса?
Только почему Студия последовательно два значения в один регистр пихает?
00000163 STS 0x0062,R1 Store direct to data space
00000165 STS 0x0061,R1 Store direct to data space[/uquote]
В AVR GCC регистр R1 всегда содержит ноль. В функции компилятор не видит измений переменной steps и поэтому присваивает ей ноль, соответственно ваш цикл ожидания не отрабатывает. Добавьте volatile к определению переменной steps, это должно помочь. Другой подводный камень - прерывание может случиться между 00000167 и 00000169 и это тоже может привести к сбоям.
Код: Выделить всё
00000163 STS 0x0062,R1 Store direct to data space
00000165 STS 0x0061,R1 Store direct to data space
00000167 LDS R24,0x0061 Load direct from data space
00000169 LDS R25,0x0062 Load direct from data space
0000016B OR R24,R25 Logical OR
0000016C BRNE PC-0x05 Branch if not equal Только почему Студия последовательно два значения в один регистр пихает?
00000163 STS 0x0062,R1 Store direct to data space
00000165 STS 0x0061,R1 Store direct to data space[/uquote]
В AVR GCC регистр R1 всегда содержит ноль. В функции компилятор не видит измений переменной steps и поэтому присваивает ей ноль, соответственно ваш цикл ожидания не отрабатывает. Добавьте volatile к определению переменной steps, это должно помочь. Другой подводный камень - прерывание может случиться между 00000167 и 00000169 и это тоже может привести к сбоям.
- Сообщения: 217
- Зарегистрирован: Ср янв 11, 2012 11:55:51
U235, steps опеределена как volatile -- переменная steps глобальная volatile uint16_t steps = STEP; Прерывание может конечно прилететь. И прерывание не запретить... Делать проверку условия в прерывании и флаг выставлять?
- Реклама
[uquote="Land",url="/forum/viewtopic.php?p=4224723#p4224723"]U235, steps опеределена как volatile -- переменная steps глобальная volatile uint16_t steps = STEP;[/uquote]
Вот это место я упустил из виду. Значит
Относится к
несколькими строчками выше while.
Вот это место я упустил из виду. Значит
Код: Выделить всё
00000163 STS 0x0062,R1 Store direct to data space
00000165 STS 0x0061,R1 Store direct to data space
Код: Выделить всё
else steps = 0; // для перехода к сбросуМожнно флаг сделать. Или как в документации к avr-libc рекомендуют:Прерывание может конечно прилететь. И прерывание не запретить... Делать проверку условия в прерывании и флаг выставлять?
Код: Выделить всё
#include <util/atomic.h>
.....
uint16_t steps_copy;
do {
ATOMIC_BLOCK(ATOMIC_FORCEON) {
steps_copy = ctr;
}
} while (steps_copy);
- Сообщения: 217
- Зарегистрирован: Ср янв 11, 2012 11:55:51
U235, пожалуй второй вариант мне больше нравится. Спасибо за подсказку. Плюсанул бы вам в карму, да грехи не позволяют ))
Добавлено after 43 minutes 26 seconds:
[uquote="Land",url="/forum/viewtopic.php?p=4224973#p4224973"]U235, пожалуй второй вариант мне больше нравится. Спасибо за подсказку. Плюсанул бы вам в карму, да грехи не позволяют ))[/uquote]
Да, проблема похоже была именно в несвоевременном прилете прерывания. В железе это тоже было, но не каждый цикл. Так что Протеус не врал. А Студия моделирует все же идеально сферического коня в абсолютном вакууме (. Большое спасибо всем, принявшим участие в решении проблемы.
Добавлено after 43 minutes 26 seconds:
[uquote="Land",url="/forum/viewtopic.php?p=4224973#p4224973"]U235, пожалуй второй вариант мне больше нравится. Спасибо за подсказку. Плюсанул бы вам в карму, да грехи не позволяют ))[/uquote]
Да, проблема похоже была именно в несвоевременном прилете прерывания. В железе это тоже было, но не каждый цикл. Так что Протеус не врал. А Студия моделирует все же идеально сферического коня в абсолютном вакууме (. Большое спасибо всем, принявшим участие в решении проблемы.
- Сообщения: 217
- Зарегистрирован: Ср янв 11, 2012 11:55:51
Доброго всем. Очередной вопрос касающийся именно Atmel Studio 7. Как можно откатиться на частоту ISP в диалоге программирования? Уже распаянная тинька не хотела при перешивке опознаваться, решил снизить скорость. И в результате захожу в Device Programming, выбираю Tool, выбираю Device, Interface, жму Apply -- и все. Курсор крутится, как будто процесс какой-то идет, но подключения программатора не происходит (( И что делать -- совершенно не понятно.
В логе стоит Setting Platform Property.. и все.
В логе стоит Setting Platform Property.. и все.
- Сообщения: 556
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Land, В студии по F12 открывается диалог программатора.
У меня оно срабатывает без подключенного МК, только с подключенным AVR ISP mkII от Grott-а.
Выбираю так же - Tool, Device, Interface и после нажатия Apply открывается ползунок выбора скорости. Там можно выбрать скорость ISP и нажать Apply.
И только уже при переходе к фьюзам идет обращение к МК.
--
а скорость программирования по F11 выставляется отдельно, в свойствах проекта.
У меня оно срабатывает без подключенного МК, только с подключенным AVR ISP mkII от Grott-а.
Выбираю так же - Tool, Device, Interface и после нажатия Apply открывается ползунок выбора скорости. Там можно выбрать скорость ISP и нажать Apply.
И только уже при переходе к фьюзам идет обращение к МК.
--
а скорость программирования по F11 выставляется отдельно, в свойствах проекта.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Я не ИИ, поэтому могу ошибаться.
- Сообщения: 217
- Зарегистрирован: Ср янв 11, 2012 11:55:51
Прошу совета, какую порекомендуете установить версию данного продукта?Требования такие: минимум глюков, минимально возможный код после компиляции, система windows7, контроллеры использоваться будут tiny 13, 2313, 26, ATmega 8, 328. Язык программирования - "С".
Спасибо.
Спасибо.
Пользуюсь студией 4.19, правда на ассемблере. Но, коллега рядом на ней же трахается на це.

- Вложения
-
- AVR_STUDIO_4_19_730.PNG
- (43.07 КБ) 484 скачивания
[uquote="akl",url="/forum/viewtopic.php?p=4274200#p4274200"]Пользуюсь студией 4.19, правда на ассемблере.[/uquote]
Понял, спасибо.
Как я понимаю в моем случае нужно установить ещё и WinAVR?
Понял, спасибо.
Как я понимаю в моем случае нужно установить ещё и WinAVR?
WinAVR устарела весьма сильно... но более свежие версии плохо будут в древней студии отлаживаться. вы бы сразу на современное что-то переходили бы...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 556
- Зарегистрирован: Ср июн 29, 2022 16:25:45
igorka, пользовалась четвертой студией, когда изучала асм для аврок.
Когда взялась за си, то стало понятно, что четверка немножко грустная...
Поставила Atmel Studio 7 - там и синтаксис подсвечивается, и автозавершение умное....
Сейчас весь софт для программирования и проектирования выгнала в виртуальную машину с голой виндой 7. И эту виртуалку таскаю и на рабочий комп, и на домашний.
Когда взялась за си, то стало понятно, что четверка немножко грустная...
Поставила Atmel Studio 7 - там и синтаксис подсвечивается, и автозавершение умное....
Сейчас весь софт для программирования и проектирования выгнала в виртуальную машину с голой виндой 7. И эту виртуалку таскаю и на рабочий комп, и на домашний.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Я не ИИ, поэтому могу ошибаться.
[uquote="ARV",url="/forum/viewtopic.php?p=4274258#p4274258"]WinAVR устарела весьма сильно... но более свежие версии плохо будут в древней студии отлаживаться. вы бы сразу на современное что-то переходили бы...[/uquote]
Вы имеете ввиду тулчейны?Я только учусь, помигать светодиодом и т.д. , плюс компьютер очень слабенький, ну и контроллеры буду использовать старенькие.Поэтому ставлю версию 4.19.
И все таки, что посоветуете WinAVR или avr-gss посвежее по ссылке выше?
Just_Fluffy Спасибо за совет, но я ограничен в ресурсах...
Вы имеете ввиду тулчейны?Я только учусь, помигать светодиодом и т.д. , плюс компьютер очень слабенький, ну и контроллеры буду использовать старенькие.Поэтому ставлю версию 4.19.
И все таки, что посоветуете WinAVR или avr-gss посвежее по ссылке выше?
Just_Fluffy Спасибо за совет, но я ограничен в ресурсах...
я бы посоветовал современную студию и современный тулчейн. собственно, единственный плюс студии - наличие симулятора, что для отладки (тем более для начинающего) большой плюс.
сам я много лет для разработки применяю Eclipse CDT с плагином для AVR, а для отладки - симуляцию в протеусе. студийная симуляция и рядом не лежала с протеусовской.
сам я много лет для разработки применяю Eclipse CDT с плагином для AVR, а для отладки - симуляцию в протеусе. студийная симуляция и рядом не лежала с протеусовской.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 550
- Зарегистрирован: Вт фев 09, 2010 17:52:26
Это точно, студия все возможности проца может отладить, а протеус, только те, что поддерживает.ARV писал(а):студийная симуляция и рядом не лежала с протеусовской.
Протеус позволяет быстро отладить основные функции, но без отладки в железе не обойтись.
В старой студии можно открыть схему протеуса и отлаживать.
студия тоже позволяет отладить только то, что поддерживает... и многое она не поддерживает вообще. протеус симулирует на порядок больше и лучше студии, а с учетом того, что позволяет симулировать и обвязку МК, он вне конкуренции! попробуйте в студии отладить обмен с и2ц-часами, например, или 1-wire термометром!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


