roboforum.ru

Технический форум по робототехнике.


Ресетится (RESET) бессовестно - почему?

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Re: Ресетится (RESET) бессовестно - почему?

Сообщение boez » 18 апр 2011, 12:05

Только (0 0) - это не просто третье состояние, а нормальный себе вход, просто без подтяжки. На висящей в воздухе ноге будет черт знает что, но если на нее подать логический уровень 0 или 1 - он появится в соответствующем бите PIND. И это как раз вариант, когда питание на вход подавать можно :) Просто никто не говорит "подал питание на вход", говорят "подал логический уровень", 0 - это как раз GND. а 1 - VCC.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Ресетится (RESET) бессовестно - почему?

Сообщение GrayHunter » 18 апр 2011, 12:39

ага, значит это я правильно интуитивно сделал - Значит если у меня, например, датчик воды, который должен показать 1, если вдруг сработает (т.е.: 1 = вода), то просто одна ножка должна быть настроена как 0 0, а через датчик к ней может прийти VCC, если его (датчик) замкнёт водой (т.е. если датчик сработает).

Так?
GrayHunter
 
Сообщения: 231
Зарегистрирован: 06 июн 2009, 20:42
Откуда: Москва

Re: Ресетится (RESET) бессовестно - почему?

Сообщение boez » 18 апр 2011, 18:55

Нет, так нехорошо. Если замкнет - хорошо, придет 1 и будет щастя. А если не замкнет? Там будет мусор на входе, неизвестно что - может быть 0, может 1, а может вообще шум 0-1-0-1... от наводок. Входы без подтяжки можно использовать только с логическими выходами - т.е. с теми, которые умеют выдавать и 0, и 1 честно, подключая ногу к + или к - питания. Ну например это может быть выход компаратора, или какого-нибудь логического элемента. А если у тебя кнопка или иной контакт - лучше подключать его к минусу (GND), а на входе ставить DDRD.x = 0, PORTD.x = 1. Тогда если контакт будет разомкнут - на входе будет Vcc через подтяжечный резистор который внутри МК. А если замкнут - на вход придет 0.

А еще у датчика, замыкаемого водой может не хватить сопротивления чтобы "перетянуть" подтяжку - тогда нужен отдельный компаратор.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Ресетится (RESET) бессовестно - почему?

Сообщение GrayHunter » 18 апр 2011, 19:29

на входе будет Vcc
Т.е. на ножке будет 1?
GrayHunter
 
Сообщения: 231
Зарегистрирован: 06 июн 2009, 20:42
Откуда: Москва

Re: Ресетится (RESET) бессовестно - почему?

Сообщение boez » 19 апр 2011, 10:14

Да. Она будет "инверсной" - если разомкнуто, то 1, если замкнуто, то 0.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Ресетится (RESET) бессовестно - почему?

Сообщение GrayHunter » 23 апр 2011, 21:57

Дописал программу, отладил всё, кроме собственно полива растений раз в сутки. Проблема где-то в приведённом ниже куске кода (в Management всё в порядке, т.к. идиентичен для всех модулей, два из которых работают нормально). Помогите, пожалуйста выявить проблему.

Коротко и в общем о том, что это:
два выключателя: основной и принуждение.
Если основной включен, то полив должен произойти сразу, а в следующий раз через сутки.
Если включен и основной и принуждение, то поливать, при этом счёт времени не останавливается, таким образом, например, можно выключить принуждение на 5-ой (из 10-ти) секунде основного полива, и полив будет продолжаться ещё 5 положенных секунд.
Если основной был выключен кнопкой (а не тревогой из-за протечки), то при включении основного - время должно сброситься и должен начаться полив, соответственно...
(это в общем)

Код: Выделить всёРазвернуть
...
код_вырезан
...
Последний раз редактировалось GrayHunter 24 апр 2011, 20:41, всего редактировалось 1 раз.
GrayHunter
 
Сообщения: 231
Зарегистрирован: 06 июн 2009, 20:42
Откуда: Москва

Re: Ресетится (RESET) бессовестно - почему?

Сообщение Radist » 24 апр 2011, 07:44

Для ускорения процесса помощи не хватает в описании вот чего:

1. Как должен работать этот код - это есть (что хорошо!)
2. Как он работает сейчас
Аватара пользователя
Radist
 
Сообщения: 2254
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Ресетится (RESET) бессовестно - почему?

Сообщение GrayHunter » 24 апр 2011, 14:44

Проблема оказалась в проводе, который вроде припаян, а реально изолировался канифолью :)

На этом с обсуждением программы можно закончить. Большое Всем СПАСИБО :good:
GrayHunter
 
Сообщения: 231
Зарегистрирован: 06 июн 2009, 20:42
Откуда: Москва

Пред.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28