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

Обсуждаем цифровые устройства...
Ответить
Встал на лапы
Сообщения: 85
Зарегистрирован: Вт мар 27, 2012 16:07:25

Сообщение Иринка »

saba, спасибо большое, а вопрос аналогичный, как сделать двойной щелчок по кнопке, а не одинарный? Или это нельзя осуществить не трогая саму программу?
Реклама
Встал на лапы
Сообщения: 85
Зарегистрирован: Вт мар 27, 2012 16:07:25

Сообщение Иринка »

Chettuser, спасибо, хоть буду знать как элементы называются, может еще пригодится.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 599
Зарегистрирован: Сб фев 02, 2008 10:51:52
Откуда: Khabarovsk

Сообщение timer32 »

Можно сделать так
Вложения
knopka.rar
(16.35 КБ) 243 скачивания
Встал на лапы
Сообщения: 85
Зарегистрирован: Вт мар 27, 2012 16:07:25

Сообщение Иринка »

timer32, огромное спасибо, а вопрос, резисторы с конденсаторами на схеме необходимы? Такая сложная схема, элементов очень много.
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 599
Зарегистрирован: Сб фев 02, 2008 10:51:52
Откуда: Khabarovsk

Сообщение timer32 »

Вот с одним резистором
Вложения
knopka.rar
(16.01 КБ) 189 скачиваний
Реклама
Встал на лапы
Сообщения: 85
Зарегистрирован: Вт мар 27, 2012 16:07:25

Сообщение Иринка »

timer32, спасибо, я просто в восторге от такой схемы.
А может мне еще вот это подскажете?
Wait: ldi r20,loop ;1 такт
M: ldi r17,delay ; 1 такт
M1: dec r17 ; 1 такт
nop ; 1 такт
brne M1 ; 1/2 такта
dec r20 ; 1 такт
nop ; 1 такт
brne M1 ; 1/2 такта
ret ; 4 такт
Вот исходя из этого, нужно рассчитать минимальное и максимальное количество тактов.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

12...262917 (при DELAY=LOOP=1...0 соответственно). Такты считать влом. Симулировал в протеусе.
Встал на лапы
Сообщения: 85
Зарегистрирован: Вт мар 27, 2012 16:07:25

Сообщение Иринка »

Engineer_Keen, не поняла, 12 это минимальное значение Delay, а второе число максимальное? По какой формуле считать-то вообще?
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Я же говорю что не считал такты. Если выводить формулу из результатов симуляции, то получается:

Код: Выделить всё

N=12+(DELAY-1)*4+(LOOP-1)*1027 при DELAY=1..255,LOOP=1..255
N=12+(DELAY+256)*4+(LOOP+256)*1027 при DELAY=LOOP=0
Если подумать, то 12 получается из количества тактов, при котором весь код выполнится без циклов (простая сумма тактов),
4 - из цикла DEC R17 (1) - NOP (1) - BRNE M1(2), 1027 - из внешнего цикла относительно предыдущего, а единицы отнимаются потому, что сначала происходит вычитание (DEC), а потом сравнение (BRNE).
Встал на лапы
Сообщения: 85
Зарегистрирован: Вт мар 27, 2012 16:07:25

Сообщение Иринка »

Engineer_Keen, а почему идет именно до 255, и потом с 256 начинается, а не другое какое-то число?
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Потому что регистры 8-битные. Цикл

Код: Выделить всё

LDI R16,1
L1: DEC R16
BRNE L1
Выполнится 1 раз, так как регистр уменьшится и станет равен 0 сразу.
То же самое с 255 - выполнится 255 раз. А вот с 0 - выполнится 256 раз, так как после первого DEC в R16 получится число 255 и условие выхода из цикла не выполнится. А выполнится только после того, как R16 пройдет по кругу все значения до 0.
Тема давно ушла от протеуса, остальные вопросы лучше задавать в разделе по МК и ПЛИС
Встал на лапы
Сообщения: 85
Зарегистрирован: Вт мар 27, 2012 16:07:25

Сообщение Иринка »

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

Сообщение Engineer_Keen »

Нужно скомпилировать программу и запустить симуляцию. Поставить точки останова не начало и конец интересующего фрагмента и как только выполнение дойдет до начала фрагмента посмотреть количество тактов, запустить дальше и на второй точке опять посмотреть количество тактов. Разница и будет искомое число. Симуляцию можно делать и в протеусе и в самой студии.
Встал на лапы
Сообщения: 85
Зарегистрирован: Вт мар 27, 2012 16:07:25

