MarkusLange / OneWireSlave

38 stars 9 forks source link

No presence every second request #9

Open Kabron287 opened 5 years ago

Kabron287 commented 5 years ago

I reduced DS18B20_Slave_Interrupt_T3 as much as possible: void setup() { Serial.begin(115200); Serial.println("Start"); pinMode(tstpin, OUTPUT); ds.init(rom); ds.setScratchpad(scratchpad); ds.setPower(PARASITE); ds.setResolution(9); attachInterrupt(12, DS18B20p, CHANGE); } void loop() { ds.waitForRequest(true); } void DS18B20p() { previousmicros = micros(); difference = previousmicros - old_previousmicros; if (difference >= 380 && difference <= 800) { //on Leonardo // if (difference >= 325 && difference <= 500) { ds.waitForRequestInterrupt(false); } }

Exactly every second request results in NO PRESENCE:

Start packet transmitting RESET PRESENCE No address selected 33 (READ ROM) Packet transmitted successfully Reading byte(s) 28 48 A0 AE 08 00 00 60 Done Start packet transmitting RESET **NO PRESENCE** Start packet transmitting RESET PRESENCE No address selected 33 (READ ROM) Packet transmitted successfully Reading byte(s) 28 48 A0 AE 08 00 00 60 Done Start packet transmitting RESET **NO PRESENCE**

I also could see in oscillosope the absence of the presence pulse every second request.

MarkusLange commented 5 years ago

This Lib is outdated please use the advantage Version from orgua https://github.com/orgua/OneWireHub

Kabron287 commented 5 years ago

Yes, I already switched to OneWireHub. it works OK.