Тупость или подводный камень
-
1974-alexander
- Родился
- Сообщения: 9
- Зарегистрирован: Чт июл 02, 2009 15:29:38
Тупость или подводный камень
Здравствуйте, господа. Если уже сталкивались с ниже описанной проблемой то помогите и мне понять откуда ноги растут. Заметил закономерность используя микроконтроллеры ATMEGA8,16,64. При написании программы поначалу отлаживаю отдельные блоки все как бы работает. Далее свожу их в нечно целое, ради чего все и затевалось, компилирую, загружаю в протеусе все работает как и хотелось. Потом как всегда хочеться улучшить, добавляються новые возможности и следовательно растет программный код. И вот оно чудо 5 секунд назад все работало добавил одну строчку и все при эмуляции работы на протеусе функции не выполняются. ничего не меняя в программном коде переставляю небольшой блок в другое место и все снова работает. Работаю с awrstudio 4. Заранее благодарен за помощь в понимании.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
чем компилируете-то?
протеус неправильно обрабатывает переходы "за пределы" памяти программ. компилятор WinAVR (например), часто в больших программах вместо перехода "далеко вперед" делает переход как бы "назад", в результате чего программный счетчик адресов в МК "переполняется", старшие биты в нем отбрасываются, а оставшийся адрес как раз попадает туда, куда надо. однако, протеус не отбрасывает старшие биты счетчика адреса и потому считает, что осуществляется переход к несуществующей ячейке памяти.
протеус неправильно обрабатывает переходы "за пределы" памяти программ. компилятор WinAVR (например), часто в больших программах вместо перехода "далеко вперед" делает переход как бы "назад", в результате чего программный счетчик адресов в МК "переполняется", старшие биты в нем отбрасываются, а оставшийся адрес как раз попадает туда, куда надо. однако, протеус не отбрасывает старшие биты счетчика адреса и потому считает, что осуществляется переход к несуществующей ячейке памяти.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Проблем может быть куча.
Забыл сохранить SREG в обработчике прерывания - получи проблему,
регистров мало - переменных много, вызвал п/п не сохранив рабочих регистров - опять проблема.
Да и все широко распространенные симуляторы работаю криво, то что работает, скажем, в протеусе (vmlab, avrstudio без разницы) не факт, что будет работать в железе.
Так что только в железе можно выявить истину, ИМХО.
Забыл сохранить SREG в обработчике прерывания - получи проблему,
регистров мало - переменных много, вызвал п/п не сохранив рабочих регистров - опять проблема.
Да и все широко распространенные симуляторы работаю криво, то что работает, скажем, в протеусе (vmlab, avrstudio без разницы) не факт, что будет работать в железе.
Так что только в железе можно выявить истину, ИМХО.
-
1974-alexander
- Родился
- Сообщения: 9
- Зарегистрирован: Чт июл 02, 2009 15:29:38
GP1 писал(а):Аlex не надо валить на АВРкиесли "ручки кривые".
Проблем может быть куча.
Забыл сохранить SREG в обработчике прерывания - получи проблему,
регистров мало - переменных много, вызвал п/п не сохранив рабочих регистров - опять проблема.
Да и все широко распространенные симуляторы работаю криво, то что работает, скажем, в протеусе (vmlab, avrstudio без разницы) не факт, что будет работать в железе.
Так что только в железе можно выявить истину, ИМХО.
Бывает что и "ручки кривые" по началу всегда хомуты возможны, я же описываю проблему будучи уверен что с точки программного кода все верно, а эфект виден как на протеусе так и на живом железе.
-
1974-alexander
- Родился
- Сообщения: 9
- Зарегистрирован: Чт июл 02, 2009 15:29:38
ARV писал(а):чем компилируете-то?
протеус неправильно обрабатывает переходы "за пределы" памяти программ. компилятор WinAVR (например), часто в больших программах вместо перехода "далеко вперед" делает переход как бы "назад", в результате чего программный счетчик адресов в МК "переполняется", старшие биты в нем отбрасываются, а оставшийся адрес как раз попадает туда, куда надо. однако, протеус не отбрасывает старшие биты счетчика адреса и потому считает, что осуществляется переход к несуществующей ячейке памяти.
У меня мысль появилась, свой avrstudio 4 я скачал с сайта atmel может он демо и имеет ограничения по программному коду????
1974-alexander писал(а):У меня мысль появилась, свой avrstudio 4 я скачал с сайта atmel может он демо и имеет ограничения по программному коду????
Студия она бесплатная, ограничений нет, демо версий нет. Перестаньте морочить людям головы, задавайте конкретные вопросы, что именно не получается, выкладывайте схемы, исходники проектры и т. д., указывайте с чем именно проблема.
-
1974-alexander
- Родился
- Сообщения: 9
- Зарегистрирован: Чт июл 02, 2009 15:29:38
smac писал(а):1974-alexander писал(а):У меня мысль появилась, свой avrstudio 4 я скачал с сайта atmel может он демо и имеет ограничения по программному коду????
Студия она бесплатная, ограничений нет, демо версий нет. Перестаньте морочить людям головы, задавайте конкретные вопросы, что именно не получается, выкладывайте схемы, исходники проектры и т. д., указывайте с чем именно проблема.
Это вам не светодиодом мерцать, кто ж вам серъезный проект выложит
-
1974-alexander
- Родился
- Сообщения: 9
- Зарегистрирован: Чт июл 02, 2009 15:29:38
-
1974-alexander
- Родился
- Сообщения: 9
- Зарегистрирован: Чт июл 02, 2009 15:29:38
pomidor писал(а):'Это вам не светодиодом мерцать, кто ж вам серъезный проект выложит'
Зачем тогда спрашивать бесплатных советов? Раз серьезный совсекретный проект - значит и бабло серьезное и разработчик дб соответствующим..
Вот говорила мама не ходи по форумам
разработчика вообще никто не хаял, на очевидные вещи вам любезно указали (Ошибка - "НОМЕР РАЗ"), на отсутствие экстрасенсорных способностей тоже.
Примерно, как если бы больной врача просил вылечить, но анализы сдавать категорически не хотел и анамнез (http://ru.wikipedia.org/wiki/Анамнез) собирать не давал..
etc
Удачи!
Примерно, как если бы больной врача просил вылечить, но анализы сдавать категорически не хотел и анамнез (http://ru.wikipedia.org/wiki/Анамнез) собирать не давал..
etc
Удачи!
- mr.Kirill
- Мучитель микросхем
- Сообщения: 438
- Зарегистрирован: Вт сен 25, 2007 19:40:26
- Откуда: Челябинск
Тема озаглавлена "Тупость или подводный камень". Судя по всему хоть и не стоит знака "?", то думается что это вопрос.
Почитав посты автора и его ответы на конкретизирующие вопросы приходит в голову ответ на заданный выше вопрос - Тупость.
Так понимаю отлаживаете в Proteus...
А пошаговую отладку в AVRStudio делали? Какие там результаты? Все ли сходится с тем замыслом, который положен в основу программы?
А верен ли замысел?
Доверять Proteus'у как последней инстации гарантирующей правильность - глупо.
А то вот гадайте ему тут. А на вопросы только отписки даешь.
До сих пор не выяснили - какой язык программирования. Откуда уверенность в правильности кода?
Почитав посты автора и его ответы на конкретизирующие вопросы приходит в голову ответ на заданный выше вопрос - Тупость.
Так понимаю отлаживаете в Proteus...
А пошаговую отладку в AVRStudio делали? Какие там результаты? Все ли сходится с тем замыслом, который положен в основу программы?
А верен ли замысел?
Доверять Proteus'у как последней инстации гарантирующей правильность - глупо.
А то вот гадайте ему тут. А на вопросы только отписки даешь.
До сих пор не выяснили - какой язык программирования. Откуда уверенность в правильности кода?
Последний раз редактировалось mr.Kirill Пт июл 03, 2009 23:28:22, всего редактировалось 1 раз.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
в протеусе посмотрите, по какому адресу происходит выход за пределы памяти. откройте листинг проги и посмотрите, что по этому адресу в коде имеется. наверняка там будет нечто типа rcall -145. если так - то я выше уже объяснял, что происходит. лечить надо протеус.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
ARV писал(а): протеус неправильно обрабатывает переходы "за пределы" памяти программ.
Обратился к разработчику PROTEUS
http://kazus.ru/forum/topics/f_141111.html#141111
Он ответил что уже исправлено, т.е. на верно в 7.5 должно быть нормально.
ARV, ты мог бы проектик прицепить с таким "залетом" чтоб реально убедится исправлено ли нет и запросить исправление ?
Последний раз редактировалось ikarab Сб июл 04, 2009 09:41:25, всего редактировалось 1 раз.
- Negor
- Вымогатель припоя
- Сообщения: 586
- Зарегистрирован: Ср мар 07, 2007 22:58:02
- Откуда: Черкассы, Украина
- Контактная информация:
Как вариант - пошагово в протеусе. Загрузить туда асм листинг(да и си можно) - и вперёд. Кроме того к авр студии можно подключить протеус.... вариантов много. Главное найти подозреваемых. На самый крайний случай - выводить отладочную инфу в уарт(это если в железе отлаживать). Поставьте конкретный вопрос - получите конкретный ответ.
There is only 10 kind of people: those who understands binary code and those who dont!!!
