|
|
|
|
Знаю, что на казусе. Но там такие пространные топики, а у меня совершенно нет времени на их прочтение, дабы выковыривать оттуда жемчужные зерна. 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 - игнорируется. Удачи |
|
|
Спасибо за ответы! |
|
|
|
|