Проблема с датчиком DS18B20.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Закрыто
Reaper666
Открыл глаза
Сообщения: 50
Зарегистрирован: Пн ноя 05, 2012 03:40:39

Проблема с датчиком DS18B20.

Сообщение Reaper666 »

Собственно, возился с этим датчиком и напоролся на ошибку, только так и не понял, где я её допустил. Я считываю два байта с датчика и каждый байт отправляю в отдельную переменную. Поскольку работаю первый раз, то попробовал вывести первый байт на портб и туда выводятся одни единицы. Какую температуру на датчике не устанавливай, все равно и в первом и во втором байте выдаются единицы. Что может быть не так? Код привожу. Контроллер PIC16F84A

Код: Выделить всё


#include <pic.h>
#include <htc.h>
__CONFIG(0x3ff2);
#define state TRISA3
#define pin RA3

void init(void)
{
state=1;
pin=0;
state=0;
_delay(50);
state=1;
_delay(65);
}

void TX(unsigned char com)// процедура записи в датчик
{
unsigned char i=0,temp=0;
temp=com;
for (i=0;i<8;i++)
{
	if (temp&0x01) 
	{
	pin=0;
	state=0;
	_delay(15);
	state=1;
	_delay(60);
	}
	else
	{
	pin=0;
	state=0;
	_delay(60);
	state=1;
	}
temp>>=1;	
}
}

int RX(void) // процедура чтения из датчика
{
unsigned char i=0,dat=0,b;
for (i=0;i<8;i++)
{
pin=0;
state=0;
_delay(5);
state=1;
_delay(50);
b=pin;
_delay(50);
dat|=(b<<i);

}
return dat;
}

void main()
{
unsigned char l,i;
int t1,t2,temperature;
char temp[10];
TRISA=0;
TRISB=0;
PORTA=0;
PORTB=0;
init();
TX(0xCC); //skip ROM
TX(0X44); //Конвертировать 
_delay(750);
init();
TX(0xCC);
TX(0xBE);
temp[0]=RX();
temp[1]=RX();
PORTB=temp[0];

while(1) {}

}
Вложения
project.rar
(5.79 КБ) 184 скачивания
Реклама
Аватара пользователя
korsaj
Потрогал лапой паяльник
Сообщения: 330
Зарегистрирован: Чт июн 23, 2011 07:55:51

Re: Проблема с датчиком DS18B20.

Сообщение korsaj »

Перед чтением порта, его нужно перевести в третье состояние (на вход).
Да и передовать нужно аккуратно, ДС в ответ подтягивает линию на массу.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Проблема с датчиком DS18B20.

Сообщение BOB51 »

На все вопросы есть тема :
http://radiokot.ru/forum/viewtopic.php?f=20&t=64022
:)
Закрыто

Вернуться в «Периферия»