Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » 16f629 не держит состояние выхода, пока опрашивается другой.
16f629 не держит состояние выхода, пока опрашивается другой.
defaultNick Дата: Пн, 16.01.2012, 18:15  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 27
Репутация: 0   ±
Замечания:   ±
На сайте с 06.06.2010

Статус: Offline

Примитивная прога термостата.

Code

INCLUDE "bs2defs.bas"
DEFINE OSC 4

TempData VAR WORD : D var word : TempC var word
trisio.1 = 0                    'port 0 output
pause 1500

st:

pause 1000

      OWOUT gpio.2,1,[$CC,$44]  ' ds18b20
      pause 20
      HIGH gpio.2               ' ds18b20
      PAUSE 50
      OWOUT gpio.2,1,[$CC,$BE]  ' ds18b20
      pause 10
      OWIN gpio.2,0,[TEMPDATA.LowByte,TEMPDATA.HighByte] ' ds18b20
      D = 625 * TEMPDATA
      TempC = DIV32 10
      TempC = (TEMPDATA & $0FF0) >> 4

if tempc >= 32 then low gpio.1  ' нагрев
if tempc =< 30 then high gpio.1  ' нагрев

goto st


так вот. допустим tempc меньше 30. тогда gpio.1 - high.
и вот при каждом цикле опроса термометра, пока ПИК с ним общается, он кладёт мне gpio.1 в low (примерно 80мс)!!
т.е. при данной проге, когда нагревалка вообще не подключена, а термометр всегда даёт ~25 на выходе gpio.1
большенство времени high с промежутками в low пока идёт опрос sad
типа так:
``````|_|````````|_|````````|_|````````|_|`` <- это типа такой график smile

как его убедить, что надо держать high всегда, без перерывов.

Сообщение отредактировал defaultNick - Пн, 16.01.2012, 18:18
ЯНДЕКС Дата: 16.01.2012
ivan_fd Дата: Пн, 16.01.2012, 19:34  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Как Вы определили, что он отпускает, в железе или протеусом?
Сообщение отредактировал ivan_fd - Пн, 16.01.2012, 19:37
defaultNick Дата: Пн, 16.01.2012, 20:10  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 27
Репутация: 0   ±
Замечания:   ±
На сайте с 06.06.2010

Статус: Offline

в железе. там на gpio.1 светодиодик. он пригасает на мгновение sad
я б даже плюнул на это всё, т.к. по большому счёту всё работает, но ЭТО управляет нагревалкой в 2квт через реле, и если реле будет туда сюда постоянно прыгать и искрить внутри то его не на долго хватит sad
retas Дата: Пн, 16.01.2012, 20:33  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Мне кааатся, что тут проявление эффекта чтение-модификация-запись.
Попробуйте временно порт через резистор подкл. к плюсу - посмотрите пропадёт ли дрыг.
defaultNick Дата: Пн, 16.01.2012, 20:57  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 27
Репутация: 0   ±
Замечания:   ±
На сайте с 06.06.2010

Статус: Offline

retas, сорри, какой порт? gpio.1 если на плюс посадить то полевик тупо откроется и всё...
Прикрепления: 9169971.gif (1.5 Kb)
доцент2 Дата: Пн, 16.01.2012, 21:17  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 287
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

для начала это не 16-й, а 12-й пик (12f629)
потом надо правильно прописать конфигурацию (кроме внешнего кварца сдесь ни чего нет),
затем
TRISIO=%00000000' все выводы порта на выход
GPIO=%00000000 'все выводы на ноль

Сообщение отредактировал доцент2 - Пн, 16.01.2012, 21:19
defaultNick Дата: Пн, 16.01.2012, 21:42  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 27
Репутация: 0   ±
Замечания:   ±
На сайте с 06.06.2010

Статус: Offline

ой! дико извиняюсь, конечно 12f629.

доцент2, все на выход - так не работает вообще, наверное т.к. gpio.2 в двух направлениях должен работать же.
при таком:
TRISIO = %00000100
GPIO = %00000000
точно такой же эффект как и вообще без этого всего. да и вообще эти trisio совсем не обязательная штука, порты сами отлично настраиваются.

тут дело такое же как в 18-ых пиках в порте Д, у них вместо portd.х надо писать latd.х, а иначе такой же эффект как у меня сей час sad
только в 12-ых нет вроде латчей никаких?
retas Дата: Пн, 16.01.2012, 21:54  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

то полевик тупо откроется и всё...
Мешает он? На дрыг смотри!!!
ivan_fd Дата: Пн, 16.01.2012, 22:38  |                                                                                                                Сообщение # 9
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

А может смоделировать схему в Протеусе и посмотреть что да как?
Может у Вас сторожевой таймер сбрасывает ПИК?
И действительно, установить правильно биты конфигурации.

Сообщение отредактировал ivan_fd - Пн, 16.01.2012, 22:38
defaultNick Дата: Пн, 16.01.2012, 22:42  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 27
Репутация: 0   ±
Замечания:   ±
На сайте с 06.06.2010

Статус: Offline

retas, это не что-то неопознанное как "дрыг" или дребезг.
контроллер сознательно опускает в ноль выходы, и если его на + повесить то, ничего и не изменится внутри его.
так же коротко нулит сигнал, только теперь это не столь очевидно, и мешает это резистор.

Вообщем это только программная недоделка. Что-то должео быть чуть чуть подругому sad

WDT off стоит.

Сообщение отредактировал defaultNick - Пн, 16.01.2012, 22:45
доцент2 Дата: Пн, 16.01.2012, 23:02  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 287
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

вот накидал програмку и схемку. в протеусе все работает. обратите внимание на биты конфигурации и необходимо отключить компаратор.
что касается настройки выводов лучше их сделать. некоторые команды сами это устанавливают. но лучше заранее это сделать.
да и еще, если задумка управлять чем-то "мощненьким" и дребесжаще-искрящим, то надо подумать о гальванической развязке по питанию, возможно фильтрах и т.д.
Прикрепления: __pic12f629.rar (17.0 Kb)

Сообщение отредактировал доцент2 - Пн, 16.01.2012, 23:11
ЯНДЕКС Дата: 16.01.2012
defaultNick Дата: Вт, 17.01.2012, 01:09  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 27
Репутация: 0   ±
Замечания:   ±
На сайте с 06.06.2010

Статус: Offline

Спасибо всем за помощь, дело было в невыключенном компараторе. Всё заработало как надо.
доцент2 Дата: Вт, 17.01.2012, 09:58  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 287
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

интерсно, а в чем было причина?
defaultNick Дата: Чт, 19.01.2012, 01:57  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 27
Репутация: 0   ±
Замечания:   ±
На сайте с 06.06.2010

Статус: Offline

доцент2,
CMCON=%00000111 сделало своё дело smile я как то подумал что если нет ADC то и компоратора нет... бывает.
Форум Picbasic.ru » Программирование МК » PicBasicPro » 16f629 не держит состояние выхода, пока опрашивается другой.
  • Страница 1 из 1
  • 1
Поиск: