Proteus: вопросы и ответы
Re: Proteus: вопросы и ответы
saba, спасибо большое, а вопрос аналогичный, как сделать двойной щелчок по кнопке, а не одинарный? Или это нельзя осуществить не трогая саму программу?
- Реклама
Re: Proteus: вопросы и ответы
Chettuser, спасибо, хоть буду знать как элементы называются, может еще пригодится.
Re: Proteus: вопросы и ответы
timer32, огромное спасибо, а вопрос, резисторы с конденсаторами на схеме необходимы? Такая сложная схема, элементов очень много.
- Реклама
Re: Proteus: вопросы и ответы
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 такт
Вот исходя из этого, нужно рассчитать минимальное и максимальное количество тактов.
А может мне еще вот это подскажете?
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 такт
Вот исходя из этого, нужно рассчитать минимальное и максимальное количество тактов.
- Engineer_Keen
- Друг Кота
- Сообщения: 3869
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Proteus: вопросы и ответы
12...262917 (при DELAY=LOOP=1...0 соответственно). Такты считать влом. Симулировал в протеусе.
Re: Proteus: вопросы и ответы
Engineer_Keen, не поняла, 12 это минимальное значение Delay, а второе число максимальное? По какой формуле считать-то вообще?
- Engineer_Keen
- Друг Кота
- Сообщения: 3869
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Proteus: вопросы и ответы
Я же говорю что не считал такты. Если выводить формулу из результатов симуляции, то получается:
Если подумать, то 12 получается из количества тактов, при котором весь код выполнится без циклов (простая сумма тактов),
4 - из цикла DEC R17 (1) - NOP (1) - BRNE M1(2), 1027 - из внешнего цикла относительно предыдущего, а единицы отнимаются потому, что сначала происходит вычитание (DEC), а потом сравнение (BRNE).
Код: Выделить всё
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).
Re: Proteus: вопросы и ответы
Engineer_Keen, а почему идет именно до 255, и потом с 256 начинается, а не другое какое-то число?
- Engineer_Keen
- Друг Кота
- Сообщения: 3869
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Proteus: вопросы и ответы
Потому что регистры 8-битные. Цикл
Выполнится 1 раз, так как регистр уменьшится и станет равен 0 сразу.
То же самое с 255 - выполнится 255 раз. А вот с 0 - выполнится 256 раз, так как после первого DEC в R16 получится число 255 и условие выхода из цикла не выполнится. А выполнится только после того, как R16 пройдет по кругу все значения до 0.
Тема давно ушла от протеуса, остальные вопросы лучше задавать в разделе по МК и ПЛИС
Код: Выделить всё
LDI R16,1
L1: DEC R16
BRNE L1
Выполнится 1 раз, так как регистр уменьшится и станет равен 0 сразу.
То же самое с 255 - выполнится 255 раз. А вот с 0 - выполнится 256 раз, так как после первого DEC в R16 получится число 255 и условие выхода из цикла не выполнится. А выполнится только после того, как R16 пройдет по кругу все значения до 0.
Тема давно ушла от протеуса, остальные вопросы лучше задавать в разделе по МК и ПЛИС
Re: Proteus: вопросы и ответы
Engineer_Keen, чего это она ушла от протеуса, в той теме не факт, что мне кто-то подскажет, а здесь Вы мне помогаете хорошо.
А в протеусе это можно как-то посмотреть? Запустить схему и посмотреть количество тактов где-нибудь?
А в протеусе это можно как-то посмотреть? Запустить схему и посмотреть количество тактов где-нибудь?
- Engineer_Keen
- Друг Кота
- Сообщения: 3869
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Proteus: вопросы и ответы
Нужно скомпилировать программу и запустить симуляцию. Поставить точки останова не начало и конец интересующего фрагмента и как только выполнение дойдет до начала фрагмента посмотреть количество тактов, запустить дальше и на второй точке опять посмотреть количество тактов. Разница и будет искомое число. Симуляцию можно делать и в протеусе и в самой студии.
Re: Proteus: вопросы и ответы
Engineer_Keen, вот ей богу я не знаю, что такое точки останова. У меня есть рабочая программа и схема в протеусе, вот, а нужный фрагмент в самом конце программы. Может продемонстрируете?
- Вложения
-
- Протеус.zip
- (19.27 КБ) 190 скачиваний
Re: Proteus: вопросы и ответы
Ой, внучка, для такой простой задачки и Противус не нужен. Запускаешь Студию, загружаешь нужный файл, находишь нужную команду, подводишь к ней курсор и хрясь F9.
Все, имеем точку останова. А потом F5 - и будет крутиться до этой точки останова, если конечно, не зациклится. И попутно сама посчитает, сколько там прошло тактов и микросекунд при заданной частоте кварца.
Точка останова - это вроде автобусной остановки. там программа обязательно остановится по нашему требованию. И можно смотреть все : состояние регистров, флагов, памяти...
Все, имеем точку останова. А потом F5 - и будет крутиться до этой точки останова, если конечно, не зациклится. И попутно сама посчитает, сколько там прошло тактов и микросекунд при заданной частоте кварца.
Точка останова - это вроде автобусной остановки. там программа обязательно остановится по нашему требованию. И можно смотреть все : состояние регистров, флагов, памяти...
Re: Proteus: вопросы и ответы
Jack_A, спасибо большое, а число тактов это Cycle Counter?
-
Roman_Volgodonsk
- Родился
- Сообщения: 4
- Зарегистрирован: Вт ноя 01, 2011 12:30:39
Re: Proteus: вопросы и ответы
У меня очень маленький вопрос - как сделать так, что-бы источник напряжения, выдавал напряжение не относительно земли, а относительно выбранной мною точки?
всё, уже не надо, нашел в SIMULATOR PRIMITIVES ....
всё, уже не надо, нашел в SIMULATOR PRIMITIVES ....
Последний раз редактировалось Roman_Volgodonsk Пт апр 13, 2012 12:33:53, всего редактировалось 1 раз.
Re: Proteus: вопросы и ответы
Здравствуйте. Не стал создавать новую тему, т.к. эта тема охватывает весь 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, чтобы отслеживались все сигналы идущие как от виртуального МК, так и с физического? С уважением Дмитрий.
При попытки подсоединения 2х терминал (two_virt.gif) по разным схемам Rx, Tx сигналы неотображаются вообще.
Как подсоеденить Virtual Terminal, чтобы отслеживались все сигналы идущие как от виртуального МК, так и с физического? С уважением Дмитрий.
- Engineer_Keen
- Друг Кота
- Сообщения: 3869
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Proteus: вопросы и ответы
Иринка писал(а):а число тактов это Cycle Counter?
Да.
EmDmAl писал(а):Как подсоеденить Virtual Terminal, чтобы отслеживались все сигналы идущие как от виртуального МК, так и с физического?
Один терминал подключить Rx-ом на одну линию, второй Rx-ом на другую Tx-ы не подключать.
Re: Proteus: вопросы и ответы
Engineer_Keen писал(а):Один терминал подключить Rx-ом на одну линию, второй Rx-ом на другую Tx-ы не подключать.
Спасибо, так читаются обе линии. А не подскажите (забыл написать выше) как отправлять команды по линии Tx этим МК в схеме? Создав еще один терминал и повесив Tx(Virtual Terminal) на линию Tx или Rx не решает проблему отправки информации по этой. Или возможно надо все сабирать по другой схеме, например как MAX232?
Последний раз редактировалось EmDmAl Чт апр 12, 2012 21:11:14, всего редактировалось 1 раз.


