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

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

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

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

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

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

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

 
Опции темы
Непрочитано 02.08.2011, 14:14  
roer
Частый гость
 
Регистрация: 30.04.2009
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
roer на пути к лучшему
По умолчанию Проблема с сенсором температуры DS1621

Вот взялся подружить ATmega8535 и датчик температуры DS1621.
Пока в железе не пробовал, хотелось бы отладить виртуально, а потом тратится на датчик.
Датчик подключен через аппаратный I2C.
Все обрабатывается в прерывании от I2C.
Читать нужно только старший байт температуры (передается первым).
Функции термостата отключены.

Вот кусок проблемного кода:

1 interrupt [TWI] void twi_isr(void)
2
3 {ds1621_comcounter++; //счетчик команд
4 switch (ds1621_comcounter)
5 {
6 case 0x01: TWDR=0x92; //адрес, бит записи
7 TWCR=0x85; break;
8 case 0x02: TWDR=0xAC; //Команда доступа к конфиг регистру
9 TWCR=0x85; break;
10 case 0x03: TWDR=0x00; //запись в конфиг регистр (режим постоянных преобразований)
11 TWCR=0x85; break;
12 case 0x04: TWCR=0xE5; break; //повстарт
13 case 0x05: TWDR=0x92; //адрес, бит записи
14 TWCR=0x85; break;
15 case 0x06: TWDR=0xEE; //команда на старт преобразования температуры
//аппаратно преобразование занимает около 750мс
//при моделировании в протеусе я установил 1мкс
16 TWCR=0x85; break;
17 case 0x07: TWCR=0xE5; break; //повстарт
18 case 0x08: TWDR=0x92; //адрес, бит записи
19 TWCR=0x85; break;
20 case 0x09: TWDR=0xAA; //команда на чтение температуры
21 TWCR=0x85; break;
22 case 0x0A: TWCR=0xE5; break; //повстарт
23 case 0x0B: TWDR=0x93; //адрес, бит чтения
24 TWCR=0x85; break;
25 case 0x0C: T_air=TWDR; //читаем ст. байт температуры и возвращаем NACK
26 TWCR=0x85;
27 delay_us(20); //без этой паузы работа и2с зависает на 24 строчке,
//видимо нужна пауза между NACK мастера и СТОП
28 TWCR=0x95;
29 ds1621_comcounter=0;break;
30 default: ds1621_comcounter=0;
}
}

Скажу сразу я новичок в этом деле...поэтому предполагаю что затупил я, а не глюк протеуса (вер.7.6).
Так вот проблема в том, что до строчки 24 все впорядке и работает, мастер получает ACK после каждого прерывания, а начиная с

25 начинаются проблемы: в переменной T_air оказывается 0х93(последний переданный адрес с битом чтения, при этом

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

Похоже не инициируется передача температуры, хотя судя по состоянию TWCR - 0х58 означает что байт принят и отправлено NACK.
Вобщем я уже запух с этим датчиком, пробовал и паузы вставлять и оба байта температуры читать и т.д, всеравно фигня выходит,

ай ниид хелп.

Прилагаю даташит DS1621, и скрин моделирования в протеусе
Вложения:
Тип файла: rar i2c.rar (283.9 Кб, 55 просмотров)
Реклама:
roer вне форума  
Сказали "Спасибо" roer
warel (28.06.2019)
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с правым фронтом на 5.1 djen Аудиотехника 7 29.05.2011 15:19
Датчики температуры для агрессивных сред ramzes44 Производственное оборудование 9 02.11.2010 23:27
Проблема с FT232BM (FT232BL) anbsoft Микроконтроллеры, АЦП, память и т.д 27 07.08.2010 09:33
Подключение датчиков температуры ds1621 к LPT компьютера psionrevo Автоматика и аппаратура связи 0 14.01.2008 15:42
Проблема при запуске uc3855 Marlboro Источники питания и свет 0 19.07.2005 13:52


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


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