Radiohobby Forum

Интернет конференция журнала "Радиохобби"

Вы не вошли.

Объявление

Подписка на новые материалы от Николая Сухова - ролики, схемы, модели, онлайн конференции, консультации, чат.

Внимание! Почта в доменах Яндекс и Mail.ru не будет работать в профилях форумчан, из-за введённых правительством Украины санкций против этих компаний. Всем, кто ранее использовал подобную почту, для сохранения прежней функциональности форума, рекомендуется её поменять.

Огромная просьба, заливать тематические картинки и файлы в личные файловые каталоги на форуме, чтобы они не потерялись, со временем!

Ссылка "Загрузки" находится справа внизу формы набора сообщения.

Подписка на журнал "Радиохобби" прекращена. Подробности. Форум же - продолжает свою работу.

#1 11.03.2007 18:36:10

si
Ветеран
Откуда: Харьков
Здесь с 08.09.2006
Сообщений: 909

к вопросу о программе для РА2020

такой момент, порты МК могут работать на ввод только если в его защелке единица, а к ним напрямую подключены термометры, не совсем логично...


И ваще..

Вне форума

#2 11.03.2007 22:34:19

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: к вопросу о программе для РА2020

Почему не логично? Записываем в защелку единицу и больше защелку не трогаем. Затем периодически считываем состояние выхода термометра (который в PA2020 работает в режиме термостата).

Вне форума

#3 12.03.2007 00:14:26

si
Ветеран
Откуда: Харьков
Здесь с 08.09.2006
Сообщений: 909

Re: к вопросу о программе для РА2020

Ну да... просто если б все были единицы в неаварийном режиме софт бы упростился, хотя там и так не сложно, но...
кстати а АВР такой же принцип выходов-защелок?


И ваще..

Вне форума

#4 12.03.2007 02:35:04

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: к вопросу о программе для РА2020

Так на входах для термометров в неаварийном режиме и есть единицы. А с чего бы софту упрощаться или усложняться? Какая разница, написать ANL C,TRR или ANL C,/TRR?

У AVR порты ввода-вывода построены совсем не так. Вместо одного регистра там целых три: регистр направления DDRx, защелка выходов PORTx и входной регистр PINx. В данном случае нужно с помощью регистра управления настроить нужные линии на ввод и включить подтягивающие резисторы с помощью записи единичек в нужные разряды защелки. А опрашивать пины нужно чтением входного регистра.

Хотя у 51-х порты не так просты, как может показаться на первый взгляд. Там один нижний ключ, который делает на выходе ноль, и три разных подтяжки, которые подключаются ключами сверху. В момент перехода из нуля в единицу кратковременно включается самая сильноточная подтяжка и быстро перезаряжает подключенную к выводу емкость нагрузки. Средняя по величине тока подтяжка остается включенной всегда, пока на выводе напряжение выше порогового. Если напряжение становится ниже, средняя подтяжка выключается, остается лишь самая слаботочная. Это сделано для того, чтобы при работе порта на ввод снизить вытекающий входной ток в состоянии логического нуля. Но вместе с тем возможен эффект защелкивания при работе сильно нагруженного порта на вывод. К тому же, у 51-х нельзя прочитать содержимое защелки, всегда читаются непосредственно выводы. А уровни на них зависят от внешней нагрузки. Могут быть ошибки привыполнении команд типа чтение-модификация-запись (ANL Px,A; ORL Px,A; JBC Px.y,Label и т.д.).

Вне форума

#5 12.03.2007 11:02:56

si
Ветеран
Откуда: Харьков
Здесь с 08.09.2006
Сообщений: 909

Re: к вопросу о программе для РА2020

наверно все-таки по умолчанию 0, если если нижний порог меньше верхнего...
тоесть х51 нельзя ситльно нагружать? Это только в атмелах или и в интелах тоже?


И ваще..

Вне форума

#6 12.03.2007 11:33:01

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: к вопросу о программе для РА2020

si пишет:

наверно все-таки по умолчанию 0, если если нижний порог меньше верхнего...

Нет, для PA2020 термостаты DS1821 должны быть запрограммированы так, чтобы на выходе появлялся низкий уровень, когда температура превышает верхний порог. Когда становится ниже нижнего - снова единица. Полярность выходного сигнала для DS1821 задается битом POL в регистре статуса при программировании. Нужно установить "active low". Мой программатор ds1820.exe этот бит устанавливает автоматически, в зависимости от соотношения порогов. TH там имеет смысл температуры перехода выхода в состояние высокого уровня, TL - низкого.

si пишет:

тоесть х51 нельзя ситльно нагружать? Это только в атмелах или и в интелах тоже?

Да, порты MCS-51 обеспечивают достаточно большой втекающий ток, но маленький - вытекающий. За исключением случая, когда порт работает в режиме внешней шины. У Интел точно так же.

Отредактировано Liv (12.03.2007 11:39:29)

Вне форума

#7 12.03.2007 14:08:56

si
Ветеран
Откуда: Харьков
Здесь с 08.09.2006
Сообщений: 909

Re: к вопросу о программе для РА2020

ну а как тогда быть с гистерезисом? получается нижний поргрг наджо задать вроде  -20 градусов?
С стандартном случае скажем при достижени 70 будет 1, потом при остывании до 55 опять 0, а если перевернуть?? Или это опф=ять недоакументироваанные особенности? Разъясните пожалуйста.
В СУ УМЗЧ ВВ везде ж активный 0 и токи маленькие, так что проблема вроде не страшна, верно?


И ваще..

Вне форума

#8 12.03.2007 20:11:25

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: к вопросу о программе для РА2020

si пишет:

ну а как тогда быть с гистерезисом?

Гистерезис - это разница между порогами.

si пишет:

