Library to communicate with Maxim OneWire protocol devices Modified timings and IRQ overrides
Fork of Onewire by
Revision 5:45b6a39002f1, committed 2015-09-28
- Comitter:
- Bobty
- Date:
- Mon Sep 28 10:31:58 2015 +0000
- Parent:
- 4:b678c7c8203c
- Child:
- 6:d2452e9b169b
- Commit message:
- Added IRQ handling code; Changed timings a little
Changed in this revision
| Onewire.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/Onewire.cpp Sat Feb 21 18:01:10 2015 +0000
+++ b/Onewire.cpp Mon Sep 28 10:31:58 2015 +0000
@@ -12,13 +12,14 @@
void Onewire::writeBit(int bit)
{
+ __disable_irq();
bit = bit & 0x01;
if (bit)
{
// Write '1' bit
oneBus_.output();
oneBus_ = 0;
- wait_us(5);
+ wait_us(12);
oneBus_.input();
wait_us(60);
}
@@ -27,23 +28,26 @@
// Write '0' bit
oneBus_.output();
oneBus_ = 0;
- wait_us(70);
+ wait_us(60);
oneBus_.input();
- wait_us(2);
+ wait_us(12);
}
+ __enable_irq();
}
int Onewire::readBit()
{
char result;
+ __disable_irq();
oneBus_.output();
oneBus_ = 0;
- wait_us(1);
+ wait_us(5);
oneBus_.input();
- wait_us(5);
+ wait_us(7);
result = oneBus_.read();
- wait_us(55);
+ wait_us(60);
+ __enable_irq();
return result;
}
@@ -52,13 +56,16 @@
oneBus_.output();
oneBus_ = 0;
wait_us(480);
+ __disable_irq();
oneBus_.input();
wait_us(60);
if (oneBus_.read() == 0)
{
- wait(0.0001);
+ __enable_irq();
+ wait_us(100);
return 1;
}
+ __enable_irq();
return 0;
}
