Proteus: вопросы и ответы

Обсуждаем цифровые устройства...
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Proteus: вопросы и ответы

Сообщение Engineer_Keen »

unalex писал(а):потому что так у америкосов принято шестерку рисовать

Чет я сомневаюсь...


1) кривая прошивка
2) это 0x0B52
3) глюк
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: Proteus: вопросы и ответы

Сообщение FreshMan »

почему не получается со 2 точки начинать рисовать линию ?
и только когда я подвожу курсов в точку 1 то он только тогда превращается в карандаш
с чем это связано ?
http://tau.rghost.ru/43058607/image.png
Tell Me The Truth
Аватара пользователя
546vlad
Нашел транзистор. Понюхал.
Сообщения: 175
Зарегистрирован: Ср июл 29, 2009 23:22:36
Откуда: Беларусь

Re: Proteus: вопросы и ответы

Сообщение 546vlad »

Soir писал(а):Взаимосвязь не понял... На мой взгляд эти короткие импульсы паразитные, или у них есть практическое назначение?

Эти короткие импульсы протеус сам "придумал". Там должны быть импульсы динамической индикации, такие же, как и на остальных портах, к которым подключены строки. При смене способа динамической индикации, о котором я писал выше, паразитных импульсов нет.
©Кварц обладает экстремальной поливариантностью своего генезиса.
Chettuser

Re: Proteus: вопросы и ответы

Сообщение Chettuser »

FreshMan писал(а): превращается в карандаш

в зелёный? тогда должен рисовать.
Да, кстати, а какой инструмент выбран?
Последний раз редактировалось Chettuser Ср янв 16, 2013 05:01:26, всего редактировалось 1 раз.
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Re: Proteus: вопросы и ответы

Сообщение Soir »

546vlad писал(а):Эти короткие импульсы протеус сам "придумал".

Как тут только что писАлось:
"Чет я сомневаюсь..."
546vlad писал(а):...При смене способа динамической индикации, о котором я писал выше, паразитных импульсов нет.

Перед сменой способа динамической индикации:
...
// тушим строки
PORTB=0x3F;
PORTC=0x03;
PORTD = col[col_pos];
//часть строк на PORTB, часть на PORTC
PORTB = row[0][s_buf[col_pos]];
PORTC = row[1][s_buf[col_pos]];
...
А вот после смены, строчки выделенной красным уже нет... Кстати PORTB тоже касается.
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Re: Proteus: вопросы и ответы

Сообщение Soir »

FreshMan писал(а):почему не получается со 2 точки начинать рисовать линию ?
и только когда я подвожу курсов в точку 1 то он только тогда превращается в карандаш
с чем это связано ?

Это бывает при смене инструментов. Например, когда выбран Selection Mode (стрелочка), то карандаш появляется только на точках (можно самому в нужном месте такую точку установить...). Кажется попадалось еще на каких-то инструментах, уже не помню.
const1105
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Сб мар 19, 2011 15:19:47
Откуда: Владивосток

Re: Proteus: вопросы и ответы

Сообщение const1105 »

Engineer_Keen писал(а):А, тут Си... Ну может он там сам регистры в прерывании сохраняет, или еще что. А по точкам останова не получается отследить? Или дизассемблер посмотреть?

Дело не в ошибках, все работает. Откуда берется погрешность.
Вопрос переиначим - можно ли доверять показаниям осциллографа в Proteus ?
Orion33
Друг Кота
Сообщения: 4753
Зарегистрирован: Сб апр 21, 2012 19:21:43

Re: Proteus: вопросы и ответы

Сообщение Orion33 »

const1105 писал(а):Это вопрос программирования или Протеус чудит?

Это вопрос оптимизации. Контроллер не может мгновенно выполнить все необходимые операции, на каждую отводится такт, а иногда и не один. Потрассируйте программу и посмотрите, какие действия совершаются между возникновением прерывания и выставлением бита на порте. Если это критично для приложения, придется что-то писать на ассемблере.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Proteus: вопросы и ответы

Сообщение Engineer_Keen »

const1105 писал(а):Дело не в ошибках, все работает. Откуда берется погрешность.

Я ничего и не сказал об ошибках, источник погрешности можно определить трассировкой как сказал Orion33 или просто взглянув на дизассемблер (одновременно с исходником).
const1105 писал(а):Вопрос переиначим - можно ли доверять показаниям осциллографа в Proteus ?

Можно, он рисует ровно то, что будет в реальности с точностью до десятых долей мкс, проверено на куче проектов с АВРками.
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Re: Proteus: вопросы и ответы

Сообщение Soir »

const1105 писал(а):Дело не в ошибках, все работает. Откуда берется погрешность.

