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

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

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

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

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

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


 
Опции темы
Непрочитано 01.03.2014, 20:43  
efimius
Частый гость
 
Регистрация: 01.04.2008
Сообщений: 16
Сказал спасибо: 2
Сказали Спасибо 77 раз(а) в 9 сообщении(ях)
efimius на пути к лучшему
По умолчанию МикроС проблема с 12С соединением

Доброго времени суток.
Стоит задача связать 18F26J50 через шину I2C c ЖКД типа 1602. Компайлер микроС 5.61. Для согласования применяется PCF8574. Симуляция ведётся В Протеусе 7.К сожалению на форуме не смог найти подобный топик.
С самого начала дело не заладилось и я решил упростить задачу-заменить ЖКД на восьмёрку светодиодов,подключённых к выходам PCF8574,благо это по сути-защёлка.Программа простая- вывести на светодиоды комбинацию101010.
Вот неработающая программа:

Код:
//HS,HS-USB * 4MHz,no PLL*


void main() {

   ANCON0 = 0b11111111;          //Config all analog to digital
   ANCON1 = 0b00011111;          //Config all analog to digital

   SSP1CON1.B5=1;                //Set MSSP1 enable bit
   SSP1CON1.B3 =1; //--------\
   SSP1CON1.B2 =0; //         \__ //I2C Master mode,SSPM‹0:3›- 1000
   SSP1CON1.B1 =0; //         /
   SSP1CON1.B0 =0; //--------/
TRISB=1;
PORTB=1;
  I2C1_Init(100000);         // initialize I2C communication
  I2C1_Start();              // I2C start signal
  I2C1_Wr(0x27);             // send byte via I2C  (PCF8574 address)
  I2C1_Wr(0xAA);             // send data (LEDs-10101010 combination on)
  I2C1_Stop();               //I2C stop signal
Буду рад любой посильной помощи, с пониманием приму любую ругань.
Реклама:
efimius вне форума  
Непрочитано 01.03.2014, 21:33  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: МикроС проблема с 12С соединением

Токо сегодня юзал датчик температуры и влажности.
Дровосеков, как всегда пришлось попинать. "Мутный глаз" - на SDA и смотрел что к чему.
Итак
Иициализируем I²c
SDA - стоит в 1 как влитой
Далее простенькая зацикленная программка и смотрим внимательно в мутный глаз.
Start -› SDA падает
WriteAddresss - идут 7 бит адреса и бит "R/W" нуликом и ...
должен придти бит "АСК" , которого нет !!!
Stop -›

И вот тут веревочная петля на шею дровосеку, и крутим палочку пока он не угадает (а может выдаст тайну ) тот адрес, при передачи которого появится долгожданны бит "ACК"!!!!
А далее все просто как мычание.

В вашем тексте очень смущает первый Write (0x27) -вот нулевой бит обязан быть нулем, т.к. это операция записи в девайс.
Boba_spb вне форума  
Непрочитано 01.03.2014, 21:44  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: МикроС проблема с 12С соединением

Буду краток.
Вложения:
Тип файла: rar PCF8574_LCD.rar (75.1 Кб, 45 просмотров)
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
efimius (02.03.2014)
Непрочитано 02.03.2014, 00:24  
efimius
Частый гость
 
Регистрация: 01.04.2008
Сообщений: 16
Сказал спасибо: 2
Сказали Спасибо 77 раз(а) в 9 сообщении(ях)
efimius на пути к лучшему
По умолчанию Re: МикроС проблема с 12С соединением

Сообщение от Boba_spb Посмотреть сообщение
Токо сегодня юзал датчик температуры и влажности.
Дровосеков, как всегда пришлось попинать. "Мутный глаз" - на SDA и смотрел что к чему.
Итак
Иициализируем I²c
SDA - стоит в 1 как влитой
Далее простенькая зацикленная программка и смотрим внимательно в мутный глаз.
Start -› SDA падает
WriteAddresss - идут 7 бит адреса и бит "R/W" нуликом и ...
должен придти бит "АСК" , которого нет !!!
Stop -›

И вот тут веревочная петля на шею дровосеку, и крутим палочку пока он не угадает (а может выдаст тайну ) тот адрес, при передачи которого появится долгожданны бит "ACК"!!!!
А далее все просто как мычание.

В вашем тексте очень смущает первый Write (0x27) -вот нулевой бит обязан быть нулем, т.к. это операция записи в девайс.
Address Reference
INPUTS
I2C BUS SLAVE ADDRESS
A2 A1 A0
L L L 32 (decimal), 20 (hexadecimal)
L L H 33 (decimal), 21 (hexadecimal)
L H L 34 (decimal), 22 (hexadecimal)
L H H 35 (decimal), 23 (hexadecimal)
H L L 36 (decimal), 24 (hexadecimal)
H L H 37 (decimal), 25 (hexadecimal)
H H L 38 (decimal), 26 (hexadecimal)
H H H 39 (decimal), 27 (hexadecimal)

Из даташита PCF8574 вот такая таблица.Я завёл А0-А2 на лог. 1.Вроде адрес получается 0Х27
efimius вне форума  
Непрочитано 02.03.2014, 00:30  
efimius
Частый гость
 
Регистрация: 01.04.2008
Сообщений: 16
Сказал спасибо: 2
Сказали Спасибо 77 раз(а) в 9 сообщении(ях)
efimius на пути к лучшему
По умолчанию Re: МикроС проблема с 12С соединением

Вот сейчас кинулся к Протеусу.Действительно в Протеусе адреса с 0Х40 до 0Х4F, значит мой 0Х4F? Ща попробую.
efimius вне форума  
Непрочитано 02.03.2014, 00:43  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: МикроС проблема с 12С соединением

При посылке адреса, а это первый байт после "Старт" - нулевой бит это "r/w".
Поэтому в регистр надо писать adr*2, если собираетесь выдавать в I2C или
adr*2+ 1, если собираетесь читать. Вы же пользуете подпрограмму I2C1_Wr() ,которая тупо пишет в регистр байт, то что вы передаете в аргументе.
Boba_spb вне форума  
Сказали "Спасибо" Boba_spb
efimius (02.03.2014)
Непрочитано 02.03.2014, 01:33  
efimius
Частый гость
 
Регистрация: 01.04.2008
Сообщений: 16
Сказал спасибо: 2
Сказали Спасибо 77 раз(а) в 9 сообщении(ях)
efimius на пути к лучшему
По умолчанию Re: МикроС проблема с 12С соединением

Добил! Но Протеус тоже слушать не надо.Разобрался с PCF8574.Адрес должен быть 0Х4Е,потому как А0-А2 - это старшие биты младшего полубайта,а самый младший бит - это R/!W запись-чтение,который в моём случае должен быть записью,т.е. нулём. Теперь можно вместо восьмёрки светодиодов подключать ЖКИ.Будем думать. Очень благодарен всем за помощь
efimius вне форума  
Непрочитано 02.03.2014, 01:35  
efimius
Частый гость
 
Регистрация: 01.04.2008
Сообщений: 16
Сказал спасибо: 2
Сказали Спасибо 77 раз(а) в 9 сообщении(ях)
efimius на пути к лучшему
По умолчанию Re: МикроС проблема с 12С соединением

Особое спасибо Boba_spb
efimius вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема со схемой для получения ВАХ двухполюсников 694338 Измерительное оборудование 91 31.03.2013 01:12
VGA-кабель 10 м и проблема в Linux Chay_Nik Видеотехника 19 08.01.2012 17:54
Проблема с правым фронтом на 5.1 djen Аудиотехника 7 29.05.2011 15:19
Проблема при запуске uc3855 Marlboro Источники питания и свет 0 19.07.2005 13:52


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


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