Вот разбираюсь с шиной 1-Wire под WinAVR. Запарился уже шить-перешивать МК в процессе отладки . Решил поставить великий и могучий протеус. Для тестирования взял sample проект самого протеуса, выбрал для того МК что там стоял прошивку 1-Wire на CVAVR - она гарантированно работает (проверял на железяке тестируемой). Для отладки собственно кода WinAVR добавил в проект еще один МК с 1-Wire датчиком...
И начались чудеса. Проц с прошивкой CVAVR работает нормально (16 МГц на обеих выставленно), а вот с WinAVR както невероятно долго - тестовое передергивание ноги без задержек заняло 10мс. Я уж и не знаю на что думать - то ли протеус симулирует HEXы от разных компилляторов по-разному, то ли у меня чтото в коде (но что там может быть, ногой просто передернуть). Может секрет какой есть когда два МК в проекте?
Осциоллограмма в приложении (на нижнем графике - видно с какой скоростью идет обмен по 1-wire на нормальном МК, а второй сверху - это передергивание ноги без задержек на WinAVR). Проект протеуса там же.
Добавлено спустя 14 минут 41 секунду: Удаление вспомогательного МК дела не решило
Добавлено спустя 5 минут 55 секунд: На реальном МК все остальное кроме 1Wire нормально работает.
executer писал(а):С одним хексом нормально, с другим медленно шож это за симуляор такой?
И правда диво !Разные .hex по-разному работают. Просто чудеса в решете. Ведь все прошивки на свете должны одинаково работать. Похоже PROTEUS полный отстой, хорошо хоть платить за него не надо было.
Диво в том что с CVAVRовским HEX файлом отлично работает. HEX файл, на сколько я знаю, это просто набор ассемблерных комманд без указания на компилятор, комментарии, объем свободного места на диске и т.д. ТОЛЬКО комманды для процессора. Вот меня и смутило то что один файл с набором комманд работает на одной частоте, а другой - на другой. Может, конечно, WinAVR какимто чудесным способом меняет частоту МК, но на макетной плате я этого не заметил.
PS: AVR123, не хотел Вас обидеть, Вы безусловно много всего хорошего делаете. И Proteus тоже хорошая прога, только я давно с подозрением к ней относился из-за всякх непоняток и того что она симулирует работу МК с тактовой частотой 10 ГГц на моем ноуте с 1.3 в реал-тайме. Просто пытаюсь разобратся в проблеме.
Сам елф не может помочь. Он просто позволяет видеть код на Си и двигаться по коду в отладке. Поставьте точки останова и посмотрите время выполнения участков кода - выясните причину "тормозов". Можете раскрыть АСМ и увидеть что там не так.
Добавлено спустя 1 минуту 46 секунд:
executer писал(а):Proteus симулирует работу МК с тактовой частотой 10 ГГц
Это очень удобно. На таком МК вы можете сделать модель практически чего угодно - он будет гораздо быстрей в системе чем отлаживаемый МК работающий на нормальной частоте.
Добавлено спустя 3 минуты 49 секунд:
galex1981 писал(а):Еще глюк протеуса есть: в любой проге с Уартом, написанной на Баскоме сообщения уарта в терминале отображаются в "левой" кодировке
PROTEUS выводит числа на терминал не зная в какой проге они сделаны. Вы можете подключить осциллограф к линии передачи и посмотреть какие символы передаются по осциллограме.
Авр, я уже проверял: если на CVAVR пишу тестовое сообщение в Уарт - верно выводит, на Баскоме аналогичная программа - "кракозявки" выводит. Можешь сам проверить
а как бы ассемблерный код просмотреть? как он по-коммандно исполняется. По правой кнопке на МК-AVR-Source code - только Си показывает, без отображения текущей операции (в проекте есть ассемблерные функции)
Посмотри пожалуйста серединку руководства по PROTEUS - http://proteus123.narod.ru - там со скриншотами все показано и описано текстом. По правой кн. в окне исходника в меню выбирай - "дизасембли" - можешь смотреть и шагать по асму - F11
PROTEUS очень мощный инструмент и естественно надо потратить время чтобы научится им пользоваться правильно.
Добавлено спустя 2 минуты 46 секунд:
galex1981 писал(а):Авр, я уже проверял: если на CVAVR пишу тестовое сообщение в Уарт - верно выводит, на Баскоме аналогичная программа - "кракозявки" выводит. Можешь сам проверить
Ты дай программу в BASCOM - я посмотрю.
Добавлено спустя 13 минут 37 секунд:
galex1981 писал(а):Еще глюк протеуса есть: в любой проге с Уартом, написанной на Баскоме сообщения уарта в терминале отображаются в "левой" кодировке
Я думаю ты приписываешь PROTEUS несуществующий глюк, а я тут ночью сижу проверяю очевидно - что PROTEUS выводит то что выходит из МК.
Просто тебе не удалось вывести символы в PROTEUS. Тебе не удалось, но при чем же тут PROTEUS ?????
========================================
Я взял пример баскома - все прекрасно выводится. Скриншоты и архив с проектами прилагаю.
А ведь ты и сам мог сделать внимательно и у тебя бы работало.