Суть проблемы вот в чем. Подцепил к контроллеру tiny2313 термодатчик ds1620 и хочу выводить значение температуры на индикатор.
Набросал схемку в proteus написал программу(пишу на assembler). Программу отладил, на модели работает(одно "но" модель ds1620 в протеусе походу немного кривая, т.к. если выставить температуру с .5гр, присымает на градус больше).А на реальной схеме трабл, вывод на индикатор нормально, а вот с опросом и приемом данных с ds1620 проблема. Немогу понять в чем дело кто сталкивался с данным термодатчиком помогите.
Прилагаю модель и текст процедуры обмера с датчиком.
Код: Выделить всё
//ds1620
zapros_temp: sbi LCD_TEMP, TEMP_RESET
ldi temp, 0x0C
rcall send_byte
rcall sleeps
ldi temp, 10
rcall send_byte
cbi LCD_TEMP, TEMP_RESET
rcall sleeps
sbi LCD_TEMP, TEMP_RESET
ldi temp, 0xEE
rcall send_byte
cbi LCD_TEMP, TEMP_RESET
rcall sleeps
sbi LCD_TEMP, TEMP_RESET
ldi temp, 0xAA
rcall send_byte
rcall sleeps
rcall read_byte
cbi LCD_TEMP, TEMP_RESET
ret
send_byte: ldi temp_2_10, 8
send_loop: ror temp
brcs send_1
cbi LCD_TEMP, TEMP_CLK
cbi LCD_TEMP, TEMP_DATA
rcall sleeps
sbi LCD_TEMP, TEMP_CLK
rcall sleeps
rjmp end_send
send_1: cbi LCD_TEMP, TEMP_CLK
sbi LCD_TEMP, TEMP_DATA
rcall sleeps
sbi LCD_TEMP, TEMP_CLK
rcall sleeps
end_send: dec temp_2_10
brne send_loop
ret
read_byte: ldi R16,0b11111110 ;настройка портов
out DDR_LCD_TEMP,R16
clr byte_1
clr byte_2
clr R29
cbi LCD_TEMP, 6//отметка для теста в proteus
//первый бит .5гр
sbi LCD_TEMP, TEMP_CLK
rcall sleeps
in temp, IN_LCD_TEMP
cbi LCD_TEMP, TEMP_CLK
andi temp, 0b00000001
mov byte_2, temp
ldi temp_2_10, 7
read_loop: //непосредственно значение температуры
sbi LCD_TEMP, TEMP_CLK
rcall sleeps
in temp, IN_LCD_TEMP
cbi LCD_TEMP, TEMP_CLK
andi temp, 0b00000001
lsr temp
ror byte_1
dec temp_2_10
brne read_loop
ror byte_1 //нормализую значение температуры
//последний 9-й бит мне не нужен измеряемые значения температуры только "+"
sbi LCD_TEMP, TEMP_CLK
rcall sleeps
//in temp, IN_LCD_TEMP
cbi LCD_TEMP, TEMP_CLK
//andi temp, 0b00000001
//mov R29, temp
sbi LCD_TEMP, 6//отметка для теста в proteus
ldi R16,0b11111111 ;настройка портов
out DDR_LCD_TEMP,R16
ret
