Умный Дом по Ethernet
-
- Сообщения: 103
- Зарегистрирован: 16 фев 2012, 18:23
- Откуда: АР Крым, г.Бахчисарай
Re: Умный Дом по Ethernet
kuzmich9023, открою небольшую тайну:
логический 0 это не 0 вольт, а логическая 1 это не 3,3 вольта.
А еще кроме логического 0 и 1 есть еще Высокоимпедансное состояние или Z-состояние.
Андрей, скажите пожалуйста (может kuzmich9023 неправильно задал вопрос) : при конфигурировании порта МК "на вход" подключаются ли внутренние подтягивающие резисторы ?
P.S.
мне очень жаль, что народ запрыгивает на ступеньку с названием "микроконтроллеры" пропуская при этом ступеньки с названием "дискретная логика".
kuzmich9023, для Вас что нибудь говорит наименование "К155ЛА3" ?
логический 0 это не 0 вольт, а логическая 1 это не 3,3 вольта.
А еще кроме логического 0 и 1 есть еще Высокоимпедансное состояние или Z-состояние.
Андрей, скажите пожалуйста (может kuzmich9023 неправильно задал вопрос) : при конфигурировании порта МК "на вход" подключаются ли внутренние подтягивающие резисторы ?
P.S.
мне очень жаль, что народ запрыгивает на ступеньку с названием "микроконтроллеры" пропуская при этом ступеньки с названием "дискретная логика".
kuzmich9023, для Вас что нибудь говорит наименование "К155ЛА3" ?
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Re: Умный Дом по Ethernet
Применительно к этой схеме, можно считать лог.1 = 3.3 ВальтаPervakovDanil писал(а):открою небольшую тайну:
логический 0 это не 0 вольт, а логическая 1 это не 3,3 вольта.
Круто наехали! Я-бы был поспокойней.PervakovDanil писал(а):kuzmich9023, для Вас что нибудь говорит наименование "К155ЛА3" ?
+1PervakovDanil писал(а):P.S.
мне очень жаль, что народ запрыгивает на ступеньку с названием "микроконтроллеры" пропуская при этом ступеньки с названием "дискретная логика".
Хотя с другой стороны, если сразу задана достаточно высокая планка и у человека достаточно целеустремления и желания, то его скорее всего ждет удача!
При конфигурировании пина как вход, включаются подтягивающие резисторы и на входе будет 3.3 Вольта. Почитайте ветку повнимательнее, уже звучали подобные вопросы и выкладывались схемы как входных, так и выходных цепей.kuzmich9023 писал(а):У меня вопрос по данному прибору. Выходы у меги в не активном состоянии 0 (0v) а в активном 1(3.3V) тоесть на выход если все пины за исключение ацп используються? а на вход если конфигурировать то лог состояние пинов в отсутствии сигнала какое? и при входе подаеться на ножки 3.3в или на массу замыкаеться?
Говоря Вашим языком надо замыкать на массу.
PS "Так кто на ком стоял? Потрудитесь излагать Ваши мысли яснее." (с) Булгаков. Собачье сердце.
-
- Сообщения: 103
- Зарегистрирован: 16 фев 2012, 18:23
- Откуда: АР Крым, г.Бахчисарай
Re: Умный Дом по Ethernet
THK, да я возможно был резок. Постараюсь быть полояльнее. Но вспомните изучение грамоты в 1 классе. Сначала черточки и кружочки, затем из черточек складывают буквы. А затем из букв складывают слова. А по чему в радиолюбительстве нужно иначе ?
Или тогда прокомментируйте строки:
файл main.c версия 3.02
строки 537 - 566
А особенно эти (строки 607-612):
в моем понимании т.к. эти строки расположены до вечного цикла "while(1)" это идет начальная инициализация портов при "холодном старте". Так ?
мои коменты:
А где тогда строки записи 1 в PORTD и включения подтягивающего резистора ?
Если не там рою, то пожалуйста ткните пальцем на номер строки.
Не согласен.THK писал(а):При конфигурировании пина как вход, включаются подтягивающие резисторы и ...
Или тогда прокомментируйте строки:
файл main.c версия 3.02
строки 537 - 566
Код: Выделить всё
DDRD |= (1<<port_num);
if (_port_d[i] == 1 )
PORTD|= (1<<port_num);
else
PORTD &= ~(1<<port_num);
Код: Выделить всё
else
{
if ( port_letter == 'D' )
DDRD &= ~(1<<port_num);
if ( port_letter == 'C' )
DDRC &= ~(1<<port_num);
if ( port_letter == 'B' )
DDRB &= ~(1<<port_num);
}
мои коменты:
Код: Выделить всё
if ( port_letter == 'D' ) // если порт D
DDRD &= ~(1<<port_num); // записать 0 т.е. переключить его на вход
Если не там рою, то пожалуйста ткните пальцем на номер строки.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Re: Умный Дом по Ethernet
Возможно я ошибся. У меня на модуле входов стоят подтягивающие резисторы и этот момент я мог легко упустить.PervakovDanil писал(а):А где тогда строки записи 1 в PORTD и включения подтягивающего резистора ?
Если не там рою, то пожалуйста ткните пальцем на номер строки.
Дождемся ответа Андрея...
PS А резисторы я ставлю со времен К155ЛА3, несмотря на то, что пустой вход в ТТЛ=1.
-
- Сообщения: 4
- Зарегистрирован: 13 май 2012, 15:04
Re: Умный Дом по Ethernet
к155ла3 мне говорит о том что это утюг. Народ мне не ответили на вопрос. активное состояние (выход контроллера включен) 3.3в ,а не активное 0в? я спрашиваю по тому что цепляю на выход uln2003,а у неё выхода инвертируються по отношению ко входу. чтоб плату не делать вторую печатную я интересуюсь. в исходники глядеть лениво.
Re: Умный Дом по Ethernet
похоже Вы правыА где тогда строки записи 1 в PORTD и включения подтягивающего резистора
эта часть кода
if (_port_type == 1 )
{
код
}
else
{
if ( port_letter == 'D' )
DDRD &= ~(1<<port_num);
if ( port_letter == 'C' )
DDRC &= ~(1<<port_num);
if ( port_letter == 'B' )
DDRB &= ~(1<<port_num);
}
переключает порты на вход и они остаются болтаться в воздухе
кстати выражение
можно написать такif (_port_type == 1 )
будет работатьif (_port_type )
Re: Умный Дом по Ethernet
делайте не бойтесь если будет инверсия перед выводом в порт сделайте инверсиючтоб плату не делать вторую печатную я интересуюсь
~(PORTX)
а все таки придетьсяв исходники глядеть лениво
-
- Сообщения: 4
- Зарегистрирован: 13 май 2012, 15:04
Re: Умный Дом по Ethernet
да я уже начинаю понимать что надо нырнуть в исходник.
Re: Умный Дом по Ethernet
я думаю нужно взглянуть сюда
сдесь устанавливается состояние портов после выполнения команд
этот код лишь загружает состояние портов из EEPROM при включении устройства
if ( srv_cmd == '1' )
{
if ( port_letter == 'D' )
PORTD|= (1<<port_num);
else if ( port_letter == 'C' )
PORTC|= (1<<port_num);
else if ( port_letter == 'B' )
PORTB|= (1<<port_num);
}
// OFF
else if ( srv_cmd == '0' )
{
if ( port_letter == 'D' )
PORTD &= ~(1<<port_num);
else if ( port_letter == 'C' )
PORTC &= ~(1<<port_num);
else if ( port_letter == 'B' )
PORTB &= ~(1<<port_num);
сдесь устанавливается состояние портов после выполнения команд
этот код лишь загружает состояние портов из EEPROM при включении устройства
if (_port_type == 1 )
{
if ( port_letter == 'D' )
{
DDRD |= (1<<port_num);
if (_port_d == 1 )
PORTD|= (1<<port_num);
else
PORTD &= ~(1<<port_num);
// Выключаем ШИМ
if ( port_num == 6 )
TCCR0A &= ~(1 << COM0A1);
else if ( port_num == 5 )
TCCR0A &= ~(1 << COM0B1);
else if ( port_num == 3 )
TCCR2A &= ~(1 << COM2B1);
}
else if ( port_letter == 'C' )
{
DDRC |= (1<<port_num);
if (_port_d == 1 )
PORTC|= (1<<port_num);
else
PORTC &= ~(1<<port_num);
}
else if ( port_letter == 'B' )
{
DDRB |= (1<<port_num);
if (_port_d == 1 )
PORTB|= (1<<port_num);
else
PORTB &= ~(1<<port_num);
}
-
- Сообщения: 4
- Зарегистрирован: 13 май 2012, 15:04
Re: Умный Дом по Ethernet
Благодарю за помощь.
-
- Сообщения: 103
- Зарегистрирован: 16 фев 2012, 18:23
- Откуда: АР Крым, г.Бахчисарай
Re: Умный Дом по Ethernet
При "холодном старте" и при ручной переинициализации порта действия должны быть одинаковыми. Иначе получится так, что при ручном установлении порта на вход подтягивающий включен (например), а при холодном старте нет.
Ну и раз пошел разбор сырцов по косточкам :
функция ISR(TIMER1_COMPA_vect)
строкипорт C и D есть, а порт B ?
Ну и раз пошел разбор сырцов по косточкам :
функция ISR(TIMER1_COMPA_vect)
строки
Код: Выделить всё
i = ~PIND; // read keys (low active)
i ^= input_state; // key changed ?
ct0 = ~(ct0 & i); // reset or count ct0
ct1 = ct0 ^ (ct1 & i); // reset or count ct1
i &= ct0 & ct1; // count until roll over ?
input_state ^= i; // then toggle debounced state
input_press |= input_state & i; // 0->1: key press detect
i = ~PINC; // read keys (low active)
i ^= input_state2; // key changed ?
ct2 = ~(ct2 & i); // reset or count ct0
ct3 = ct2 ^ (ct3 & i); // reset or count ct1
i &= ct2 & ct3; // count until roll over ?
input_state2 ^= i; // then toggle debounced state
input_press2 |= input_state2 & i; // 0->1: key press detect
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Re: Умный Дом по Ethernet
возможно автор решил что кнопки можно подключить только к портам D и C
Из исходника довольно сложно понять что происхоит
Несколькими часами позже
Возможно дело в следующем, в первых версиях прошивки было определено
Кстати что Вы имели ввиду
как я понял это процедура антидребезгаi = ~PIND; // read keys (low active)
i ^= input_state; // key changed ?
ct0 = ~(ct0 & i); // reset or count ct0
ct1 = ct0 ^ (ct1 & i); // reset or count ct1
i &= ct0 & ct1; // count until roll over ?
input_state ^= i; // then toggle debounced state
input_press |= input_state & i; // 0->1: key press detect
i = ~PINC; // read keys (low active)
i ^= input_state2; // key changed ?
ct2 = ~(ct2 & i); // reset or count ct0
ct3 = ct2 ^ (ct3 & i); // reset or count ct1
i &= ct2 & ct3; // count until roll over ?
input_state2 ^= i; // then toggle debounced state
input_press2 |= input_state2 & i; // 0->1: key press detect
Из исходника довольно сложно понять что происхоит
Несколькими часами позже
Возможно дело в следующем, в первых версиях прошивки было определено
т. е не было порта Bchar *aio[IO_SIZE] = {"D0", "D1", "D3", "D4", "D5", "D6", "D7", "C0", "C1", "C2", "C3", "C4", "C5"};
Затем сталорт C и D есть, а порт B
добавился B1 и появилась записьchar *aio[IO_SIZE] = {"C5", "D0", "C4", "D1", "C3", "C2", "D3", "B1", "D7", "D6", "D5", "C0", "D4", "C1"};
а сюдаelse if ( port_letter == 'B' )
PORTB &= ~(1<<port_num);
внести забылиi = ~PIND; // read keys (low active)
i ^= input_state; // key changed ?
ct0 = ~(ct0 & i); // reset or count ct0
ct1 = ct0 ^ (ct1 & i); // reset or count ct1
i &= ct0 & ct1; // count until roll over ?
input_state ^= i; // then toggle debounced state
input_press |= input_state & i; // 0->1: key press detect
i = ~PINC; // read keys (low active)
i ^= input_state2; // key changed ?
ct2 = ~(ct2 & i); // reset or count ct0
ct3 = ct2 ^ (ct3 & i); // reset or count ct1
i &= ct2 & ct3; // count until roll over ?
input_state2 ^= i; // then toggle debounced state
input_press2 |= input_state2 & i; // 0->1: key press detect
Кстати что Вы имели ввиду
при ручной переинициализации
-
- Сообщения: 103
- Зарегистрирован: 16 фев 2012, 18:23
- Откуда: АР Крым, г.Бахчисарай
Re: Умный Дом по Ethernet
Да я тоже посчитал, что попросту после добавления порта В в список портов ввода-вывода устройства в один раздел программы изменения не внесли.
При включении устройства программа восстанавливает настройки портов ввода-вывода МК ("холодный" или "горячий" старт), которые пользователь "руками" установил ранее.
При включении устройства программа восстанавливает настройки портов ввода-вывода МК ("холодный" или "горячий" старт), которые пользователь "руками" установил ранее.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Re: Умный Дом по Ethernet
1. В данной прошивке активное состояние выходов - лог. 1
2. Встроенные подтягивающие резисторы на входах не включаются. В схеме моего исполнительного модуля используются внешние резисторы, которые подтягивают входы к лог. 1
3. "Защита от дребезга" действительно не работает на портах "B". Их в устройстве всего два. Один задействован как светодиод, а другой в готовом исполнительном модуле для MegaD-328 работает как выход. Поэтому в данный момент лично для меня это не очень актуально. Но в перспективе надо, конечно, реализовать этот механизм и для "B".
2. Встроенные подтягивающие резисторы на входах не включаются. В схеме моего исполнительного модуля используются внешние резисторы, которые подтягивают входы к лог. 1
3. "Защита от дребезга" действительно не работает на портах "B". Их в устройстве всего два. Один задействован как светодиод, а другой в готовом исполнительном модуле для MegaD-328 работает как выход. Поэтому в данный момент лично для меня это не очень актуально. Но в перспективе надо, конечно, реализовать этот механизм и для "B".
Re: Умный Дом по Ethernet
http://www.ebay.com/itm/280833017800?ss ... 1438.l2649
http://www.ebay.com/itm/280706213546?ss ... 1438.l2649
наконец то пришли ко мне платы... Подскажите пожалуйста как подключить теперь их вместе. В интернете написано, что надо задействовать пины 10-13 + земля питание. Земля и питания это два нижних пина на ENC28J60. А вот 10-12 к каким подключать и в какой последовательности? Оставшиеся пины на ENC28J60 clkout, int, wol, sc,si,sck,cs,reset.
хочется уже попробовать спасибо!
http://www.ebay.com/itm/280706213546?ss ... 1438.l2649
наконец то пришли ко мне платы... Подскажите пожалуйста как подключить теперь их вместе. В интернете написано, что надо задействовать пины 10-13 + земля питание. Земля и питания это два нижних пина на ENC28J60. А вот 10-12 к каким подключать и в какой последовательности? Оставшиеся пины на ENC28J60 clkout, int, wol, sc,si,sck,cs,reset.
хочется уже попробовать спасибо!
Re: Умный Дом по Ethernet
Оставшиеся пины на ENC28J60 clkout, int, wol, sc,si,sck,cs,reset.
подключите к одноименным ногам MEGIsc,si,sck,cs,
пустыеint, wol
если не используете внешнее тактирование ARDUINO то оставте свободнымclkout,
можете подключить к любой ноге, только нужно будет подправить прошивку , а можно вообще не подключатьreset
вот кусок из прошивки который показывает что куда воткнуть
#define ENC28J60_CONTROL_PORT PORTB
#define ENC28J60_CONTROL_DDR DDRB
#if defined(__AVR_ATmega88__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
#define ENC28J60_CONTROL_CS PORTB2
#define ENC28J60_CONTROL_SO PORTB4
#define ENC28J60_CONTROL_SI PORTB3
#define ENC28J60_CONTROL_SCK PORTB5
#endif
#if defined(__AVR_ATmega644__)||defined(__AVR_ATmega644P__)
#define ENC28J60_CONTROL_CS PORTB4
#define ENC28J60_CONTROL_SO PORTB6
#define ENC28J60_CONTROL_SI PORTB5
#define ENC28J60_CONTROL_SCK PORTB7
#endif
Попробуйтехочется уже попробовать спасибо!
Re: Умный Дом по Ethernet
Я подключил, работает. Только прошивка Arduino'вская.
VCC - 3.3V
GND - GRND
CS - 10
SI - 11
SCK - 13
SO - 12
Кто нибудь пробовал прошить прошивкой Андрея данный набор? То есть снести прошивку Arduino'вскую и подключить данный модуль, чтобы работало?
VCC - 3.3V
GND - GRND
CS - 10
SI - 11
SCK - 13
SO - 12
Кто нибудь пробовал прошить прошивкой Андрея данный набор? То есть снести прошивку Arduino'вскую и подключить данный модуль, чтобы работало?
Re: Умный Дом по Ethernet
Кто нибудь пробовал прошить прошивкой Андрея данный набор? То есть снести прошивку Arduino'вскую и подключить данный модуль, чтобы работало?
Должно только надо переназначить ноги ,большой разницы нет,ардуино это или самопал в основе все та же мега
Re: Умный Дом по Ethernet
Подключил к Мегадевайсу датчик освещенности.
Подробнее тут http://www.ab-log.ru/smart-house/ethernet/light-sensor
Подробнее тут http://www.ab-log.ru/smart-house/ethernet/light-sensor
Re: Умный Дом по Ethernet
Почему был выбран именно этот датчик/модуль?