Hi,
I would like to know, if somebody know how to read the serial num of ibutton ds1990 dallas, with a 16fxxx . All the information a found was in asm
thx
Hi,
I would like to know, if somebody know how to read the serial num of ibutton ds1990 dallas, with a 16fxxx . All the information a found was in asm
thx
programm...
#include <touch.c>
void main() {
BYTE buffer[8];
BYTE i;
printf("\r\nWaiting for a touch device...\r\n");
while (TRUE) {
while(!touch_present()) ;
delay_ms(200);
if(touch_present()) {
touch_write_byte(0x33);
for(i=0;i<8;++i)
buffer[i]=touch_read_byte();
}
}
}
//you need to use this lib
///////////////////////////////////////////////////////////////////////////
//// Dallas Touch Driver ////
//// ////
//// present = touch_present() Issues a reset and returns TRUE ////
//// if the touch device is there. ////
//// ////
//// data = touch_read_BYTE() Reads one BYTE from a touch device. ////
//// ////
//// ok = touch_write_BYTE(data) Writes one BYTE to a touch device ////
//// and returns TRUE if all went OK. ////
//// A FALSE indicates a collision with ////
//// another device. ////
//// ////
///////////////////////////////////////////////////////////////////////////
//// Derivative programs created using this software in object code ////
//// form are not restricted in any way. ////
///////////////////////////////////////////////////////////////////////////
#ifndef TOUCH_PIN
#define TOUCH_PIN PIN_B0
#if defined(__PCH__)
#bit TOUCH_PIN_BIT = 0xF8A.0
#else
#bit TOUCH_PIN_BIT = 6.0
#endif
#endif
BYTE touch_read_byte() {
BYTE i,data;
for(i=1;i<=8;++i) {
output_low(TOUCH_PIN);
delay_us(14);
output_float(TOUCH_PIN);
delay_us(5);
shift_right(&data,1,input(TOUCH_PIN));
delay_us(100);
}
return(data);
}
BYTE touch_write_byte(BYTE data) {
BYTE i;
for(i=1;i<=8;++i) {
output_low(TOUCH_PIN);
delay_us(10);
if(shift_right(&data,1,0)) {
output_high(TOUCH_PIN);
delay_us(10);
if(!TOUCH_PIN_BIT)
return(0);
} else {
output_low(TOUCH_PIN);
delay_us(10);
if(TOUCH_PIN_BIT)
return(0);
}
delay_us(50);
output_high(TOUCH_PIN);
delay_us(50);
}
return(TRUE);
}
BYTE touch_present() {
BOOLEAN present;
output_low(TOUCH_PIN);
delay_us(500);
output_float(TOUCH_PIN);
delay_us(5);
if(!input(TOUCH_PIN))
return(FALSE);
delay_us(65);
present=!input(TOUCH_PIN);
delay_us(240);
if(present)
return(TRUE);
else
return(FALSE);
}
luck.. touch the ds1990 or ds1991 whit pin RB0(B0), and the other side to ground...
best regards
oscar from chile.
Last edited by ogranadino; - 12th May 2005 at 22:08.
There is a more easy way (use 1-wire) personal message me if you like more info
It is as simple as:
For Reference see DS1990 DatasheetCode:' Read iButton Family Code & Serial Number TempA var byte[8] iButton Var PortB.0 ' iButton connected to PortB.0 OWOUT iButton,1,[$33] ' Issue Read ROM command Pause 100 'Read 64 Bits (8 Bytes) into Array TempA OWIN iButton,0,[TempA[0],TempA[1],TempA[2],TempA[3],TempA[4],TempA[5],TempA[6],TempA[7]]
regards
Ralph
_______________________________________________
There are only 10 types of people:
Those who understand binary, and those who don't ...
_______________________________________________
why? it is not the place to share our code & knowledge? it's a military secret?Originally Posted by nl2ttl
![]()
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Steve, it's like with binary,Originally Posted by mister_e
There are only 10 types of people
... those who do share code,
and those who don't
Last edited by NavMicroSystems; - 13th May 2005 at 16:56.
regards
Ralph
_______________________________________________
There are only 10 types of people:
Those who understand binary, and those who don't ...
_______________________________________________
Well, i can share my code, and no problem at all but in the past i see so many poeple place mess of code, and at that moment the one how asked has already fixed it.
Next time i post ie directlyno hard feelings :P
Hi,
I would like to know, if somebody know how to calculate the CRC of ibutton ds1990 dallas, with a 16fxxx . All the information a found was in asm
thanks.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Bookmarks