Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 12.10.2009, 18:24  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
Вопрос PCF8574

Всем привет!
До ужасного простая проблема: расширитель порта по i2c PCF8574 переключить на вход.
Даташит весь перечитал, вот цитата оттуда:

Цитата:
Each bit of the PCF8574 I/O Port can be independently
used as an input or output. Input data is transferred from
the Port to the microcontroller by the READ mode
(see Fig.11). Output data is transmitted to the Port by the
WRITE mode (see Fig.10).
ну не понимаю, как указать отдельно для каждого бита вход он или выход!
Реклама:
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Непрочитано 12.10.2009, 19:54  
shindax
Прописка
 
Регистрация: 04.09.2009
Сообщений: 167
Сказал спасибо: 1
Сказали Спасибо 35 раз(а) в 25 сообщении(ях)
shindax на пути к лучшему
По умолчанию Re: PCF8574

Пишешь в нужные биты "1". После считываешь порт и анализируешь сосотояние этих битов. Можно так-же использовать прерывания. Из datasheet :
"Quasi-bidirectional I/O Ports (see Fig.14)
A quasi-bidirectional Port can be used as an input or output without the use of a control signal for data direction. At power-on the Ports are HIGH. In this mode only a current source to VDD is active. An additional strong pull-up to VDD allows fast rising edges into heavily loaded outputs. These devices turn on when an output is written HIGH, and are switched off by the negative edge of SCL. The Ports should be HIGH before being used as inputs."

Смотри блок-схему одного пина.
shindax вне форума  
Непрочитано 12.10.2009, 20:17  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию Re: PCF8574

Блок схему смотрел. Да понял вроде все. Но не хочет работать!
Пины через резюки на землю. Читаются "1"...
И не понимаю, почему нельзя переключить в высокоимпедансное состояние...
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Непрочитано 12.10.2009, 21:21  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,548
Сказал спасибо: 701
Сказали Спасибо 4,327 раз(а) в 1,981 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: PCF8574

У вас случайно не PCF8574А, там адрес чипа совсем другой.
Kabron вне форума  
Непрочитано 13.10.2009, 15:57  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию Re: PCF8574

Да нет, не то. Выводит все нормально. Но не вводит...
Светодиоды я зажечь могу, а вот клавиатуру опросить не-а. Ну, вобщем, ясна проблема, думаю...
Прошу помощи, а то я уже все перепробывал...
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Непрочитано 13.10.2009, 16:44  
56yura
Прохожий
 
Регистрация: 12.04.2005
Сообщений: 4
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
56yura на пути к лучшему
По умолчанию Re: PCF8574

Клавиатуру я делал для PIC16F876. Кусок исходника на асме. Попробуй разобраться сам. Не получиться - спрашивай.

k_board CODE
keyb_ini
call start_u ;Передаем условие начала
movlw kbAddr_W ;Передаем адрес модуля для записи(kbAddr_W)
call send
movlw 0F0h
call send ;Передаем один байт в PCF8574 клавиатуры
call stop_u ;Передаем условие завершения передачи
return

off_podsvet
call start_u ;|При прерывании от модуля клавиатуры
movlw kbAddr_R ;|прочитаем состояние столбцов
call send ;|клавиатуры (P4-P7) PCF8574
call resive ;|
movwf key_stolb ;|ЗАПОМНИМ состояние столбцов в key_stolb
call stop_u ;|

bcf key_stolb, 4

call start_u
movlw kbAddr_W
call send
movfw key_stolb
call send
call stop_u

call start_u ;|При прерывании от модуля клавиатуры
movlw kbAddr_R ;|прочитаем состояние столбцов
call send ;|клавиатуры (P4-P7) PCF8574
call resive ;|
call stop_u ;|
return

; ---------------------------------------------------------
; Сканирование клавиатуры по I2C шине ---------------------
; ---------------------------------------------------------
key_scan
call start_u ;|При прерывании от модуля клавиатуры
movlw kbAddr_R ;|прочитаем состояние столбцов
call send ;|клавиатуры (P4-P7) PCF8574
call resive ;|
movwf key_stolb ;|ЗАПОМНИМ состояние столбцов в key_stolb
call stop_u ;|

call start_u ;|Далее пошлем "0" на строки и "1" на столбцы
movlw kbAddr_W ;|чтобы вычислить строку нажатой кнопки.
call send ;|
movlw 0Fh ;|
call send ;|
call stop_u ;|

