05.02.2010, 00:28
|
#951
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Сообщение от Lexx09
|
ATmega16 не эмулирует команду MULS R30,R26
|
Исправлено. Спасибо за сообщение.
|
|
|
|
05.02.2010, 11:39
|
#952
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
При запуске симуляции микроконтроллеров авр флаги внешних прерываний (int0...intx) в регистре EIFR устанавливаются в еденицу. В результате, если разрешить внешнее прерывание, то протеус сразу выполняет процедуру обработки соответствующего прерывания. Ни в авр-студии, ни в реале такого не происходит, и биты после ресета устанавливаются в 0. Проблема была замечана на тини2313, проверена на меге 128. По видимому, общая для всех авр. На картинке видно, что сразу после сброса, еще до инициализации переферии (выводы в 3м состоянии) флаги внешних прерываний INTF0 и INTF1 уже установлены.
Версия 7.6SP0.
|
|
|
|
05.02.2010, 23:55
|
#953
|
Частый гость
Регистрация: 02.07.2006
Сообщений: 13
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Уважаемый ТЕНЬ! Поясните, пожалуйста, поведение интерфейса I2c в процессоре LPC2124. После формирования условия "СТОП" (I2CCONSET=0x10 процессор непрерывно ходит в прерывание по I2C с 0xF8 в регистре статуса. Проект прилагаю.
С благодарностью, Анатолий Зуйков.
__________________
А.Зуйков
|
|
|
|
06.02.2010, 01:04
|
#954
|
Почётный гражданин KAZUS.RU
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,569
Сказал спасибо: 701
Сказали Спасибо 4,335 раз(а) в 1,986 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Сообщение от zaw65
|
Уважаемый ТЕНЬ! Поясните, пожалуйста, поведение интерфейса I2c в процессоре LPC2124. После формирования условия "СТОП" (I2CCONSET=0x10 процессор непрерывно ходит в прерывание по I2C с 0xF8 в регистре статуса. Проект прилагаю.
С благодарностью, Анатолий Зуйков.
|
А чего вы хотиче чтобы вам посоветовали без исходника?
|
|
|
|
06.02.2010, 14:56
|
#955
|
Частый гость
Регистрация: 02.07.2006
Сообщений: 13
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Сообщение от Kabron
|
А чего вы хотиче чтобы вам посоветовали без исходника?
|
выложить исходник
прикладываю.
__________________
А.Зуйков
|
|
|
|
06.02.2010, 15:04
|
#956
|
Почётный гражданин KAZUS.RU
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,569
Сказал спасибо: 701
Сказали Спасибо 4,335 раз(а) в 1,986 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Сообщение от zaw65
|
выложить исходник
прикладываю.
|
Вот интересный человек, а вроде бы вежливый. Проджект файл приложить совсем влом? Или вы хотите чтобы помогающие вам сами разбирались в какой среде это сделано (Кейл, Иар итп)? И сами настраивали опции проекта? Новые баги при таком подходе гарантированы.
|
|
|
|
06.02.2010, 15:10
|
#957
|
Частый гость
Регистрация: 02.07.2006
Сообщений: 13
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Сообщение от Kabron
|
Вот интересный человек, а вроде бы вежливый.
|
Выкладываю.
__________________
А.Зуйков
|
|
|
|
14.02.2010, 15:52
|
#958
|
Почётный гражданин KAZUS.RU
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,569
Сказал спасибо: 701
Сказали Спасибо 4,335 раз(а) в 1,986 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
AVR2.dll для Меги1281 не работает управление прескаллером через регистр GTCCR.
|
|
|
|
16.02.2010, 16:43
|
#959
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Еще несколько моментов по прерываниям в AVR, на этот раз таймеров, пробовал с тини2313, с другими микроконтроллерами не проверял, но думаю (с учетом сказанного мной выше по внешним прерываниям), там поведение будет аналогичным.
1) После сброса в протеусе устанавливается флаг ICF1 регистра флагов прерывания TIFR. Излишне говорить, что при разрешениии Timer/Counter1, Input Capture Interrupt в регистре TIMSK программа сразу вываливается в процедуру обработки данного прерывания, а если этой процедуры нет, вываливается куда придется.
Ни в авр-студии, ни в железе, ничего подобного не происходит. Специально для демонстрации этого эффекта, проект прикладывать не буду, это можно посмотреть в проекте по второму моменту.
2) При прерывнии по переполнению таймера0, помимо собственно флага TOV0 регистра TIFR устанавливается флаг OCF0A, что приведет к выполнению прерывания Output Compare Flag 0 A сразу после завершения прерывания по переполнению. Хотя до совпадения весьма далеко, в TCNT0 содержится 0 (что естественно после переполнения) а значение для сравнения (содержимое регистра OCR0A) равно 0x5F, и соответственно, прерывание Output Compare Flag 0 A должно возникнуть только тогда, когда таймер досчитает до 0x5F (рисунок 1). Делаю 1 шаг, программа перепрыгивает в таблицу прерываний, еще шаг, и начинается выполняться подпрограмма прерывания по переполнению, но при этом включается флаг OCF0B (прерывание Output Compare Flag 0 B, которое у меня вообще запрещено, т.к. TIMSK=0х03) (рисунок 2). Еще шаг, и я попадаю в бесконечный цикл, куда и должен был попасть после выполнения прерывания, флаг прерывания TOV0 сбрасывается (рисунок 3). Однако процессы не останавливаются , еще 2 шага, и мы снова в таблице векторов, готовимся перйти к выполнению прерываия Output Compare Flag 0 A (рисунок 4), что ожидаемо, флаг-то стоит. Выполняется прерывание, снова в бесконечном цикле, флаг прерывания сброшен. Вот только, так как реального события совпадения не было(хотя протеус подпрограмму прерывания выполнил ), таймер продолжает считать, TCNT0 растет(хотя после совпадения должен сбрасываться в 0, т.к. находится в режиме СТС (OCR0A = 2) и должен обнуляться по достижении значения сравнения) - рисунок 5.
Тут прилагаю проект софтового уарта на 9600, 1 стоп, без четности, данные 8 бит, в котором я попытался отладить прием. Для передачи использую прерывание по сравнению, для приема прерывание по переполнению таймера 0. И в железе, и в студии проект работает как должен, а в протеусе правильно работает (хотя флажок второго прерывания по сравнению взводится, но так как у меня нет этого прерывания, оно не разрешено, то на это в моем случае можно забить) только передача .
ЗЫ: Третий прикрепленный файл - реальная программа + прошивка, работающая в контроллере. Получив код 0х77 по rs485 программа увеличивает на 1 передаваемое значение, изначально равное 0х55.
ЗЫЫ: Из-за ограничений движка форума все картинки пришлось запаковать в архив risunki.rar, так как
Цитата:
|
Вы вставили 7 изображений в ваше сообщение, при ограничении в 4 изображений. Пожалуйста, вернитесь назад, уменьшите количество изображений и попробуйте снова.
Изображениями считаются также: смайлы, BB коды [img] и теги HTML ‹img›. Их использование возможно при условии, что они были включены администратором.
|
Последний раз редактировалось Someone; 16.02.2010 в 17:50.
|
|
|
|
17.02.2010, 01:31
|
#960
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Сообщение от zaw65
|
LPC2124. После формирования условия "СТОП"
|
Насколько помню, мы исправили уже эту ошибку. Исправленная модель будет в следующей версии Протеус.
Остальным - спасибо за сообщения, постараюсь разобраться.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:58.
|
|