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
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Proteus: вопросы и ответы
12...262917 (при DELAY=LOOP=1...0 соответственно). Такты считать влом. Симулировал в протеусе.
Re: Proteus: вопросы и ответы
Engineer_Keen, не поняла, 12 это минимальное значение Delay, а второе число максимальное? По какой формуле считать-то вообще?
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 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
4 - из цикла DEC R17 (1) - NOP (1) - BRNE M1(2), 1027 - из внешнего цикла относительно предыдущего, а единицы отнимаются потому, что сначала происходит вычитание (DEC), а потом сравнение (BRNE).
Re: Proteus: вопросы и ответы
Engineer_Keen, а почему идет именно до 255, и потом с 256 начинается, а не другое какое-то число?
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 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
То же самое с 255 - выполнится 255 раз. А вот с 0 - выполнится 256 раз, так как после первого DEC в R16 получится число 255 и условие выхода из цикла не выполнится. А выполнится только после того, как R16 пройдет по кругу все значения до 0.
Тема давно ушла от протеуса, остальные вопросы лучше задавать в разделе по МК и ПЛИС
Re: Proteus: вопросы и ответы
Engineer_Keen, чего это она ушла от протеуса, в той теме не факт, что мне кто-то подскажет, а здесь Вы мне помогаете хорошо.
А в протеусе это можно как-то посмотреть? Запустить схему и посмотреть количество тактов где-нибудь?
А в протеусе это можно как-то посмотреть? Запустить схему и посмотреть количество тактов где-нибудь?
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Proteus: вопросы и ответы
Нужно скомпилировать программу и запустить симуляцию. Поставить точки останова не начало и конец интересующего фрагмента и как только выполнение дойдет до начала фрагмента посмотреть количество тактов, запустить дальше и на второй точке опять посмотреть количество тактов. Разница и будет искомое число. Симуляцию можно делать и в протеусе и в самой студии.
Re: Proteus: вопросы и ответы
Engineer_Keen, вот ей богу я не знаю, что такое точки останова. У меня есть рабочая программа и схема в протеусе, вот, а нужный фрагмент в самом конце программы. Может продемонстрируете?
- Вложения
-
- Протеус.zip
- (19.27 КБ) 191 скачивание
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
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Proteus: вопросы и ответы
Да.Иринка писал(а):а число тактов это Cycle Counter?
Один терминал подключить Rx-ом на одну линию, второй Rx-ом на другую Tx-ы не подключать.EmDmAl писал(а): Как подсоеденить Virtual Terminal, чтобы отслеживались все сигналы идущие как от виртуального МК, так и с физического?
Re: Proteus: вопросы и ответы
Спасибо, так читаются обе линии. А не подскажите (забыл написать выше) как отправлять команды по линии Tx этим МК в схеме? Создав еще один терминал и повесив Tx(Virtual Terminal) на линию Tx или Rx не решает проблему отправки информации по этой. Или возможно надо все сабирать по другой схеме, например как MAX232?Engineer_Keen писал(а):Один терминал подключить Rx-ом на одну линию, второй Rx-ом на другую Tx-ы не подключать.
Последний раз редактировалось EmDmAl Чт апр 12, 2012 21:11:14, всего редактировалось 1 раз.


