Страница 1 из 3
Тупость или подводный камень
Добавлено: Чт июл 02, 2009 17:44:37
1974-alexander
Здравствуйте, господа. Если уже сталкивались с ниже описанной проблемой то помогите и мне понять откуда ноги растут. Заметил закономерность используя микроконтроллеры ATMEGA8,16,64. При написании программы поначалу отлаживаю отдельные блоки все как бы работает. Далее свожу их в нечно целое, ради чего все и затевалось, компилирую, загружаю в протеусе все работает как и хотелось. Потом как всегда хочеться улучшить, добавляються новые возможности и следовательно растет программный код. И вот оно чудо 5 секунд назад все работало добавил одну строчку и все при эмуляции работы на протеусе функции не выполняются. ничего не меняя в программном коде переставляю небольшой блок в другое место и все снова работает. Работаю с awrstudio 4. Заранее благодарен за помощь в понимании.
Добавлено: Чт июл 02, 2009 19:41:08
ARV
чем компилируете-то?
протеус неправильно обрабатывает переходы "за пределы" памяти программ. компилятор WinAVR (например), часто в больших программах вместо перехода "далеко вперед" делает переход как бы "назад", в результате чего программный счетчик адресов в МК "переполняется", старшие биты в нем отбрасываются, а оставшийся адрес как раз попадает туда, куда надо. однако, протеус не отбрасывает старшие биты счетчика адреса и потому считает, что осуществляется переход к несуществующей ячейке памяти.
Добавлено: Пт июл 03, 2009 07:42:49
GP1
Проблем может быть куча.
Забыл сохранить SREG в обработчике прерывания - получи проблему,
регистров мало - переменных много, вызвал п/п не сохранив рабочих регистров - опять проблема.
Да и все широко распространенные симуляторы работаю криво, то что работает, скажем, в протеусе (vmlab, avrstudio без разницы) не факт, что будет работать в железе.
Так что только в железе можно выявить истину, ИМХО.

Добавлено: Пт июл 03, 2009 08:04:32
1974-alexander
GP1 писал(а):Аlex не надо валить на АВРки

если "ручки кривые".
Проблем может быть куча.
Забыл сохранить SREG в обработчике прерывания - получи проблему,
регистров мало - переменных много, вызвал п/п не сохранив рабочих регистров - опять проблема.
Да и все широко распространенные симуляторы работаю криво, то что работает, скажем, в протеусе (vmlab, avrstudio без разницы) не факт, что будет работать в железе.
Так что только в железе можно выявить истину, ИМХО.

Бывает что и "ручки кривые" по началу всегда хомуты возможны, я же описываю проблему будучи уверен что с точки программного кода все верно, а эфект виден как на протеусе так и на живом железе.
Добавлено: Пт июл 03, 2009 08:45:22
1974-alexander
ARV писал(а):чем компилируете-то?
протеус неправильно обрабатывает переходы "за пределы" памяти программ. компилятор WinAVR (например), часто в больших программах вместо перехода "далеко вперед" делает переход как бы "назад", в результате чего программный счетчик адресов в МК "переполняется", старшие биты в нем отбрасываются, а оставшийся адрес как раз попадает туда, куда надо. однако, протеус не отбрасывает старшие биты счетчика адреса и потому считает, что осуществляется переход к несуществующей ячейке памяти.
У меня мысль появилась, свой avrstudio 4 я скачал с сайта atmel может он демо и имеет ограничения по программному коду????
Добавлено: Пт июл 03, 2009 08:50:53
smac
1974-alexander писал(а):У меня мысль появилась, свой avrstudio 4 я скачал с сайта atmel может он демо и имеет ограничения по программному коду????
Студия она бесплатная, ограничений нет, демо версий нет. Перестаньте морочить людям головы, задавайте конкретные вопросы, что именно не получается, выкладывайте схемы, исходники проектры и т. д., указывайте с чем именно проблема.
Добавлено: Пт июл 03, 2009 08:57:40
1974-alexander
smac писал(а):1974-alexander писал(а):У меня мысль появилась, свой avrstudio 4 я скачал с сайта atmel может он демо и имеет ограничения по программному коду????
Студия она бесплатная, ограничений нет, демо версий нет. Перестаньте морочить людям головы, задавайте конкретные вопросы, что именно не получается, выкладывайте схемы, исходники проектры и т. д., указывайте с чем именно проблема.
Это вам не светодиодом мерцать, кто ж вам серъезный проект выложит

Добавлено: Пт июл 03, 2009 08:59:55
GP1
1974-alexander писал(а): я же описываю проблему будучи уверен что с точки программного кода все верно
Ошибка - "НОМЕР РАЗ"

Добавлено: Пт июл 03, 2009 09:06:54
1974-alexander
GP1 писал(а):1974-alexander писал(а): я же описываю проблему будучи уверен что с точки программного кода все верно
Ошибка - "НОМЕР РАЗ"

Не очень приятно когда умничают, если знаешь помоги а так лишьбы считалось
Добавлено: Пт июл 03, 2009 09:11:09
GP1
Я не экстрасенс, кода, схемы не видел.
Чем я могу помочь?
Добавлено: Пт июл 03, 2009 09:13:20
ikarab
1974-alexander писал(а):свой avrstudio 4 я скачал с сайта atmel может он демо и имеет ограничения по программному коду ????
Секретная дема !
Добавлено: Пт июл 03, 2009 10:07:24
pomidor
'Это вам не светодиодом мерцать, кто ж вам серъезный проект выложит'
Зачем тогда спрашивать бесплатных советов? Раз серьезный совсекретный проект - значит и бабло серьезное и разработчик дб соответствующим..
Добавлено: Пт июл 03, 2009 10:18:27
1974-alexander
pomidor писал(а):'Это вам не светодиодом мерцать, кто ж вам серъезный проект выложит'
Зачем тогда спрашивать бесплатных советов? Раз серьезный совсекретный проект - значит и бабло серьезное и разработчик дб соответствующим..
Вот говорила мама не ходи по форумам

, столько текста пишите вместо простых слов, нет в такую ситуацию не попадал, зачем хаять разработчика вообще не понимая о чем идет речь, а по началу вопрос был таким понятным

Добавлено: Пт июл 03, 2009 10:47:29
pomidor
разработчика вообще никто не хаял, на очевидные вещи вам любезно указали (Ошибка - "НОМЕР РАЗ"), на отсутствие экстрасенсорных способностей тоже.
Примерно, как если бы больной врача просил вылечить, но анализы сдавать категорически не хотел и анамнез (
http://ru.wikipedia.org/wiki/Анамнез) собирать не давал..
etc
Удачи!
Добавлено: Пт июл 03, 2009 13:01:04
mr.Kirill
Тема озаглавлена "Тупость или подводный камень". Судя по всему хоть и не стоит знака "?", то думается что это вопрос.
Почитав посты автора и его ответы на конкретизирующие вопросы приходит в голову ответ на заданный выше вопрос - Тупость.
Так понимаю отлаживаете в Proteus...
А пошаговую отладку в AVRStudio делали? Какие там результаты? Все ли сходится с тем замыслом, который положен в основу программы?
А верен ли замысел?
Доверять Proteus'у как последней инстации гарантирующей правильность - глупо.
А то вот гадайте ему тут. А на вопросы только отписки даешь.
До сих пор не выяснили - какой язык программирования. Откуда уверенность в правильности кода?
Добавлено: Пт июл 03, 2009 21:57:24
maglev
Автору - проверьте размеры стека (стеков).
Добавлено: Пт июл 03, 2009 22:03:43
ARV
в протеусе посмотрите, по какому адресу происходит выход за пределы памяти. откройте листинг проги и посмотрите, что по этому адресу в коде имеется. наверняка там будет нечто типа rcall -145. если так - то я выше уже объяснял, что происходит. лечить надо протеус.
Добавлено: Пт июл 03, 2009 23:02:07
ikarab
ARV писал(а): протеус неправильно обрабатывает переходы "за пределы" памяти программ.
Обратился к разработчику PROTEUS
http://kazus.ru/forum/topics/f_141111.html#141111
Он ответил что уже исправлено, т.е. на верно в 7.5 должно быть нормально.
ARV, ты мог бы проектик прицепить с таким "залетом" чтоб реально убедится исправлено ли нет и запросить исправление ?
Добавлено: Пт июл 03, 2009 23:15:30
Negor
Как вариант - пошагово в протеусе. Загрузить туда асм листинг(да и си можно) - и вперёд. Кроме того к авр студии можно подключить протеус.... вариантов много. Главное найти подозреваемых. На самый крайний случай - выводить отладочную инфу в уарт(это если в железе отлаживать). Поставьте конкретный вопрос - получите конкретный ответ.
Добавлено: Сб июл 04, 2009 07:50:54
BCluster
Тем кому не хочется выкладывать код - прррямая дорога в самостоятельное изучение. И форум хаить не надо, это отличный форум.
По теме - протеус для моделирования только простых вещей использую. Мне проще заставить в железе рабоатть чем в нем