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



