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

Обсуждаем цифровые устройства...
Аватара пользователя
nsl2004
Мучитель микросхем
Сообщения: 402
Зарегистрирован: Пт май 29, 2009 10:14:29

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

Сообщение nsl2004 »

Engineer_Keen & Murka спасибо за помощь.
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

Roman Venom писал(а): Вы неправильно меня поняли... Я не использую команды положить/извлечь. Прерывания, подпрограммы естессно присутствуют. Как же без них? :))) И никаких недоразумений со стеком не было... Кстати ещё вот что. Были непонятные баги когда прерывания срабатывали во время операций положить/извлечь в ОЗУ.


Вот это-то и непонятно - как можно использовать прерывания ( подпрограммы еще с трудом могу представить ) без положить/извлечь ( push/pop ) ? Ведь начало любого прерывания - это

push r16
in r16,SREG
push r16
......
В отличие от x86 и многих других процессоров, AVR при входе в прерывание не сохраняет слово состояния, и это надо делать ручками, иначе после возврата из прерывания можем получить измененные N Z V C с непредсказуемыми последствиями. Ну и какими-то регистрами в обработчике Вы пользуетесь - после возврата им надо отдать прежнее содержимое. Мне неловко говорить Вам банальные вещи, наверняка вы это знаете, но как тогда без push/pop в обработчике ? Может, и проблемы с записью/чтением памяти тоже с этим связаны? За 15 лет занятий микроконтроллерами всякого было у меня, но такого - никогда.

nsl2004 писал(а): Протеус рулит.