call start_u ;|прочитаем состояние строк
movlw kbAddr_R ;|клавиатуры (P0-P3) PCF8574
call send ;|
call resive ;|
movwf key_str ;|ЗАПОМНИМ состояние строк а key_str
call stop_u ;|
;======= Подготовим расширитель в начальное состояние
key_1
call start_u ;Передаем условие начала
movlw kbAddr_W ;Передаем адрес модуля для записи(kbAddr_W)
call send
movlw 0F0h
call send ;Передаем один байт данных в PCF8574 клавиатуры
call stop_u ;Передаем условие завершения
;просканировали, надобно расшифровать результат...
;======= Расшифруем строки
key1
clrf key_code
btfss key_str,3 ;3 бит PCF =0,тогда 1 2 3 A ;код =0
goto add_next
btfss key_str,2 ;2 бит PCF =0,тогда 4 5 6 B ;код =4
goto add_4
btfss key_str,1 ;1 бит PCF =0,тогда 7 8 9 C ;код =8
goto add_8
btfss key_str,0 ;0 бит PCF =0,тогда * 0 # D ;код =12
goto add_12
movlw .127 ;сюда приходим, если ошибка.
movwf key_code
goto _err ;идем прямо в конец подпрограммы

add_4 movlw .4
movwf key_code
goto add_next
add_8 movlw .8
movwf key_code
goto add_next
add_12 movlw .12
movwf key_code

;======= Расшифруем столбцы
add_next
btfss key_stolb,7 ;7 бит PCF =0,тогда 1 4 7 * ;код =код+0
goto key_end
btfss key_stolb,6 ;6 бит PCF =0,тогда 2 5 8 0 ;код =код+1
goto add_1
btfss key_stolb,5 ;5 бит PCF =0,тогда 3 6 9 # ;код =код+2
goto add_2
btfss key_stolb,4 ;4 бит PCF =0,тогда A B C D ;код =код+3
goto add_3
movlw .128 ;сюда приходим, если ошибка.
addwf key_code,f
goto _err ;идем прямо в конец подпрограммы

add_1 movlw .1
addwf key_code
goto key_end
add_2 movlw .2
addwf key_code
goto key_end
add_3 movlw .3
addwf key_code

key_end
bcf STATUS, C
movlw .15
subwf key_code,w
btfsc STATUS, C
goto _err
table_read tab_key, key_code
movwf key_code ;сдесь код нажатой кнопки сохраним в регистр
bsf KB ;и установим флажек
movlw d'45' ;556 Hz
movwf freq
movlw d'37' ;1/15 сек
movwf dlit1
movlw d'2'
movwf dlit2
call pisk
keyb_prov
call start_u
movlw kbAddr_R ;Передаем адрес модуля для записи(kbAddr_W)
call send
call resive
goto stop_u

_err
bcf KB ;снимем флажек
movlw h'FF'
movwf key_code
goto keyb_prov ;А выход по стеку!!!(return в подпрогоамме)
tab_key
addwf PCL, f
retlw A'1' ;0
retlw A'2' ;1
retlw A'3' ;2
retlw A'A' ;3
retlw A'4' ;4
retlw A'5' ;5
retlw A'6' ;6
retlw A'B' ;7
retlw A'7' ;8
retlw A'8' ;9
retlw A'9' ;10
retlw A'C' ;11
retlw A'*' ;12
retlw A'0' ;13
retlw A'#' ;14
retlw A'D' ;15
GLOBAL keyb_ini, key_scan, off_podsvet ;метки
GLOBAL key_code ;регистр
Миниатюры:
Нажмите на изображение для увеличения
Название: primer+_cr.png
Просмотров: 103
Размер:	7.6 Кб
ID:	1107  
56yura вне форума  
Сказали "Спасибо" 56yura
alberio (13.10.2009)
Непрочитано 13.10.2009, 16:50  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию Re: PCF8574

Спасибо, вроде разобрался. Но дело в том, что я делаю все примерно так же.
Записываю в пцф все единицы, в то время как выходы через 10к на земле. Считываю - все единицы. Вобщем постоянно - что записываю, то и считываю, не зависимо от состояния пинов!
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Непрочитано 13.10.2009, 22:43  
tsb
Прописка
 
Аватар для tsb
 
Регистрация: 25.11.2006
Адрес: Харьков
Сообщений: 295
Сказал спасибо: 25
Сказали Спасибо 71 раз(а) в 60 сообщении(ях)
tsb на пути к лучшему
По умолчанию Re: PCF8574

Насколько я понимаю, квази-двунаправленные порты внутри микросхемы подтянуты к плюсу. Поэтому для них 10кОм на землю - не ноль. Пороговое сопротивление для переключения входа в ноль может быть порядка 1-2кОм, можно уточнить экспериментально.
tsb вне форума  
Непрочитано 14.10.2009, 17:10  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
Злость Re: PCF8574

Как показано на диаграмме в дш, есть состояние слабой единицы - 100мкА току. Я нагружал 330 Ом. Все равно бяка, единица все равно "сильная".
Может проблема в том, что пока все мои опыты ограничиваются протеусом, но в том и суть протеуса, чтоб не покупать железо на стадии задумки...
Если закорачиваю пин на землю - все круто, читается ноль, да только ток через пин - 50мА, вобщем метелка пину.
И не понимаю, почему при включении питания пцф (без каких либо операций и2ц) единица также "сильная"...
У кого-то есть рабочий проект, в котором из пцф что-нить ВВОДИТСЯ?
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:21.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot