Страница 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 без разницы) не факт, что будет работать в железе.
Так что только в железе можно выявить истину, ИМХО. :wink:

Добавлено: Пт июл 03, 2009 08:04:32
1974-alexander
GP1 писал(а):Аlex не надо валить на АВРки :evil: если "ручки кривые".
Проблем может быть куча.
Забыл сохранить SREG в обработчике прерывания - получи проблему,
регистров мало - переменных много, вызвал п/п не сохранив рабочих регистров - опять проблема.
Да и все широко распространенные симуляторы работаю криво, то что работает, скажем, в протеусе (vmlab, avrstudio без разницы) не факт, что будет работать в железе.
Так что только в железе можно выявить истину, ИМХО. :wink:


Бывает что и "ручки кривые" по началу всегда хомуты возможны, я же описываю проблему будучи уверен что с точки программного кода все верно, а эфект виден как на протеусе так и на живом железе.

Добавлено: Пт июл 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 писал(а): я же описываю проблему будучи уверен что с точки программного кода все верно

Ошибка - "НОМЕР РАЗ" 8)

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

Ошибка - "НОМЕР РАЗ" 8)

Не очень приятно когда умничают, если знаешь помоги а так лишьбы считалось

Добавлено: Пт июл 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 писал(а):'Это вам не светодиодом мерцать, кто ж вам серъезный проект выложит'
Зачем тогда спрашивать бесплатных советов? Раз серьезный совсекретный проект - значит и бабло серьезное и разработчик дб соответствующим..


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

Добавлено: Пт июл 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
Тем кому не хочется выкладывать код - прррямая дорога в самостоятельное изучение. И форум хаить не надо, это отличный форум.
По теме - протеус для моделирования только простых вещей использую. Мне проще заставить в железе рабоатть чем в нем