Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
11.12.2008, 03:17
|
|
Частый гость
Регистрация: 03.08.2006
Сообщений: 23
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 1 сообщении
|
Пошаговая отладка программы в Си
В Си я новичок. До этого писал программы на асме для пиков. Каких-либо проблем с отладкой не было. Все четко, шажок за шажком, все изменения в регистрах, все прозрачно.
Решил изучить АВРки. Ну и захотелось освоить Си. Худо-бедно, подчитал литературку, начал писать простенькие программки. Но столкнулся с проблемой при симуляции. Пишу и компилирую в CVAVR. Отлаживаю в Протеусе. Самое интересное, что программы работают вроде корректно, если включаешь нормальный режим работы. Но вот когда включаешь пошаговый режим, вся радость улетучивается. Курсор скачет по листингу Си совершенно неподобающим образом, например, зацикливаясь на закрывающей фигурной скобке какого-нибудь цикла, пропуская большую часть операторов и функций. В функции, которые я сам написал, вообще не входит. В чем тут дело? Причем внешние проявления работы (вывод на лсд индикатор) нормальные. Высвечивается то что нужно. Но эти проявления никак не связаны с поведением вектора выполнения программы. Еще интересное наблюдение. Если я ставлю точку останова и запускаю программу в нормальном режиме, то программа останавливается там, где надо. А вот при пошаговой отладке никак не удается попасть на эту строку. Короче какая-то хрень.
Мне как новичку приходится продираться через кучу своих ошибок. Хотелось бы быть уверенным, что сами компиляторы - симуляторы работают корректно. Иначе вообще темный лес.
Попробовал симулировать в АВРстудио. Хоть там нет такой наглядности, как в Протеусе, но думал, хоть там все будет корректно работать в пошаговой отладке. Ан нет. Другая беда. Вроде по строчкам нормально скочет, но когда натыкается на вывод какой-нибудь библиотечной функции (например функция очистки LCD дисплея) зависает в ней и никакими усилиями выходить оттуда не хочет.
Дайте каой-нибудь дельный совет, куды крестьянину податься. Без отладки я не могу отследить времена выполнения кусков программы, а для меня они являются очень критичными.
Извините за размер поста. Просто не знаю, что делать, а подсказать живьем некому.
|
|
|
|
11.12.2008, 04:54
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Пошаговая отладка программы в Си
Сообщение от Zandy
|
.Решил изучить АВРки. Ну и захотелось освоить Си. Худо-бедно, подчитал литературку, начал писать простенькие программки. Но столкнулся с проблемой при симуляции. Пишу и компилирую в CVAVR. Отлаживаю в Протеусе. Самое интересное, что программы работают вроде корректно, если включаешь нормальный режим работы. Но вот когда включаешь пошаговый режим, вся радость улетучивается. Курсор скачет по листингу Си .
|
Можно, я выскажу свое нестандартное мнение?
Просто так уж по жизни сложилось, что с микроконтроллерными системами я впервые столкнулся году этак в 1992. Славный чип 1816ВЕ48 (i804 ![Горд собой](images/smilies/icon_dovl.gif) и компы на уровне 286-386.
Протеусами не пахло, ЯВУ - тоже. А работать было надо.
Ничего, все освоили, и на том же 8048 делали весьма неплохие вещи (читали "повесть об одном байте" ? - дык, это как раз про то... у меня была прошивка "85" размером 1022 байта - один остался свободен).
Но я не про то. Я про то, что в отличие от электронщиков, которые считают нормальной отладку устройств, держа одной рукой два шнурка от осциллографа, одним глазом глядя на экран, вторым на то идет ли дым, третьей рукой переключают режим и четвертой жмут на нужную кнопку...
Ну, в общем, вы поняли.
Нормальный программер встраиваемых систем первое что делает - УДОБНУЮ ДЛЯ СЕБЯ систему отладки. Чтобы не нужны были 4 руки.
Для меня это - программатор и отладчик на одном ISP шнурке. Уж который год работаю с этой, чисто под себя заточенной и собственноручно сделанной системой - и не знаю никаких проблем.
Как там говорилось - лучше день потерять, а зато потом за час долететь.
Что касается эмуляторов - как бы их не хвалили - я еще не видел ни одного корректного. Эмулятор хорош для проверки математики. Остальное - ну.. если политкорректно - то не фуфло, а "некорректная система".
Мой совет - отлаживайтесь реалтайм на кристалле. Вот там уж фуфла нету.
Спросите - а при чем тут история с 286 компами? Да при том, что все мои отлаживаемые устройства УЖЕ ТОГДА передавали на комп пусть не все ОЗУ, так хотя бы часть. По RS232. Прогрраммно. По битику...
|
|
|
|
11.12.2008, 08:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: Пошаговая отладка программы в Си
Сообщение от Zandy
|
Отлаживаю в Протеусе.
Дайте каой-нибудь дельный совет поо отладке в Си
|
Можно так - http://avr123.nm.ru/z4.htm
Понавставлять в программу контрольных событий (дерганья ножкой) или контрольных сообщений.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
11.12.2008, 09:44
|
|
Гражданин KAZUS.RU
Регистрация: 05.10.2006
Сообщений: 628
Сказал спасибо: 21
Сказали Спасибо 165 раз(а) в 92 сообщении(ях)
|
Zandy-уберите оптимизацию кода при компилировании для отладки-это уже обсуждалось.
nml:
Цитата:
|
Для меня это - программатор и отладчик на одном ISP шнурке. Уж который год работаю с этой, чисто под себя заточенной и собственноручно сделанной системой - и не знаю никаких проблем.
|
Нельзя ли посмотреть/повторить эту конструкцию. Ссылку или выложите, если это возможно.
Ну и про протеус-вчера поставил 74сп3 и что там увидел-глюк с прерываниями в 51х как был так и остался(после трассировки исходника они перестают работать).
__________________
Быть,а не казаться.
|
|
|
|
11.12.2008, 09:48
|
|
Гражданин KAZUS.RU
Регистрация: 05.10.2006
Сообщений: 628
Сказал спасибо: 21
Сказали Спасибо 165 раз(а) в 92 сообщении(ях)
|
Да,Zandy для AVRStudio попробуйте сделать EXTCOFF, а не ELF- в какой-то версии студии она нехорошо отлаживала свой ELF, хотя в протеусе он жужжал.
__________________
Быть,а не казаться.
|
|
|
|
11.12.2008, 15:06
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от LEAS
|
Нельзя ли посмотреть/повторить эту конструкцию.
|
http://avr.nikolaew.org/progr.htm
|
|
|
|
11.12.2008, 16:25
|
|
Прописка
Регистрация: 10.04.2008
Сообщений: 165
Сказал спасибо: 8
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Расскажу из своего опыта, тоже наболело.
Да, свои функции проскакивало. Щас пропало, CVAVR 2.03.4 Standart, отладка AVR Studio 4.14 и Proteus 7.4 SP 3. LCD - да, юзаю PCD8544.dll, приходится //убирать строки про LCD, вывод на терминал виртуальный всё равно есть (не юзай itoa, из unsigned int все равно знаковое делает).
Теперь дельные советы. Юзай графы, дергай ножками и отслеживай. Открыл я ISIS и кажется, что проще свой проект кинуть чем объяснять... Монстров электроники прошу не скачивать, я такой же как аффтар.
Прикрепленный файл: 9323846.zip
|
|
|
|
11.12.2008, 17:40
|
|
Частый гость
Регистрация: 03.08.2006
Сообщений: 23
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 1 сообщении
|
Спасибо за участие и ответы.
Кт11507 Ваш проект не могу открыть, т. к. пишет, что нет модели lcd.
А вообще-то у меня совсем все плохо. Просто руки опускаются
Я конечно понимаю, что симуляторы не есть очень хорошо, но у других-то как-то работают. И потом я на таком этапе изучения, что просто не знаю кого винить, себя или симулятор.
Может кто-нибудь глянет на досуге мои проекты. Там два проекта на разных контроллерах с одним и тем же кодом. Один, худо-бедно работает, другой не работает вообще, хоть код на обоих один и тот же. Компилятор CVAVR 1.25.8, симулятор Протеус 7.4SP3.
Обратите внимание на лог симуляции. Какая-то хрень с WDT. В проекте на меге16 вообще происходит постоянный сброс программы после двух-трех операций. Но дело в том, что я в своих проектах WDT вообще не задействую!!! Вот в чем паскудство!
И еще по ходу вопрос. В протеусе, в свойствах контроллера есть окошечко (пустое). Его надо заполнять? Что-либо туда писать надо?
Прикрепленный файл: 9905332.rar
|
|
|
|
11.12.2008, 18:02
|
|
Прописка
Регистрация: 23.03.2008
Сообщений: 121
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Кстати, в версии 7.4 протеуса с лекарством от Немо у меня с мегой8 тоже постоянно сброс собачки происходит, думал, глюк у меня. На версии 7.2.6 такого нет, все работает четко. Естественно, везде, где надо в коде есть wdr.
|
|
|
|
11.12.2008, 18:26
|
|
Частый гость
Регистрация: 03.08.2006
Сообщений: 23
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 1 сообщении
|
Ну вот, спасибо, кое-что проясняется. Буду пробовать старую версию. Правда тут тоже заковыка. Там нет атини2313. Хотел с ней поработать.
Получается, что, делаю только самые первые шаги, еле-еле держусь на ногах. А тут сплошные подножки.
Может кто подскажет, какой контроллер из АВРок и в какой версии Протеуса работает "без сучка, без задоринки"? Ну, чтобы все ошибки были моими собственными? А то ведь застреваю на ровном месте. Цель пока такая - изучить Си на практических примерах. За реальные проекты (в железе) пока браться мне рановато.
Больно задачи у меня серьезные.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:19.
|
|