реклама на сайте
подробности

 
 
> Греется микросхема - датчик температуры DS1621., DS1621
Charoit
сообщение Nov 9 2007, 11:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 10-10-07
Пользователь №: 31 217



Электронный термометр на Атмега8515 и датчик DS1621. Вывод на ЖКИ отлажен и проверен, более-менее разобрался с И2С. При подключении питания на ЖКИ выводится значение температуры : начинается с 30 градусов (при комнатной 24-26), далее растет и останавливается при 49-50.. Случайно потрогал датчик - а микросхема-то очень и очень теплая! Не горячая, но температура заметно выше комнатной (Атмега холодная, как и другие микросхемы на отладочной плате). В чем может быть дело?

З.Ы. Если к датчику поднести что-то, имеющее другую температуру, он реагирует адекватно - температура на ЖКИ падает или растет.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Charoit
сообщение Nov 11 2007, 22:10
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 10-10-07
Пользователь №: 31 217



Повесил резисторы 4,7 кОм. Переработал подпрограммы I2C, в PORTB записал нули, сигналом на ножках играюсь, записывая 0 или 1 в DDRB. Но обмен пока не идетsad.gif Подскажите пожалуйста, все ли ок в моих подпрограммах?

Код
start_I2C:    
    cbi    ddrB,SDA
    cbi    ddrB,SCL    
    rcall    wait_I2C    
    sbi    ddrB,SDA
    rcall    wait_I2C
    sbi    ddrB,SCL
    rcall    wait_I2C
    ret




Код
Write_I2C:
    ldi    cnt_I2C,8    
wr1_I2C:
    sbi    ddrB,SDA
    rcall    wait_I2C
    sbrc    data_I2C,7    
    cbi    ddrB,SDA
    rcall    wait_I2C
    rol    data_I2C
    sbi    ddrB,SCL
    rcall    wait_I2C
    sbi    ddrB,SCL    
    rcall    wait_I2C    
    dec    cnt_I2C        
    brne    wr1_I2C
    ret


Код
Read_I2C:
    ldi    cnt_I2C,8    
    cbi    ddrB,SDA    
    rcall    wait_I2C

rd1_I2C:
    cbi    ddrB,SCL    
    rcall    wait_I2C        
clc
    sbic    pinB,SDA    
    sec
    rol    data_I2C    
    sbi    ddrB,SCL    
    rcall    wait_I2C    
    dec    cnt_I2C        
    brne    rd1_I2C
    sbi    ddrB,SDA    
    rcall    wait_I2C
    ret


Сообщение отредактировал Charoit - Nov 11 2007, 22:13
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 12 2007, 01:51
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Вот в этом куске ошибка:
Код
Write_I2C:
    .........
    rol    data_I2C
    sbi    ddrB,SCL   // тут наверное cbi должно быть.
    rcall    wait_I2C
    sbi    ddrB,SCL    
    rcall    wait_I2C    
    dec    cnt_I2C        
    brne    wr1_I2C
    ret
И чтение/посылку ack надо сделать


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 19:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016