получается нижний поргрг наджо задать вроде  -20 градусов?

Если речь идет о программе DS1821.exe и PA2020, то нужно задать, например, TL = 65°C, TH = 55°C. Программа сама разберется, куда чего писать и каким выставлять бит POL. В результате на выходе термостата ноль появится при 65°C, единица - при 55°C. Физически в термометр будет записано TH = 65°C, TL = 55°C, POL = 0.

si пишет:

Или это опф=ять недоакументироваанные особенности?

Нет, никаких недокументированных особенностей при этом не используется. Просто программа DS1821.exe не требует вводить в явном виде значение POL, а вычисляет его в зависимости от того, какой порог выше.

si пишет:

В СУ УМЗЧ ВВ везде ж активный 0 и токи маленькие, так что проблема вроде не страшна, верно?

Проблема с портами MCS-51 нигде не страшна, если учитывать их схемотехнику. Мне эти порты нравились своей простотой. Единственный недостаток - нельзя задать на выходе ноль во время сброса. Все исполнительные механизмы должны включаться нулем. В AVR во время сброса порты высокоимпедансные, резистором в это время можно сделать что угодно.

Вне форума

#9 12.03.2007 22:35:36

si
Ветеран
Откуда: Харьков
Здесь с 08.09.2006
Сообщений: 909

Re: к вопросу о программе для РА2020

спасибо, что пояснили, но есть еще ряд вопросов..
1) в непрошитом МК на выходе нули, при сбросе 1, после сброса - 0, пока не запишут 1, верно? а возможно ли такое, что при колебаняих напряжения питания работающего МК он плющится и меняет уровень, с 1 скажем на 0
2) в моем справочнике по МК 51 сказано, что биты GATE0(1) - при 1 разрешают работу соотв таймера при ТR0(1)=1  ВСЕГДА , а в ИДЕ Keil почему-то счет идет только при 1 на INT0(1), а при  GATE=0 все нормально, гдже ошибка?
3)МК очевидно сбрасывается единицей по ресету(1 вывод), а какова реакция таймера адм1232 на вывод 4 (ST), в исходной программе там вроде меандр, какие к нему временные требования?
4)что прооизойдет с портами при переходе в редим идле, в справочнике написано - зафиксируються, будут ли они меняться при обработке прерываний?
5)если организовывать включение перепадом 1-0 на входе INT0 (по прерыванию) корректно ли делдать так CLR EX0;     Disable Interrupt EXT0, в противном случае в кейле он постоянно уходит впрерывание пока на инте0 есть 0
6)возможен ли принципиально алгоритм: нач инициализация и переход в идле - прерывание по вн входу(включение) - прерывания от таймера(контроль входов и индикация)?


И ваще..

Вне форума

#10 13.03.2007 01:43:25

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: к вопросу о программе для РА2020

si пишет:

1) в непрошитом МК на выходе нули, при сбросе 1, после сброса - 0, пока не запишут 1, верно?

Нет. По сбросу в защелки портов записывается единица и она будет там до тех пор, пока кто-то не запишет ноль.

si пишет:

а возможно ли такое, что при колебаняих напряжения питания работающего МК он плющится и меняет уровень, с 1 скажем на 0

Да, при колебаниях питания МК может плющить как угодно. Для борьбы с этим явлением и придуманы Brown Out Detectors (BOD). В PA2020 его функции выполняет ADM1232. При падении напряжения ниже дозволенного порога BOD делает сброс микроконтроллера, всё приходит в исходное состояние.

si пишет:

2) в моем справочнике по МК 51 сказано, что биты GATE0(1) - при 1 разрешают работу соотв таймера при ТR0(1)=1  ВСЕГДА , а в ИДЕ Keil почему-то счет идет только при 1 на INT0(1), а при  GATE=0 все нормально, гдже ошибка?

Если Gate=0, то таймер работает всегда, если TR=1.
Если Gate=1, то таймер работает тогда, когда TR=1 и INT=1.

si пишет:

3)МК очевидно сбрасывается единицей по ресету(1 вывод), а какова реакция таймера адм1232 на вывод 4 (ST), в исходной программе там вроде меандр, какие к нему временные требования?

Вывод ST - это сигнал рестарта встроенного Watchdog-таймера. Импульсы должны следовать не реже, чем установленный интервал, иначе произойдет сброс процессора. Т.е. процессор должен всё время подтверждать этими импульсами, что программа "жива". Интервал устанавливается ножкой TD, когда она заземлена, интервал равен примерно 150 мс.

si пишет:

4)что прооизойдет с портами при переходе в редим идле, в справочнике написано - зафиксируються, будут ли они меняться при обработке прерываний?

В режиме Idle состояние портов не меняется. Если прерывание обрабатывается, то уже произошел выход из режима Idle в активный режим.

si пишет:

5)если организовывать включение перепадом 1-0 на входе INT0 (по прерыванию) корректно ли делдать так CLR EX0;     Disable Interrupt EXT0, в противном случае в кейле он постоянно уходит впрерывание пока на инте0 есть 0

Если прерывание настроено по перепаду, то флаг запроса сбрасывается аппаратно и повторного входа в обработчик быть не должно. Что-то у Вас не так.

si пишет:

6)возможен ли принципиально алгоритм: нач инициализация и переход в идле - прерывание по вн входу(включение) - прерывания от таймера(контроль входов и индикация)?

Возможен. Но какой смысл? В режиме Idle тактовый генератор всё равно работает, если Вы хотите избавиться от помех, то не получится. Вот у AVR можно войти в Power Down с выключенным тактовым генератором и проснуться по прерыванию по уровню. Это другое дело.

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.034 сек, 9 запросов выполнено - Использовано памяти: 625.52 Кбайт (Пик: 675.89 Кбайт) ]