-
Thr 2019.12.19
'is there a way to loop on a init phase 'til it works? (a loop on the "try catch")?'
Hello @Mrbbp, would you be so kind as to upload the output for the above snippet? Although L1,L2,L3 and L13 are not adding any value here, (as I2C is not setup by L2, an immediate error should be thrown - maybe the intention of the outer try/catch?) the output should fill multiple "try again" messages with two bytes placed on the I2C bus each 100msec, unless/until an error is detected, in which case "does not init < error msg detail here >" should display.
Effectively, you have the looping mechanism you are after. 100msec may be too fast for the left hand console panel of the WebIDE to keep up though.
Any additional detail in the WebIDE console output?
WebIDE >> Settings >> Console
-
@Robin
i give you more off my onInit()const onInit = function() { clearInterval(); clearWatch(); pinMode(B6, 'opendrain'); pinMode(B7, 'opendrain'); require("Font4x6").add(Graphics); /* rajouter les init de connexion pour le display */ // initialisation I2C I2C1.setup({scl: B6,sda: B7}); // rouge try { I2C1.writeTo(0x70, 0x21); // turn on oscillator } catch(e) { I2C1.setup({scl: B6,sda: B7}); setTimeout(function() { console.log("try again"); try { I2C1.writeTo(0x70, 0x21); // turn on oscillator } catch(e) { console.log("does not init",e); } }, 500); } console.log("init I2C"); // init suite I2C I2C1.writeTo(0x70, 0x81); // display on I2C1.writeTo(0x70, 0xE0 | 0); // luminosité 0-15 digitalPulse(LED2,1,20); setTimeout(envoieMatrice, 2000); };
and the output.
It does not loop
it try once as in the code
if i well understand, it fail on the first communicationinit I2C Uncaught InternalError: Timeout on I2C Write BUSY at line 1 col 541 ... I2C'),I2C1.writeTo(112,129),I2C1.writeTo(112,224),digitalPu... ^ in function called from system try again does not init InternalError: InternalError: Timeout on I2C Write BUSY >
On an arduino there is no pullup resistor to add to circuit.
i tested with an other backpack, same result.
some time it works, sometime not.
i tried with a try catch and resend a I2C.setup() (read it in the forum) in the resend with no more result.
other idea?
is there a way to loop on a init phase 'til it works? (a loop on the "try catch")?