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

 
 
> 1-Wire
D H
сообщение Sep 20 2010, 17:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 1-11-06
Пользователь №: 21 847



Не получается корректно прочитать iButton. Т.е. читается что-то из линии, но совсем не то.
В наличии имею две iButton, считанный код для каждой уникальный и повторяется при каждом чтении.
Ткните носом, где не прав.

Запись:
CODE
void Wire1_WriteBit(unsigned char cBit)
{
WIRE1_DN();
if(cBit==0) delay_us(60);
if(cBit==1) delay_us(1);
WIRE1_UP(); // Отпускание линии
if(cBit==0) delay_us(1);
if(cBit==1) delay_us(60);
}



void Wire1_SendByte(unsigned char data)
{
unsigned char temp;
unsigned char i;

SetBit(Wire1DDR,Wire1Bit); // Перевод порта в режим записи

for (i = 0; i < 8; i++) // Отправка байта в линию
{
temp = data & 0x01;
if (temp)
{
Wire1_WriteBit(1);
}
else
{
Wire1_WriteBit(0);
}
data >>= 1;
}

ClearBit(Wire1DDR,Wire1Bit); // Перевод порта в режим чтения
}


Чтение:
CODE
unsigned char Wire1_ReadBit()
{
unsigned char ReadBit=0;

SetBit(Wire1DDR,Wire1Bit); // Перевод порта в режим записи
WIRE1_DN(); // Линия вниз
delay_us(1);
WIRE1_UP(); // Линия вверх

ClearBit(Wire1DDR,Wire1Bit); // Перевод порта в режим чтения
delay_us(14);

// Чтение линии 1-Wire
if( IsBitSet(Wire1Pin, Wire1Bit) ) ReadBit=1; // В линии 1

return ReadBit;
}


unsigned char Wire1_ReadByte()
{
unsigned char data;
unsigned char i;

data = 0x00;

for (i = 0; i < 8; i++)
{
data >>= 1;
if (Wire1_ReadBit())
{
data |= 0x80;
}
}
return data;
}


После посылки Reset и приема Presence
Делаю так:
CODE

Wire1_SendByte(0x33); // Отправка команды чтения серийного номера

lcd_gotoxy(0,0);
for(i=0;i<8;i++)
{
cByte[i]=0; // Чтение одного байта из устройства
cByte[i]=Wire1_ReadByte(); // Чтение одного байта из устройства
if(i==5) lcd_gotoxy(0,1);
sprintf(cStr, "%2x ", cByte[i]);
lcd_puts(cStr);
}


Сообщение отредактировал D H - Sep 21 2010, 05:39
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 26th June 2025 - 22:16
Рейтинг@Mail.ru


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