'##################### '# MAX6953 i2c Driver '# Written by: Jeremy Melton (www.jeremymelton.com/blog) '# Most source ported from http://user.chol.com/~ascbbs/ccscdrv2/max6953.c '##################### CON _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 VAR long config_byte long device_address long tempd OBJ 'give the serialdriver object wich is defined in the file "FullDuplexSerial.SPIN" 'the name "SerialCon" i : "i2c" PUB Init(SDL,SDA) i.init(SDA,SDL,false)'15,14 config_byte:=$00 device_address:=$00 PUB SetDeviceAddress(addr) device_address:=addr+$50 PUB Shutdown(state, commit) if(state) config_byte &= $FE else config_byte |= $01 if(commit) WriteConfigRegister(config_byte) PUB DisplayTest(state) i.Start Write(GetDeviceAddr) Write($07) if(state) Write($01) else Write($00) i.Stop PUB SetIntensityAll(val) 'verify this works... i.Start Write(GetDeviceAddr) Write($01) Write(val|(val<<4)) Write(val|(val<<4)) i.Stop PUB ClearDigits WriteConfigRegister(config_byte|$20) PUB WriteChar(char) i.Start Write($A0) Write(GetDeviceAddr) Write(char) i.Stop PUB WriteInvertedChar(char) WriteChar(char|$80) PUB WriteConfigRegister(confbyte) i.Start Write(GetDeviceAddr) Write($04) Write(confbyte) i.Stop PUB WriteData(addr,data) i.Start Write(GetDeviceAddr) Write(addr) Write(data) i.Stop PRI GetDeviceAddr : retAddr return (device_address << 1) & $FE PRI Write(i2cData) : ackbit return i.i2cWrite(i2cData,8)