Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/52: Рейтинг темы: голосов - 52, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 75
1

вопрос про iic

23.12.2011, 16:29. Показов 9668. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хотелось бы использовать цифровой датчик температуры. Не мог бы мне кто-нибудь скинуть пример работы с шиной iic. Нужен самый простой пример, когда на шине кроме мк всего одно устройство на asm или си. Нужно простые действия - отправить байт, принять и т.д.
Видел библиотеку для iic от Ди, но там чего то слишком круто для меня, и к тому же пример для RTOS - а в это я вообще не лез
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2011, 16:29
Ответы с готовыми решениями:

моя первая плата, хедеры - вопрос про eagle или про пайку
До сих пор я паял платы на однослойных платах для прототипирования - примерно вот таких...

Шина IIC
Проблема с изучением интерфейса IIC. Atmega 48 подключен к ds1621 по шине ИИЦ, а сам к UART через...

IIC/I2C/TWI и провод "Пружинка"
Не изливайте на меня тонны говна - вопрос и проблема интересные) Есть два маленьких МК на одной...

Вопрос про обратную связь, и про схемотехнику полумоста
Добрый день) Я сейчас делаю схему от уважаемого rost c форума http://www.psb-kots.ru/forum/ , и...

27
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 75
10.01.2012, 13:00 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от msmd
Цитата Сообщение от Lixlex
код под спойлером
В проверке стоп-сигнала используется бит TWSTO, а не TWINT. У Вас работает с этим? У меня и в протеусе и в железе зацикливается.
Все процедуры копирнул из этой статьи http://iosyitistromyss.ru/chas... f8583.html
0
0 / 0 / 0
Регистрация: 21.06.2011
Сообщений: 176
10.01.2012, 13:52 22
Цитата Сообщение от Lixlex
Все процедуры копирнул из этой статьи
Ага, читал. Потому непонятно.
0
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 75
10.01.2012, 14:31 23
а как правильно?
0
0 / 0 / 0
Регистрация: 21.06.2011
Сообщений: 176
10.01.2012, 17:54 24
Хз: в секции даташита на МК, где описывается TWI вообще не проверяется установка стоп-сигнала; в интернете встречал код именно с проверкой на TWSTO. У самого, как говорил, с ним не работает. Да и из общей логики выпадает.

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

Из того с чем ещё столкнулся: обязательны либо паузы, либо проверки TWCR на готовность при обращении к шине. Ну и номинал резисторов подобрать по формуле (см. даташит на МК с TWI).
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
10.01.2012, 18:01 25
Цитата Сообщение от Lixlex
Таки удалось считать данные с датчика. Но не пойму точно ли это температура.
Старший байт - температура в градусах цельсия. Очень похоже на отсутствие блокировочного конденсатора у датчика. Ну или датчик такой... непостоянный.
0
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 75
10.01.2012, 20:17 26
Точно! забыл про этот конденсатор!((( А плату уже вытравил
Кстати старший байт это не совсем температура в градусах.
Например у нас датчик выдал 1740h в десятичном виде это 5952 согласно даташиту надо отбросить 5 младших битов. Этому действию эквивалентно деление на 32(в десятичном формате) 5952/32=186 полученный результат надо умножить на 0,125 чтобы получить температуру в градусах цельсия. Получаем 23,25.
Кстати, старший бит первого байта отвечает за знак температуры. Тут он равен нулю по этому +23,25
А какое назначение у этого конденсатора? Сглаживает питание?
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
10.01.2012, 20:52 27
Цитата Сообщение от Lixlex
Кстати старший байт это не совсем температура в градусах.
Например у нас датчик выдал 1740h в десятичном виде это 5952 согласно даташиту надо отбросить 5 младших битов. Этому действию эквивалентно деление на 32(в десятичном формате) 5952/32=186 полученный результат надо умножить на 0,125 чтобы получить температуру в градусах цельсия. Получаем 23,25.
Кстати, старший бит первого байта отвечает за знак температуры. Тут он равен нулю по этому +23,25
А теперь берём старший байт из вашего примера и получаем те же 23 градуса - 17h = 23. А потом ставим разделитель (точку или запятую) и последовательно умножаем младший байт на 10. Из результата берём старший байт - это десятые доли. Далее снова умножаем младший байт на 10.... (сотые, тысячные и т.д.).

А если старший бит старшего байта установлен - добавляем в начале минус, а оба байта инвертируем. Округлять по вкусу :)
0
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 75
10.01.2012, 21:28 28
спасибо за подсказку насчет конденсатора. Подпаял его и теперь температура стабильно держится
0
10.01.2012, 21:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2012, 21:28
Помогаю со студенческими работами здесь

многоканальный IIC
Задача сделать многоканальный IIC, т.е. на один контроллер посадить несколько линий этого...

Формат файла iic
кто нибудь знает Формат файла iic используется Cypress, для заливки программы во внешнюю память

Библиотеку полноценного IIC обмена
В общем в свободное время тут ваяю либу обмена данными по y2s для AVR чтобы все аппаратно. На...

вопрос про Sape, про поиск площадок
Делаю поиск площалок. В каждом пункте результатов поиска есть кнопки BL и GBL. Что они значат и...

Вопрос про
Ответте, пожалуйста новичку: является ли спамом страница сайта на которой все закрыто в <noindex>...

вопрос про PR
А чем отличаеться Toolbar PageRank от Live PageRank, и почему они разные?

Вопрос про GET
У меня нарисовалась такая проблема: Есть страница (например index.php), на этой странице...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru