Quote Originally Posted by tumbleweed View Post
Instead of just setting a flag, keep a copy of the last thing written to the PCA and only call the sub if it's different from CH1_PWM

Code:
If Counter1 => CH1_on_Time and counter1 < CH1_off_time then                     ' check to see if the time in minutes since midnight matches the Channel on time
CH1_PWM  = fadeset1                                                             ' and of so set the PWM value (0 to 4095) to match the fadeset value (also 0 - 4095)
endif                                                                           
If Counter1 => CH1_off_Time or Counter1 < CH1_on_time then                      ' check to see if the time in minutes since midnight matches the channel off time
CH1_PWM  =0                                                                     ' and if it does, then set the PWM value to 0, this turning the channel off
endif
...
' check to see if CH1_PWM is different from last programmed value
if (CH1_PWM <> PCA_PWM) then
    gosub SetPCA
endif



SetPCA:
    PCA_PWM = CH1_PWM
    pcaChannel = 0                                            
    i2cControl = $6 + 4*pcaChannel                            
    I2CWRITE SDApin,SCLpin,i2cWriteAddress,i2cControl,[0,0,PCA_PWM.lowbyte,PCA_PWM.highbyte]
    return
thanks, that seems logical as the only change will be if the ON or OFF condition is met. Thanks, I'll give that a try