30.07.2010, 17:42
|
|
Прописка
Регистрация: 14.11.2006
Сообщений: 150
Сказал спасибо: 31
Сказали Спасибо 125 раз(а) в 62 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Есть проект устройства с динамической индикацией на многоразрядном семисегментном индикаторе. Если какой-нибудь сегмент отсоединить от динамической индикации и подать на него отдельно напряжение (для ОК или соединить с общим проводом для ОА) то он должен быть включенным постоянно во всех разрядах. На практике наоборот - оказывается выключенным. При пошаговом прохождении программы все ok. Во вложении проект из папки SAMPLES Proteus 7.6SP4 с попыткой засветить сегмент A. То же самое происходит и с другими проектами.
Вопрос. Это глюк или надо что-то изменить в настройках программы?
|
|
|
|
30.07.2010, 21:31
|
|
Прохожий
Регистрация: 03.09.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Всем добрый день. Хочу поделиться проблемой с которой я недавно столкнулся. Может это кому-то сэкономит время. Столкнулся с таким глюками в Proteus –е 7.6 SP0-SP4 в модели mega16 при работе с аппаратным модулем TWI(аналог I2C) при формировании команды стоп:
void twi_stop(void)
{
TWCR=(1‹‹TWINT)|(1‹‹TWEN)|(1‹‹TWSTO);
}
бит TWSTO регистра TWCR после установки и генерации команды стоп не сбрасывается. В мануале на мегу написано что бит TWSTO сбрасывается аппаратно после формирования команды стоп на линии. В следствии этого программа зацикливается. И дальнейшая отладка не возможна. Пробовал сбросить этот бит программно, но ни какого результата не добился. После заливки прошивки в железо все работает отлично. И еще один глюк при работе с модулем USART тойже модели mega 16, при настройке приемопередатчика для передачи 8 бит данных и 2 стоповых UCSRC = (1‹‹URSEL)|(1‹‹USBS)|(3‹‹UCSZ0); не устанавливается бит USBS регистра UCSRC. И при отладка программы в Proteuse в виртуальны терминал передается всякий бред. При настройки виртуального терминала для приема 8 бит и 1 стопового пакеты принимаются корректно. В железа также все работает отлично. Глюк с TWI в новой версии Proteus-а 7.7 SP2 был исправлен, а с UART –ом так и остался.
|
|
|
|
31.07.2010, 11:21
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Сообщение от Soir
|
Вопрос. Это глюк или надо что-то изменить в настройках программы?
|
Это не глюк, это особенность программы. Я вроде бы уже указывал на это в FAQ, а позже разберу и подробнее при рассмотрении всех MPX. Пока можете ориентироваться на HELP модели (входите по одноименной кнопке из окна Properties или через ПУСК-› Все прог...-› Proteus VSM Model Help -› LED and LCD Display Models). Только не верьте фразе 8х8 - после появления в библиотеках 16-сегментных индикаторов матрица была расширена, а хелп поправить как всегда забыли. В двух словах:
Программная модель дисплея LEDMPX. MPX - мультиплексирование, т.е. мы имеем матрицу из n строк (сегментов A,B,C...) и n столбцов (количество разрядов индикатора 1,2,3...). При симуляции все элементы матрицы опрашиваются программой, и на основании заданного в свойствах дисплея Trigger Time (тоже кстати в хелпе по умолчанию указано неправильно - на деле 1ms) принимается решение - зажигать или нет данный элемент. Но тут еще накладываются и параметры анимации в ISIS, а конкретно Time Step per Frame - по умолчанию 50 ms. Поэтому при непрерывной симуляции возможно совпадение - воспроизведение данной строки матрицы (сегмента) все время попадает на момент гашения. Кстати именно в приведенном Вами Tiny15 Demo, для индикации еще используется и мультиплексирование выводов МК - то на дешифратор сегментов U2, то на защелку разрядов U3. Тактирование идет с PB4. Это тоже "перчику подсыпает". Посмотрите что происходит на этапе переключения цифирь - график. Поэтому все эти факторы надо учитывать при симуляции. В данном случае достаточно просто уменьшить время Time Step per Frame с 50, ну например до 30 ms и сегмент начнет подмаргивать. Того же эффекта можно добиться и снижением Trigger Time, например до 8 ns, но при этом начнут еще и накладываться всякие побочные данные - см. ??? на графике и индикация получится "смазанной
|
|
|
Сказали "Спасибо" Halex07
|
|
|
31.07.2010, 14:17
|
|
Прописка
Регистрация: 14.11.2006
Сообщений: 150
Сказал спасибо: 31
Сказали Спасибо 125 раз(а) в 62 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Сообщение от Halex07
|
...Поэтому все эти факторы надо учитывать при симуляции...
|
Менял все, что можно в параметрах анимации, симуляции, пытался уйти от кратных параметров... лучшее, чего смог добиться это примерно такого же эффекта как у Вас.
Было бы понятно, если бы некорректно работал какой-нибудь сегмент, учавствующий в динамической индикации в полной мере. Тут же подается постоянное напряжение на сегмент, и при включении разряда вероятность включения данного сегмента (т.е. не совпадения всех параметров, указанных Вами) должна быть выше, чем в "чистой" динамике. ![Озадачен](images/smilies/icon_confused.gif)
P.S.
Если сегмент подключить к генератору, скажем 100Гц, то работает...
Последний раз редактировалось Soir; 31.07.2010 в 15:32.
|
|
|
|
01.08.2010, 10:11
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Сообщение от Soir
|
Если сегмент подключить к генератору, скажем 100Гц, то работает...
|
А если к генератору с периодом индикации ~41ms (см. график), то получите еще один интересный эффект.
А вот еще один интересный вариант для исследования. Я приделал генератор сигналов, чтобы можно было плавно менять частоту. Попробуйте с подключенным нижним сегментом выставлять частоты кратные 40. Сейчас там стоит 390Гц, попробуйте 400, ну или 160 и 158. Т.е. при кратности Time Step per Frame (оставлена по умолчанию - 50ms) х 4 разряда сегменты гаснут. стоит чуть сдвинуть - начинают проявляться. Какой алгоритм заложен разработчиком в библиотеку - известно только ему. Но, как человек "мизинцем левой ноги" причастный к программированию могу почти достоверно угадать, что там есть и усреднения результатов опроса состояния ног, привязанные к Trigger Time и еще какие нибудь навороты с проверкой. Для нас он оставил только один параметр - Trigger Time. Ну и возможность оперировать общий катод/общий анод за счет инвертирования сигналов с выводов индикатора. Я этот параметр нарочно сделал видимым, чтобы Вы поняли - чем отличаются CA и CC.
Поэтому, когда я разбирал динамическую индикацию в FAQ, специально подчеркнул, что в симуляции может быть одно, а в железе другое. Но как инструмент проверки работы индикации ISIS все же использовать можно и нужно. Крупные "косяки" обнаруживаются сразу.
PS Чуть не забыл, а вот как раз завешивание сегмента на землю (того же нижнего) в приложенном проекте отрабатывает нормально.
Последний раз редактировалось Halex07; 01.08.2010 в 12:06.
|
|
|
|
01.08.2010, 16:56
|
|
Прописка
Регистрация: 14.11.2006
Сообщений: 150
Сказал спасибо: 31
Сказали Спасибо 125 раз(а) в 62 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Сообщение от Halex07
|
Какой алгоритм заложен разработчиком в библиотеку - известно только ему.
|
Картина меняется если после SW3 установить буферный элемент
|
|
|
|
07.08.2010, 14:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Есть проблема с отладкой в протеусе v7.7 SP2 в связке с компилятором CCS v4.084.Когда программа располагается в первой странице памяти программ,то отладка идет нормально.То есть можно поставить точку останова и пройтись пошагово.Но как тока функция оказывается во втором банке памяти программ то пошагово уже не пройтись и не остановится.
Кто с этим сталкивался и какое есть решение?
Что успел узнать из помощи по протеусу: То что форматы coff отличаются в зависимости от компилятора.Также посмотрел на сайте протеуса написано что поддержка есть CCS для 16 пиков.Думаю надо копаться в компиляторе самом.
Посмотрел что еще поддерживается формат отладочного файла COD,создать смог,но подключить не дает,видит тока coff и hex.
__________________
Глаза боятся,а руки делают.
Последний раз редактировалось CERGEI1982; 08.08.2010 в 04:54.
Причина: дополнение
|
|
|
|
08.08.2010, 14:09
|
|
Вид на жительство
Регистрация: 06.10.2006
Сообщений: 329
Сказал спасибо: 4
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Сообщение от CERGEI1982
|
Есть проблема с отладкой в протеусе v7.7 SP2 в связке с компилятором CCS v4.084
|
версию 7.7 сп2 я пока не ставил, там надо новые глюки искать а времени на это нет.
Конкретно с CCS я не работаю но приведу свой пример.
Я работаю с дс33 но такой модели нет и решил частично отлаживать код используя PIC24FJ128GA010. Я уже писал о том, что протеус неверно выполняет некоторые инструкции, тут же я столкнулся с новыми проблемами. При симулировании в среде протеуса более или мене работает используя условную компиляцию я делаю код только для моделирования. Начиная с некоторого размера кода (за 50%) если запускать из под МПЛАБ постоянно в трап попадаю причем если запускать в протеусе или железе то все нормально.
К чему это я да просто протеус штука несколько глюковатая и надо эти глюки знать. У меня проекты довольно большие и пока ни один не удалось полностью запустить в протеусе, но функции по отдельности я успешно моделирую.
Обычно для протеуса есть отдельный проект (полный код, но собранный используя условную компиляцию, часто и камень другой тот, что есть в наличие) Делаю точку входа на исследуемую функцию предварительно настроив необходимые параметры.
Надеюсь я ответил на вопрос.
Попробуй запускать протеус из под МПЛАБ, скорее всего будет нормально.
Последний раз редактировалось DL36; 08.08.2010 в 19:54.
Причина: Добавил немного
|
|
|
|
18.08.2010, 09:21
|
|
Частый гость
Регистрация: 10.10.2009
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
Проблема с Proteus или так должно быть?
Вопрос по AVR Tiny261 или, возможно, в целом по всем AVR.
Цель простейшая - запустить ADC в режиме Free Running Mode.
Бит разрешения АЦП - ADEN устанавливаю первым, потом все необходимые регистры по фирменной DataSheet.
Последним устанавливаю бит начала первой конверсии ADSC. Вроде, судя по документации все должно и так
работать.
Но всё включается только когда я разрешу прерывания по АЦП - ADIE=›1. Прерывание пустое, там стоит RETI.
Я могу логично предположить, что каждое новое преобразование инициируется флагом ADIF, но почему в
документации об этом явно не указано? Интересно, в железе так же или нет? И можно ли обойтись без применения
прерываний.
А вот ещё конкретный баг Proteus для Tiny261. Пол ночи убил, чтобы понять.
Запускаю Timer1 в простом NormalMode т.е. счетик от 00 до Max и прерывание по переполнению. Не работает
исключительно потому, что этот MAX он берет не просто, а читает его значение из определённого регистра
OCR1C. Это нормально само по себе, не нормально то, что при сбросе этот регистр в Proteus тоже сбрасывается как
и остальные, а в железном реале он устанавливается в 0xFF.
PS. Я допускаю, что я лошара, и не обижусь, если гуру типа Тень меня помакают носом.
|
|
|
|
19.08.2010, 00:15
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
Re: Proteus - глюки, проблемы с установкой
To OverHead
Накропали много, а информации - нуль. Устал повторять...
1. Версия Протеуса??? Многие глюки, но не все убраны только в 7.7.
2. На чем пишете и в чем компилируете???
3. В идеале принято выкладывать пример неработающего (неправильно работающего) проекта.
Так что пока и "носом макать" не во что.
|
|
|
Сказали "Спасибо" Halex07
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:13.
|
|