Свежие обсуждения
Проектирование и моделирование

Вопросы по Proteusy

1 15 29

Знаю, что на казусе. Но там такие пространные топики, а у меня совершенно нет времени на их прочтение, дабы выковыривать оттуда жемчужные зерна.

poruchik: вообщем пока лучше подождать
Не понял, а чего ждать-то? Мне-то надо конкретно немного. Хочется поддержку ATtiny2313.

 

Zandy: а чего ждать-то?
poruchik: Nemo78 пока в работе.
Человек старается, я там выше предлагал оказать ему помощь...

 

Zandy: Хочется поддержку ATtiny2313
Симулируется нормально Proteus7.4sp3

 

Да что за хрень такая!!! Пишу проект в "кодевижен". При симуляции в шпроте все работает, все окна симуляции присутствуют, кроме самого главного - нет сишного листинга! Окошко, где он должен быть, вываливается, а самого листинга нет! Шпрот у меня 7.2 сп6. Контроллер - атмега8.
Похожая ситуация была в ВМлабе. Также все работало, но сишного листинга тоже не было. Так и не понял почему. Решил в шпроте попробовать. И опять та же хрень!
Где я туплю? В чем дело?
.cof файл я ему скормил. Чего еще ему надо?! Думается мне, что в кодевижене "собака порылась". Если запустить сэмпл из шпрота, то все есть и все нормально. Похоже какого-то файла ему не хватает. У меня версия 2.03.8а эволюшн. Не знаю, уж что и делать. Неужели искать более старую версию и пробовать с ней?
Когда писал на асме, никаких проблем не возникало.

В АВРстудии симуляция и сишный листинг с прыгающими строчками - все чики пуки. Но ведь хочется наглядности, а не только нули да единицы отслеживать!

 

Снес таки свежую 2.03.8 версию CodeVisionAVR. Поставил старую 1.25.7.
Все заработало.
Очень странно!!! В папке проекта старая версия создает ДРУГУЮ файловую структуру (и файлы ДРУГИЕ) по сравнению со свежей версией.
Уж если разработчик так резко все поменял, неужели он не озадачивался совместимостью с другими программами. Очень странно!!! Все-таки где-то должно быть какое-то разъяснение по поводу разных файлов.

 

Опять затык. МК атмега16. Вывожу информацию в последовательный порт посредством USART. Не выводится. Начал разбираться. Есть такой статусный регистр UCSRC. Так вот, я его инициализирую байтом 0x06 или 0b00000110. Две единицы, это биты UCSZ1 и UCSZ0 означает, что фрейм прердачи и приема должен состоять из 8 бит. Когда прогоняю прогу в протеусе, инициализации UCSRC не происходит, т.е. его значение остается 0b00000000. Другими словами, вроде как инициализируется 5-битовый фрейм.
С чего бы это?
Где тут собака могла порыться? Кого винить, себя, бестолкового или протеус?

 

Информация в порт пошла, слава богу, нашел ошибку. Оказывается надо было в свойствах контроллера в протеусе точно установить тактовую частоту. А вот с регистром UCSRC непонятки остались.
В АВРстудии тоже симулировал. Там похожая история, но немного другая. После выполнения команды присвоения регистру значения это значение устанавливается, а вот после следующей (другой) команды инициализации другого регистра, тот (первый) регистр сбрасывается в 0. Однако все работает, только непонятно почему и как.
Вот эта последовательность команд инициализации USART.

UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x06;
UBRRH=0x00;
UBRRL=0x0B;

После UCSRC=0x06; регистр инициализируется, а после UBRRH=0x00; сбрасывается.

 

Еще вопросец.
Почему при выводе в терминал не работает хрень у printf и у putchar - " \n" - начинать с новой строки. Пишет все в одну строчку, не реагируя на " \n". В то же время последовательность "\r" - возврат каретки, работает. И работает не как возврат каретки, а как " \n".
С программой все в порядке. Симуляция в ВМлабе проходит нормально.

Что это, чудеса, фичи или баги?

Уж и не расчитываю, что кто-то ответит.

 

to Zandy
на вопрос от 26 ноября - читайте документацию внимательнее. Регистры UBRRH и UCSRC в мегах совмещены по адресному пространству и последовательность записи в них имеет значение!!!! Сначала UBRRH потом UCSRC с установленным в 1 битом URSEL

на вопрос от 2 декабря

Читайте хелп на терминал в Протеусе там черным по английскому написано:

The Virtual Terminal supports the ASCII control codes CR (0Dh), BS (0x08h) and BEL (0x07h). All other codes including LF (0x0A) are ignored.

Что в переводе ознаяает:
Используйте 0xD для перевода каретки т.е - \r
......
......
0x0A = \n - игнорируется.

Удачи

 

Спасибо за ответы!