Страница 145 из 280

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

Добавлено: Вт янв 15, 2013 19:34:59
Engineer_Keen
unalex писал(а):потому что так у америкосов принято шестерку рисовать
Чет я сомневаюсь...


1) кривая прошивка
2) это 0x0B52
3) глюк

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

Добавлено: Вт янв 15, 2013 19:50:28
FreshMan
почему не получается со 2 точки начинать рисовать линию ?
и только когда я подвожу курсов в точку 1 то он только тогда превращается в карандаш
с чем это связано ?
http://tau.rghost.ru/43058607/image.png

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

Добавлено: Вт янв 15, 2013 20:21:34
546vlad
Soir писал(а):Взаимосвязь не понял... На мой взгляд эти короткие импульсы паразитные, или у них есть практическое назначение?
Эти короткие импульсы протеус сам "придумал". Там должны быть импульсы динамической индикации, такие же, как и на остальных портах, к которым подключены строки. При смене способа динамической индикации, о котором я писал выше, паразитных импульсов нет.

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

Добавлено: Вт янв 15, 2013 20:26:30
Chettuser
FreshMan писал(а): превращается в карандаш
в зелёный? тогда должен рисовать.
Да, кстати, а какой инструмент выбран?

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

Добавлено: Вт янв 15, 2013 20:47:10
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 тоже касается.

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

Добавлено: Вт янв 15, 2013 20:55:45
Soir
FreshMan писал(а):почему не получается со 2 точки начинать рисовать линию ?
и только когда я подвожу курсов в точку 1 то он только тогда превращается в карандаш
с чем это связано ?
Это бывает при смене инструментов. Например, когда выбран Selection Mode (стрелочка), то карандаш появляется только на точках (можно самому в нужном месте такую точку установить...). Кажется попадалось еще на каких-то инструментах, уже не помню.

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

Добавлено: Ср янв 16, 2013 04:22:09
const1105
Engineer_Keen писал(а):А, тут Си... Ну может он там сам регистры в прерывании сохраняет, или еще что. А по точкам останова не получается отследить? Или дизассемблер посмотреть?
Дело не в ошибках, все работает. Откуда берется погрешность.
Вопрос переиначим - можно ли доверять показаниям осциллографа в Proteus ?

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

Добавлено: Ср янв 16, 2013 08:02:46
Orion33
const1105 писал(а):Это вопрос программирования или Протеус чудит?
Это вопрос оптимизации. Контроллер не может мгновенно выполнить все необходимые операции, на каждую отводится такт, а иногда и не один. Потрассируйте программу и посмотрите, какие действия совершаются между возникновением прерывания и выставлением бита на порте. Если это критично для приложения, придется что-то писать на ассемблере.

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

Добавлено: Ср янв 16, 2013 08:54:28
Engineer_Keen
const1105 писал(а):Дело не в ошибках, все работает. Откуда берется погрешность.
Я ничего и не сказал об ошибках, источник погрешности можно определить трассировкой как сказал Orion33 или просто взглянув на дизассемблер (одновременно с исходником).
const1105 писал(а):Вопрос переиначим - можно ли доверять показаниям осциллографа в Proteus ?
Можно, он рисует ровно то, что будет в реальности с точностью до десятых долей мкс, проверено на куче проектов с АВРками.

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

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

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

Добавлено: Ср янв 16, 2013 12:35:09
const1105
Всем большое спасибо, цель понимания достигнута.

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

Добавлено: Ср янв 16, 2013 12:55:09
vano11
Выходит 8 версия Proteus http://www.labcenter.com/index.cfm .
Демоверсия доступна для скачивания http://www.labcenter.com/download/prodemo_download.cfm

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

Добавлено: Ср янв 16, 2013 14:49:31
Orion33
Soir писал(а):Этот момент может в Proteus и не отображаться при прохождении программы.
При трассировании с опцией показа дизассемблера Протеус проходит каждую АСМ команду, так что запись и считывание из стека там тоже видны. По крайней мере, на АВР :)

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

Добавлено: Ср янв 16, 2013 16:06:51
FreshMan
как настроить прогу чтобы я смог отлаживать прогу написанную на Си ?
на данный момент при нажатии на паузу у меня выскакивают два окна
http://rghost.ru/43076157/image.png
в одном я вижу свои переменные, а во втором, я так понимаю, я должен видеть где в данный момент в проге находится моя рабочая точка......, но оно почему то пусто
как настроить ?

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

Добавлено: Ср янв 16, 2013 16:21:30
Pavel_1978
К микроконтроллеру подключай файл .cof вместо .hex

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

Добавлено: Ср янв 16, 2013 16:32:08
FreshMan
я это сделал......, но все равно что-то не так

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

Добавлено: Ср янв 16, 2013 16:48:13
Soir
Orion33 писал(а):При трассировании с опцией показа дизассемблера Протеус проходит каждую АСМ команду, так что запись и считывание из стека там тоже видны. По крайней мере, на АВР :)
Конкретно для данного случая у меня вот так:
Изображение
То есть сохранения регистров перед выполнением прерывания нет. Возможно это вопрос оптимизации, так как в данном случае это и вся программа, то возможно компилятор "схитрил". А может сохранение производится "за кадром". Но сохранятся то они должны... ведь в конце восстанавливаются.

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

Добавлено: Ср янв 16, 2013 16:52:49
Soir
FreshMan писал(а):я это сделал......, но все равно что-то не так
А если в AVR Source Code в окошечке вверху стрелочку нажать?

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

Добавлено: Ср янв 16, 2013 17:26:12
Orion33
FreshMan писал(а):как настроить прогу чтобы я смог отлаживать прогу написанную на Си ?
как настроить ?
Исходники программы должны лежать в одной директории с файлом схемы. Тогда выпадающий список будет не пуст.

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

Добавлено: Ср янв 16, 2013 17:30:04
Orion33
Soir писал(а):Конкретно для данного случая у меня вот так:
Но сохранятся то они должны... ведь в конце восстанавливаются.
И что, при пошаговом выполнении команды так и выполняются? Прыжок в обработчик может быть уже после обработки регистров, а Протеус просто так отображает :)