Страница 1 из 1
Atmega32 + PCF8574
Добавлено: Пн окт 22, 2012 22:21:31
Misha555
Здравствуйте уважаемые форумчане. Не судите строго - в программировании микроконтроллеров я новичок. При создании некоторого устройства возникла проблема с количеством портов у микроконтроллера. Свободных портов – 3. А нужно подключить еще 12 светодиодов для визуального контроля состояния дискретных входов – выходов. Поэтому решил использовать шину I2C , и подключить к ней два расширителя портов PCF8574. Вот тут и возникла проблема с подключением. В примере с одним портом PCF8574 реакция на состояние дискретных входов (PORTC) происходит только тогда, когда в программе включаю внутренний подтягивающий резистор. На состояние кнопки расширитель не реагирует. Если можно, то подскажите, что я делаю неверно.
Re: Atmega32 + PCF8574
Добавлено: Вт окт 23, 2012 07:00:44
igor-x
шина i2c должна быть подтянута к плюсу внешними резисторами (если не ошибаюсь порядка 5 кОм)
Re: Atmega32 + PCF8574
Добавлено: Вт окт 23, 2012 10:19:16
Misha555
Но ведь в примере есть подтяжка к +5В
Re: Atmega32 + PCF8574
Добавлено: Вт окт 23, 2012 11:46:35
orinoko
А может проще сдвиговый регистр (2 шт.) поставить? Например 74LS164, и не заморачиваться с I2C
Re: Atmega32 + PCF8574
Добавлено: Вт окт 23, 2012 23:37:55
Misha555
Можно было-бы использовать сдвиговый регистр, но индикация должна быть на некотором расстоянии, а поэтому лучше I2C
Re: Atmega32 + PCF8574
Добавлено: Ср окт 24, 2012 06:47:28
igor-x
для некоторого расстояния лучше RS232. i2c это внутриприборный интерфейс
Re: Atmega32 + PCF8574
Добавлено: Ср окт 24, 2012 09:57:08
orinoko
"Некоторое расстояние" - понятие ну очень растяжимое. Озвучте это в числах, пожалуйста
Re: Atmega32 + PCF8574
Добавлено: Ср окт 24, 2012 10:19:12
Misha555
Извените меня пожалуйста, но вопрос не в том, что лучше использовать - I2C или RS232. Вопрос озвучен в первом сообщении - он конкретный. Какаую я сделал ошибку в програмной реализации передачи данных между Atmega 32 и PCF 8574 ?
Re: Atmega32 + PCF8574
Добавлено: Пт окт 26, 2012 22:46:39
Misha555
Ну вот, в принципе решил даную задачу. Кому интересно - вот пример работы в Протеусе
Завязано два расширителя PCF8574, U3 - контролирует дискретные входы , U4 - дискретные выходы. Программа написана таким образом, что при активизации дискретного входа деактивизируется дискретный выход с одним номером.