Merge pull request #680 from nickandrew/onewire-power
Fix bus power problems in onewire
This commit is contained in:
commit
23ce97a558
|
@ -74,7 +74,6 @@ static uint8_t LastDeviceFlag[NUM_OW];
|
||||||
|
|
||||||
void onewire_init(uint8_t pin)
|
void onewire_init(uint8_t pin)
|
||||||
{
|
{
|
||||||
// pinMode(pin, INPUT);
|
|
||||||
platform_gpio_mode(pin, PLATFORM_GPIO_INPUT, PLATFORM_GPIO_PULLUP);
|
platform_gpio_mode(pin, PLATFORM_GPIO_INPUT, PLATFORM_GPIO_PULLUP);
|
||||||
#if ONEWIRE_SEARCH
|
#if ONEWIRE_SEARCH
|
||||||
onewire_reset_search(pin);
|
onewire_reset_search(pin);
|
||||||
|
@ -176,8 +175,7 @@ void onewire_write(uint8_t pin, uint8_t v, uint8_t power /* = 0 */) {
|
||||||
}
|
}
|
||||||
if ( !power) {
|
if ( !power) {
|
||||||
noInterrupts();
|
noInterrupts();
|
||||||
DIRECT_MODE_INPUT(pin);
|
platform_gpio_mode(pin, PLATFORM_GPIO_INPUT, PLATFORM_GPIO_FLOAT);
|
||||||
DIRECT_WRITE_LOW(pin);
|
|
||||||
interrupts();
|
interrupts();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,11 +183,10 @@ void onewire_write(uint8_t pin, uint8_t v, uint8_t power /* = 0 */) {
|
||||||
void onewire_write_bytes(uint8_t pin, const uint8_t *buf, uint16_t count, bool power /* = 0 */) {
|
void onewire_write_bytes(uint8_t pin, const uint8_t *buf, uint16_t count, bool power /* = 0 */) {
|
||||||
uint16_t i;
|
uint16_t i;
|
||||||
for (i = 0 ; i < count ; i++)
|
for (i = 0 ; i < count ; i++)
|
||||||
onewire_write(pin, buf[i], 0);
|
onewire_write(pin, buf[i], 1);
|
||||||
if (!power) {
|
if (!power) {
|
||||||
noInterrupts();
|
noInterrupts();
|
||||||
DIRECT_MODE_INPUT(pin);
|
platform_gpio_mode(pin, PLATFORM_GPIO_INPUT, PLATFORM_GPIO_FLOAT);
|
||||||
DIRECT_WRITE_LOW(pin);
|
|
||||||
interrupts();
|
interrupts();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -220,9 +217,9 @@ void onewire_select(uint8_t pin, const uint8_t rom[8])
|
||||||
{
|
{
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
onewire_write(pin, 0x55, 0); // Choose ROM
|
onewire_write(pin, 0x55, 1); // Choose ROM
|
||||||
|
|
||||||
for (i = 0; i < 8; i++) onewire_write(pin, rom[i], 0);
|
for (i = 0; i < 8; i++) onewire_write(pin, rom[i], 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -230,13 +227,13 @@ void onewire_select(uint8_t pin, const uint8_t rom[8])
|
||||||
//
|
//
|
||||||
void onewire_skip(uint8_t pin)
|
void onewire_skip(uint8_t pin)
|
||||||
{
|
{
|
||||||
onewire_write(pin, 0xCC, 0); // Skip ROM
|
onewire_write(pin, 0xCC, 1); // Skip ROM
|
||||||
}
|
}
|
||||||
|
|
||||||
void onewire_depower(uint8_t pin)
|
void onewire_depower(uint8_t pin)
|
||||||
{
|
{
|
||||||
noInterrupts();
|
noInterrupts();
|
||||||
DIRECT_MODE_INPUT(pin);
|
platform_gpio_mode(pin, PLATFORM_GPIO_INPUT, PLATFORM_GPIO_FLOAT);
|
||||||
interrupts();
|
interrupts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -319,7 +316,7 @@ uint8_t onewire_search(uint8_t pin, uint8_t *newAddr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// issue the search command
|
// issue the search command
|
||||||
onewire_write(pin, 0xF0, 0);
|
onewire_write(pin, 0xF0, 1);
|
||||||
|
|
||||||
// loop to do the search
|
// loop to do the search
|
||||||
do
|
do
|
||||||
|
|
Loading…
Reference in New Issue