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

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

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

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

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

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


 
Опции темы
Непрочитано 25.06.2020, 09:53  
yellow87
Вид на жительство
 
Аватар для yellow87
 
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
yellow87 на пути к лучшему
Вопрос определить адрес устройства i2C

Подключил устройство к PIC12F675
Сканирую адреса подключенных устройств и получаю четыре штуки.
Отчего такое может быть?
Код:
#include ‹12F675.h›
#FUSES WDT, INTRC_IO, PUT, NOBROWNOUT, NOPROTECT, NOCPD, NOMCLR
#use delay(clock=4000000, restart_wdt)
#use i2c(Master, sda=PIN_A1, scl=PIN_A0) 
..........
for(i=0xA0; i ‹ 0xC0; i++) 
    { 
	i2c_start(); 
	status = i2c_write(i);  
	if(!status){putc(i); delay_ms(10); putc(i); delay_ms(10);}
	i2c_stop(); 
	putc(i);
    delay_ms(50);
    }
....B3 B4 B5 B6 B7 B8 B9 BA BA BA BB BB BB BC BC BC BD BD BD BE BF C0
Реклама:
yellow87 вне форума  
Непрочитано 25.06.2020, 14:05  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,372
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: определить адрес устройства i2C

а что является критерием что адрес существует?
вы уверены что эта галиматья на си верно определяет бит отклика на шине?
я вот например этого вообще не вижу за макросами
__________________
кагмаподэ магмаподэ
индюк вне форума  
Непрочитано 25.06.2020, 14:55  
yellow87
Вид на жительство
 
Аватар для yellow87
 
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
yellow87 на пути к лучшему
Вопрос Re: определить адрес устройства i2C

спасибо за отклик.

я думаю эта "галиматья" всё очень верно определяет.
Потому что эта ни чья-то сторонняя библиотека с самодельными макросами, а давным-давно разработанный метод компилятора CCS
Когда мы указываем директиву #use i2c(Master, sda=PIN_A1, scl=PIN_A0)
Компилятор вставляет набор ассемблерных команд
Код:
5:                 #use i2c(Master, sda=PIN_A1, scl=PIN_A0) 
   044    3008     MOVLW 0x8
   045    00A1     MOVWF 0x21
   046    0000     NOP
.............  всего 50 команд
   075    1085     BCF 0x5, 0x1
   076    1283     BCF 0x3, 0x5
   077    28DC     GOTO 0xdc
Устройство, исходя из даташита имеет адрес 0хВА, значит моя функция должна три раза его выдать на терминал.
А выдаются кроме этого ещё и соседние адреса
yellow87 вне форума  
Непрочитано 26.06.2020, 01:49  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,372
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: определить адрес устройства i2C

когда я чото не понимаю - я беру осцил и смотрю биты которые в натурале летают по шине.
все сразу становится понятно и четко. занимает 1 минуту.

если есть сомнения что чьято индусская либа лагает - тупо пишу свою без всякого говномакроса.


контрлольный вопрос вам - как вся эта галиматья узнает что какойто адрес ответил???
__________________
кагмаподэ магмаподэ

Последний раз редактировалось индюк; 26.06.2020 в 01:53.
индюк вне форума  
Сказали "Спасибо" индюк
makakus (28.06.2020)
Непрочитано 26.06.2020, 14:16  
pt200
Прописка
 
Регистрация: 30.08.2010
Сообщений: 143
Сказал спасибо: 237
Сказали Спасибо 35 раз(а) в 28 сообщении(ях)
pt200 на пути к лучшему
По умолчанию Re: определить адрес устройства i2C

1) при таком коде у устройства будет "2 адреса"( младший бит определяет направление)
2) а почему бы неизвестному устройству не иметь 2 адреса( или не работающий младший бит)?
pt200 вне форума  
Непрочитано 27.06.2020, 10:22  
yellow87
Вид на жительство
 
Аватар для yellow87
 
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
yellow87 на пути к лучшему
По умолчанию Re: определить адрес устройства i2C

контрлольный ответ вам - когда какой-то адрес ответил, он удерживает линию SDA в нуле, что и регистрируется в переменной Status. ну и если status==0, то текущий сканируемый адрес печатается в терминал три раза.
А у меня три раза выдавались на терминал четыре адреса:
....B3 B4 B5 B6 B7 B8 B9 BA BA BA BB BB BB BC BC BC BD BD BD BE BF C0

В общем причина произошедшего не выяснена, зато найден метод избавления от неё:
Сначала нужно закончить работу с шиной I2C, а только потом UART использовать, а не наоборот!
Код:
i2c_stop(); 
if(!status).....
Теперь всё работает!
Спасибо всем откликнувшимся!
yellow87 вне форума  
Непрочитано 28.06.2020, 12:29  
makakus
Почётный гражданин KAZUS.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,106
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: определить адрес устройства i2C

Логгер за 20 баксов с али решает такие проблемы на раз.
makakus вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
I2C в спорных условиях dmitry.shagin Микроконтроллеры, АЦП, память и т.д 7 01.02.2012 18:21
Акселерометр MMA7455 немогу соединиться по I2C Maxim39 Микроконтроллеры, АЦП, память и т.д 1 26.01.2012 07:27
Подскажите микросхему LED-драйвера с I2C Archer07 Микроконтроллеры, АЦП, память и т.д 10 17.03.2011 11:41
Знатоки AVR и I2C нужна помощь Vlad68 Микроконтроллеры, АЦП, память и т.д 0 23.05.2007 17:51
Запись в I2C EEPROM yel Микроконтроллеры, АЦП, память и т.д 8 07.03.2007 16:08


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


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