10x Speed Up after receiving an I2C Event()?
first off, have gleaned , learned forum on years lurking , searching. thank all!
i have ran don't understand , can't seem find answer too, maybe searching wrong tags or phrases.
arduino v1.05 ide, using ledcontrol.h & wire.h
i sending i2c event master 328p uno r3. slave arduino uno r3 receives i2c event fine, calls receiveevent(int eventcode); then..
calls alarm(); fine well. alarm(); simple routine blink set of leds in pattern of 6 times, 1 second on, .5 second off.
however execution speed increases dramatically or @ least appears so, code being called within receiveevent.
delay(1000); = has speed of approximately 100ms, have increase delay(10000); equal 1000ms of wall clock time.
delay(500); = has speed of approximately 50ms. have increase delay(5000); equal 500ms
if call alarm(); outside of receiveevent(int eventcode);, becomes delay(10000); equal 10000ms of wall clock time.
i've tested putting alarm(); test code in front of
it's receiving of i2c event, removes avr background interrupts or effect. i've never seen arduino code run fast.
any thoughts, or ideas on missed?
i have ran don't understand , can't seem find answer too, maybe searching wrong tags or phrases.
arduino v1.05 ide, using ledcontrol.h & wire.h
i sending i2c event master 328p uno r3. slave arduino uno r3 receives i2c event fine, calls receiveevent(int eventcode); then..
calls alarm(); fine well. alarm(); simple routine blink set of leds in pattern of 6 times, 1 second on, .5 second off.
however execution speed increases dramatically or @ least appears so, code being called within receiveevent.
delay(1000); = has speed of approximately 100ms, have increase delay(10000); equal 1000ms of wall clock time.
delay(500); = has speed of approximately 50ms. have increase delay(5000); equal 500ms
if call alarm(); outside of receiveevent(int eventcode);, becomes delay(10000); equal 10000ms of wall clock time.
i've tested putting alarm(); test code in front of
code: [select]
switch wire.read()) {
, , still ~10x fasterit's receiving of i2c event, removes avr background interrupts or effect. i've never seen arduino code run fast.
any thoughts, or ideas on missed?
code: [select]
void receiveevent(int eventcode) {
//alarm(); - yep still fast.
switch (wire.read()) {
case 2:
ledoff();
break;
case 3:
alarm();
delay(5000);
break;
case 9:
//message();
//alarm();
break;
case 10:
//dancemode();
break;
case 11:
//systemfailure1();
//delay(5000);
break;
case 12:
alarm();
systemfailure2();
delay(5000);
break;
case 13:
alarm();
delay(5000);
// cantina();
break;
default:
// if nothing else matches, default
// going nothing... matter not waste time
break;
}
}
void alarm(){
if (logicsi2cadapter==1){
// bunch of code here for...
}
if (logicsi2cadapter==2){
if (psislide==false){
lc2.cleardisplay(0);
lc2.cleardisplay(1);
for (int cnt=0; cnt<6; cnt++){
// int pcols=b11000000;
for (int row=0; row<4; row++)
lc2.setrow(fpsidev,row,b00110000);
delay(10000);// when called i2c event... delays 10x faster gets me second
for (int row=0; row<4; row++)
lc2.setrow(fpsidev,row,b00000000);
delay(5000);// when called i2c event... delays 10x faster gets me half second
}
}
if (psislide==true){
lc2.cleardisplay(0);
lc2.cleardisplay(1);
for (int cnt=0; cnt<6; cnt++){
lc2.setrow(fpsidev,0,b01010000);
lc2.setrow(fpsidev,1,b10100000);
lc2.setrow(fpsidev,2,b01010000);
lc2.setrow(fpsidev,3,b10100000);
delay(10000);// when called i2c event... delays 10x faster gets me second
for (int row=0; row<4; row++)
lc2.setrow(fpsidev,row,b00000000);
delay(5000);// when called i2c event... delays 10x faster gets me half second
}
}
}
if (logicsi2cadapter==3){
//code here
}
}
quote
or ideas on missed?
the rest of code.
Arduino Forum > Using Arduino > Programming Questions > 10x Speed Up after receiving an I2C Event()?
arduino
Comments
Post a Comment