summaryrefslogtreecommitdiff
path: root/avr/1wire.c
diff options
context:
space:
mode:
Diffstat (limited to 'avr/1wire.c')
-rw-r--r--avr/1wire.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/avr/1wire.c b/avr/1wire.c
index 5dbca82..affd80d 100644
--- a/avr/1wire.c
+++ b/avr/1wire.c
@@ -79,15 +79,20 @@ uint8_t w1_bit_io( uint8_t b )
_delay_us( 1 );
if( b )
{
- //hard_vcc;
- //asm volatile("nop" ::: );
+ hard_vcc;
+ _delay_us(7 );
soft_vcc;
+ _delay_us( 15 - 1 - 7 );
+ }
+ else
+ {
+ _delay_us( 15 - 1 );
}
- _delay_us( 15 - 1 );
if( (W1_IN & (1<<W1_PIN)) == 0 )
b = 0;
_delay_us( 60 - 15 );
- soft_vcc;
+ //soft_vcc;
+ hard_vcc;
sei();
return b;
}
@@ -104,6 +109,7 @@ uint8_t w1_byte_wr( uint8_t b )
b |= 0x80;
}
while( --i );
+ soft_vcc;
return b;
}
@@ -113,7 +119,7 @@ uint8_t w1_byte_rd( void )
return w1_byte_wr( 0xFF );
}
-
+/*
uint8_t w1_rom_search( uint8_t diff, uint8_t *id )
{
uint8_t i, j, next_diff;
@@ -158,7 +164,7 @@ uint8_t w1_rom_search( uint8_t diff, uint8_t *id )
}
while( i );
return next_diff; // to continue search
-}
+}*/
void ds1992_read(uint16_t addr, uint8_t* buf, uint8_t len)
{