И не только он :)) Штатная Studio от Atmel`a рулит ничуть не хуже. А сколько я тут наслушался историй про баги в Протеусе... В Студии такого не замечалось. Ну что ж - каждому овощу - свой фрукт.
Реклама
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

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

Сообщение Roman Venom »

Jack_A
Вот это-то и непонятно - как можно использовать прерывания ( подпрограммы еще с трудом могу представить ) без положить/извлечь ( push/pop ) ? Ведь начало любого прерывания - это

push r16
in r16,SREG
push r16
......
В отличие от x86 и многих других процессоров, AVR при входе в прерывание не сохраняет слово состояния, и это надо делать ручками, иначе после возврата из прерывания можем получить измененные N Z V C с непредсказуемыми последствиями. Ну и какими-то регистрами в обработчике Вы пользуетесь - после возврата им надо отдать прежнее содержимое. Мне неловко говорить Вам банальные вещи, наверняка вы это знаете, но как тогда без push/pop в обработчике ? Может, и проблемы с записью/чтением памяти тоже с этим связаны? За 15 лет занятий микроконтроллерами всякого было у меня, но такого - никогда.

На счёт непредсказуемого изменения флагов вы абсолютно правы, плюс это вроде как хороший тон программирования на ассемблере. Но я занимаюсь МК АВР относительно недавно, поэтому некоторые шалости допускаю. Что же касается проблем с записью/чтением, то я так и не понял почему они возникали, т.к. этот кусок кода был расположен не в подпрограммах(там и в прерываниях проблем не было), а в основном цикле.
Оффтоп, конечно. Но надеюсь поможет кому-то.
Успех - императив!
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3871
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

Jack_A писал(а):Ведь начало любого прерывания - это
push r16
in r16,SREG
push r16

А я использую вместо стека для хранения SREG свободный регистр (если таковой имеется), так и стек не используется и быстрее код выполняется (in-out, вместо push,in,push-pop,out,pop).
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

Engineer_Keen писал(а):
Jack_A писал(а):Ведь начало любого прерывания - это
push r16
in r16,SREG
push r16

А я использую вместо стека для хранения SREG свободный регистр (если таковой имеется), так и стек не используется и быстрее код выполняется (in-out, вместо push,in,push-pop,out,pop).

Тоже вариант. Но надо быть уверенным, что этот регистр не изменится не только программой, но и самим железом в процессе работы. А выигрыша я что-то не вижу : IO в IO напрямую не перекинешь, все равно через РОН - в чем выигрыш?
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

Roman Venom писал(а):Что же касается проблем с записью/чтением, то я так и не понял почему они возникали, т.к. этот кусок кода был расположен не в подпрограммах(там и в прерываниях проблем не было), а в основном цикле.
Оффтоп, конечно. Но надеюсь поможет кому-то.

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

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

Сообщение Engineer_Keen »

Jack_A писал(а): Тоже вариант. Но надо быть уверенным, что этот регистр не изменится не только программой, но и самим железом в процессе работы.

Ну так я и говорю, если есть свободный регистр. И контроль за неизменяемостью естественно обязателен. Но например прерывания друг друга не прерывают (если не извращаться с многоуровневыми) и в каждом обработчике можно спокойно это использовать.
Jack_A писал(а): А выигрыша я что-то не вижу : IO в IO напрямую не перекинешь, все равно через РОН - в чем выигрыш?


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

PUSH R16
IN R16,SREG
PUSH R16
...
POP R16
OUT SREG,R16
POP R16
;6 байт, 10 тактов


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

IN TMP_S,SREG
...
OUT SREG,TMP_S
;2 байта, 2 такта

:wink:
Аватара пользователя
Coviraylhik
Мучитель микросхем
Сообщения: 420
Зарегистрирован: Чт июн 03, 2010 23:06:12

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

Сообщение Coviraylhik »

Здраствуйте, Подскажите, что не так смоделировано в proteuse дозатор жидкости индикация есть, предустановки литров выставляются , а счет не идет?
Изображение
Проект в proteuse прилагаю.
Некакого перимирия, Некаких мирных шагов навстречу и периговоров.
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

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

Сообщение Soir »

Coviraylhik писал(а):Подскажите, что не так смоделировано в proteuse дозатор жидкости индикация есть, предустановки литров выставляются , а счет не идет?

1. В схеме нет четкого формирования импульсов. Это может быть критично для симуляции, в реальном устройстве должно работать.
2. Чтобы накапал литр должно поступить некоторое количество импульсов.
В Ваш проект добавил генератор импульсов (для наглядности 10 Гц) и счет работает.
Вложения
Дозатор.zip
(21.72 КБ) 255 скачиваний
Аватара пользователя
Coviraylhik
Мучитель микросхем
Сообщения: 420
Зарегистрирован: Чт июн 03, 2010 23:06:12

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

Сообщение Coviraylhik »

С генератором стало понятно, что у меня не получалось.
На вход PD4 должно быть подано 40 импульсов , и тогда счёт уменьшается на единицу.
Устройство нормально моделируется.
Спасибо.
Некакого перимирия, Некаких мирных шагов навстречу и периговоров.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

Engineer_Keen писал(а):Ну так я и говорю, если есть свободный регистр. И контроль за неизменяемостью естественно обязателен.


О, я сразу не въехал - я думал, речь идет о регистре НЕИСПОЛЬЗУЕМОГО ВНЕШНЕГО УСТРОЙСТВА ( я как-то и такой изврат пытался замутить, не помню уже - из каких побуждений ), а не о неиспользуемом РОН. Но тут нужно бдительно следить, потому что если приходится модифицировать код, можно забыть, что этот регистр "горячий" :)) , и будет трудноуловимая бага. И выигрыш пару тактов может аукнуться. Впрочем, в моем "творчестве" был период, когда я группу регистров выделил в разряд "мальчиков на побегушках", ничего глобального сквозь всю программу в них, конечно, не передавалось, а мои библиотечные подпрограммы имели их как хотели.

Я думаю, нам простят, что слегка отклонились от Протеуса, но в конце-то концов - мы ведь не про футбол и не про девочек :))
linch
Открыл глаза
Сообщения: 47
Зарегистрирован: Ср окт 27, 2010 12:17:32

Proteus: подключить к схеме питание 12В.

Сообщение linch »

Добрый день всем, нарисовал схемку и нужно запитать к примеру 12В, как это сделать в Proteus? Спасибо.
Последний раз редактировалось linch Пт мар 18, 2011 17:43:56, всего редактировалось 1 раз.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3871
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Proteus: подключит к схеме питание 12В.

Сообщение Engineer_Keen »

Вообще-то для протеуса отдельная тема есть... Но ладно. 8-я по счету пиктограмма слева - terminals mode, в ней выбираем power, ставим в схему, в свойствах пишем "+12V", все.
linch
Открыл глаза
Сообщения: 47
Зарегистрирован: Ср окт 27, 2010 12:17:32

Re: Proteus: подключит к схеме питание 12В.

Сообщение linch »

Engineer_Keen писал(а):Вообще-то для протеуса отдельная тема есть... Но ладно. 8-я по счету пиктограмма слева - terminals mode, в ней выбираем power, ставим в схему, в свойствах пишем "+12V", все.

Это та я знаю но там нет пункта свойства! Нашел батарею... Спасибо
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Re: Proteus: подключит к схеме питание 12В.

Сообщение Soir »

linch писал(а):Это та я знаю но там нет пункта свойства!

У всех есть, а у Вас нету. Все по Proteus задают вопросы в специально созданной теме, а Вы новую заводите для вопроса, требующего ответа в несколько слов... Какая-то система уже вырисовывается...
Изображение
Вложения
Edit.png
(11.3 КБ) 1545 скачиваний
linch
Открыл глаза
Сообщения: 47
Зарегистрирован: Ср окт 27, 2010 12:17:32

Re: Proteus: подключит к схеме питание 12В.

Сообщение linch »

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

Re: Proteus: подключит к схеме питание 12В.

Сообщение Soir »

linch писал(а):...Разберусь.

Должно получиться вот так:
Изображение
Вложения
Power.png
(1.67 КБ) 1491 скачивание
linch
Открыл глаза
Сообщения: 47
Зарегистрирован: Ср окт 27, 2010 12:17:32

Re: Proteus: подключит к схеме питание 12В.

Сообщение linch »

Вот
Вложения
Proteus.jpg
(23.62 КБ) 593 скачивания
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Re: Proteus: подключит к схеме питание 12В.

Сообщение Soir »

linch писал(а):Вот

Давайте уж проект, будем вместе разбираться.
linch
Открыл глаза
Сообщения: 47
Зарегистрирован: Ср окт 27, 2010 12:17:32

Re: Proteus: подключит к схеме питание 12В.

Сообщение linch »

Да это не совсем проект. Спасибо.
Вложения
GG.jpg
(81.44 КБ) 493 скачивания
Последний раз редактировалось linch Пт мар 18, 2011 19:11:52, всего редактировалось 1 раз.
Ответить

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