Сообщение Иринка »

Engineer_Keen, вот ей богу я не знаю, что такое точки останова. У меня есть рабочая программа и схема в протеусе, вот, а нужный фрагмент в самом конце программы. Может продемонстрируете?
Вложения
Протеус.zip
(19.27 КБ) 191 скачивание
Друг Кота
Аватара пользователя
Сообщения: 6325
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Ой, внучка, для такой простой задачки и Противус не нужен. Запускаешь Студию, загружаешь нужный файл, находишь нужную команду, подводишь к ней курсор и хрясь F9.
Все, имеем точку останова. А потом F5 - и будет крутиться до этой точки останова, если конечно, не зациклится. И попутно сама посчитает, сколько там прошло тактов и микросекунд при заданной частоте кварца.
Точка останова - это вроде автобусной остановки. там программа обязательно остановится по нашему требованию. И можно смотреть все : состояние регистров, флагов, памяти...
Встал на лапы
Сообщения: 85
Зарегистрирован: Вт мар 27, 2012 16:07:25

Сообщение Иринка »

Jack_A, спасибо большое, а число тактов это Cycle Counter?
Родился
Сообщения: 4
Зарегистрирован: Вт ноя 01, 2011 12:30:39

Сообщение Roman_Volgodonsk »

У меня очень маленький вопрос - как сделать так, что-бы источник напряжения, выдавал напряжение не относительно земли, а относительно выбранной мною точки?

всё, уже не надо, нашел в SIMULATOR PRIMITIVES ....
Последний раз редактировалось Roman_Volgodonsk Пт апр 13, 2012 12:33:53, всего редактировалось 1 раз.
Открыл глаза
Сообщения: 51
Зарегистрирован: Чт мар 22, 2012 09:14:18
Откуда: Липецк

Сообщение EmDmAl »

Здравствуйте. Не стал создавать новую тему, т.к. эта тема охватывает весь Proteus. У меня Release 7.5 SP3. Решил смоделировать схему подключения МК Atmega32 через COMPIM к физическому МК Atmega32 по USART через FT232RL. Между ними поставил Virtual Terminal для отслеживания сигнала. При подключении к каждому МК отдельно данные успешно передаются. Но при попытки подсоединения Virtual Terminal к общей схеме присоединения этих двух МК, данные передаются только с какого-нибудь одного. Например если по 1ой схеме (Phys_work.gif), то данные отслеживаются с физического МК. Если по 2ой схеме (Virt_work.gif), то отслеживаются с виртуального МК. Как видите из схем разница только в том что Virtual Terminal подсоединяется по разному к прослушиванию линии Rx, Tx.
При попытки подсоединения 2х терминал (two_virt.gif) по разным схемам Rx, Tx сигналы неотображаются вообще.
Как подсоеденить Virtual Terminal, чтобы отслеживались все сигналы идущие как от виртуального МК, так и с физического? С уважением Дмитрий.
Virt_work.gif
(23.86 КБ) 527 скачиваний
Phys_work.gif
(23.99 КБ) 569 скачиваний
two_virt.gif
(15.62 КБ) 532 скачивания
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Иринка писал(а):а число тактов это Cycle Counter?
Да.
EmDmAl писал(а): Как подсоеденить Virtual Terminal, чтобы отслеживались все сигналы идущие как от виртуального МК, так и с физического?
Один терминал подключить Rx-ом на одну линию, второй Rx-ом на другую Tx-ы не подключать.
Открыл глаза
Сообщения: 51
Зарегистрирован: Чт мар 22, 2012 09:14:18
Откуда: Липецк

Сообщение EmDmAl »

Engineer_Keen писал(а):Один терминал подключить Rx-ом на одну линию, второй Rx-ом на другую Tx-ы не подключать.
Спасибо, так читаются обе линии. А не подскажите (забыл написать выше) как отправлять команды по линии Tx этим МК в схеме? Создав еще один терминал и повесив Tx(Virtual Terminal) на линию Tx или Rx не решает проблему отправки информации по этой. Или возможно надо все сабирать по другой схеме, например как MAX232?
Последний раз редактировалось EmDmAl Чт апр 12, 2012 21:11:14, всего редактировалось 1 раз.
Ответить

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