View Full Version : ibutton ds1990 dallas
  
davleo
- 17th December 2003, 14:23
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
ogranadino
- 12th May 2005, 23:04
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.
davleo
- 13th May 2005, 13:07
thanks oscar
NL2TTL
- 13th May 2005, 17:39
There is a more easy way (use 1-wire) personal message me if you like more info
NavMicroSystems
- 13th May 2005, 17:51
It is as simple as:
' 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]]
For Reference see DS1990 Datasheet (http://pdfserv.maxim-ic.com/en/ds/DS1990A-F3-DS1990A-F5.pdf)
mister_e
- 13th May 2005, 17:52
personal message me if you like more info
why?  it is not the place to share our code & knowledge? it's a military secret? ;)
NavMicroSystems
- 13th May 2005, 17:54
why?  it is not the place to share our code & knowledge? it's a military secret? ;)
Steve, it's like with binary,
There are only 10 types of people
... those who do share code,
and those who don't
NL2TTL
- 13th May 2005, 17:57
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 directly :) no hard feelings :P
ogranadino
- 17th May 2005, 00:08
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.
mister_e
- 17th May 2005, 03:21
http://www.picbasic.co.uk/forum/showthread.php?t=1672&highlight=crc%2A
ogranadino
- 18th May 2005, 19:51
thanks steve.
 
Powered by vBulletin® Version 4.1.7 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.