Наверно все таки дело в ошибках и оттуда берется погрешность.
1. Есть такой калькулятор для расчёта таймеров TMR0-TMR1 PIC-контроллеров. Воспользуйтесь им для определения TMR1H и TMR1L. Подставив Ваши значения получим 100,008 мсек.
2. Вам уже предлагали дезассемблеривать код и посмотреть как он выполняется. Даже то, что видно в Cи операция if (TMR1IF) и запись новых значений в таймер уже что-то весят.
3. Кроме того стандартная процедура входа в прерывание предусматривает сохранение рабочего регистра и регистра статуса (при выходе делается обратная процедура - значения регистров восстанавливаются), а затем уже все остальное. Как это делает в Вашем конкретном случае компилятор, которым Вы пользуетесь, надо смотреть в ассемблере. Тоже время... Этот момент может в Proteus и не отображаться при прохождении программы.
---
Поэтому, или просчитайте все время между наступлением события прерывания и записью в TMR1 нового значения и внесите коррекцию в значения для таймера, или доверьтесь Proteus и опытным путем подберите эти значения. Ориентироваться лучше все-таки не по осциллографу а установить точку останова на целевой процедуре - переключении RB0 и Proteus покажет время. Или при помощи анализатора...
const1105
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Сб мар 19, 2011 15:19:47
Откуда: Владивосток

Re: Proteus: вопросы и ответы

Сообщение const1105 »

Всем большое спасибо, цель понимания достигнута.
vano11
Вымогатель припоя
Сообщения: 653
Зарегистрирован: Вс дек 20, 2009 09:44:51
Откуда: 016RU

Re: Proteus: вопросы и ответы

Сообщение vano11 »

Выходит 8 версия Proteus http://www.labcenter.com/index.cfm .
Демоверсия доступна для скачивания http://www.labcenter.com/download/prodemo_download.cfm
Orion33
Друг Кота
Сообщения: 4753
Зарегистрирован: Сб апр 21, 2012 19:21:43

Re: Proteus: вопросы и ответы

Сообщение Orion33 »

Soir писал(а):Этот момент может в Proteus и не отображаться при прохождении программы.

При трассировании с опцией показа дизассемблера Протеус проходит каждую АСМ команду, так что запись и считывание из стека там тоже видны. По крайней мере, на АВР :)
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: Proteus: вопросы и ответы

Сообщение FreshMan »

как настроить прогу чтобы я смог отлаживать прогу написанную на Си ?
на данный момент при нажатии на паузу у меня выскакивают два окна
http://rghost.ru/43076157/image.png
в одном я вижу свои переменные, а во втором, я так понимаю, я должен видеть где в данный момент в проге находится моя рабочая точка......, но оно почему то пусто
как настроить ?
Tell Me The Truth
Аватара пользователя
Pavel_1978
Опытный кот
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

Re: Proteus: вопросы и ответы

Сообщение Pavel_1978 »

К микроконтроллеру подключай файл .cof вместо .hex
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: Proteus: вопросы и ответы

Сообщение FreshMan »

я это сделал......, но все равно что-то не так
Tell Me The Truth
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Re: Proteus: вопросы и ответы

Сообщение Soir »

Orion33 писал(а):При трассировании с опцией показа дизассемблера Протеус проходит каждую АСМ команду, так что запись и считывание из стека там тоже видны. По крайней мере, на АВР :)

Конкретно для данного случая у меня вот так:
Изображение
То есть сохранения регистров перед выполнением прерывания нет. Возможно это вопрос оптимизации, так как в данном случае это и вся программа, то возможно компилятор "схитрил". А может сохранение производится "за кадром". Но сохранятся то они должны... ведь в конце восстанавливаются.
Вложения
interr.png
(13.4 КБ) 779 скачиваний
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Re: Proteus: вопросы и ответы

Сообщение Soir »

FreshMan писал(а):я это сделал......, но все равно что-то не так

А если в AVR Source Code в окошечке вверху стрелочку нажать?
Orion33
Друг Кота
Сообщения: 4753
Зарегистрирован: Сб апр 21, 2012 19:21:43

Re: Proteus: вопросы и ответы

Сообщение Orion33 »

FreshMan писал(а):как настроить прогу чтобы я смог отлаживать прогу написанную на Си ?
как настроить ?

Исходники программы должны лежать в одной директории с файлом схемы. Тогда выпадающий список будет не пуст.
Orion33
Друг Кота
Сообщения: 4753
Зарегистрирован: Сб апр 21, 2012 19:21:43

Re: Proteus: вопросы и ответы

Сообщение Orion33 »

Soir писал(а):Конкретно для данного случая у меня вот так:
Но сохранятся то они должны... ведь в конце восстанавливаются.

И что, при пошаговом выполнении команды так и выполняются? Прыжок в обработчик может быть уже после обработки регистров, а Протеус просто так отображает :)
Ответить

Вернуться в «Цифровая техника»