MAX6953 and Prop communication
Peppe316
Posts: 3
Cliffnotes:
1. Can the max 6953 be used with a "DIY" matrix?
2. Are there any better options to control a "DIY" matrix?
3. Am I on the right track with the code below (any obvious problems with it)?
I've got a MAx6953 [noparse][url=http://datasheets.maxim-ic.com/en/ds/MAX6953.pdf]Datasheet[/url hooked up to the prop. My goal is to create a scoreboard out of leds (aprox. 8000 leds involved). I've ported some arduino/I2C code over for my application to get this thing to work (Code below). However, no matter what I do I can't get it to work. The max chip is a 5x7 led controller...now does this mean I have to buy a LED matrix like this [noparse]/noparse][url=http://www.futurlec.com/LEDMatrix.shtml]LINK[/url to make it work? Up to now I've never seen anyone using a "DIY" matrix. I've made my own matrix following the schematic on the max datasheet.
Here's the code I've ported over from this post [noparse]/noparse][url=http://www.electro-tech-online.com/micro-controllers/85018-max6953-input.html]LINK[/url
I've been racking my brains on this for the last couple of weeks reading/learning everything I possibly can. Posting here is my last resort. I realize what I'm asking is a fairly big task but I hope someone might be able to lend some more options.
1. Can the max 6953 be used with a "DIY" matrix?
2. Are there any better options to control a "DIY" matrix?
3. Am I on the right track with the code below (any obvious problems with it)?
I've got a MAx6953 [noparse][url=http://datasheets.maxim-ic.com/en/ds/MAX6953.pdf]Datasheet[/url hooked up to the prop. My goal is to create a scoreboard out of leds (aprox. 8000 leds involved). I've ported some arduino/I2C code over for my application to get this thing to work (Code below). However, no matter what I do I can't get it to work. The max chip is a 5x7 led controller...now does this mean I have to buy a LED matrix like this [noparse]/noparse][url=http://www.futurlec.com/LEDMatrix.shtml]LINK[/url to make it work? Up to now I've never seen anyone using a "DIY" matrix. I've made my own matrix following the schematic on the max datasheet.
Here's the code I've ported over from this post [noparse]/noparse][url=http://www.electro-tech-online.com/micro-controllers/85018-max6953-input.html]LINK[/url
CON _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 VAR long config_byte long device_address long tempd OBJ i : "i2c" s : "FullDuplexSerialPlus" PUB Main config_byte:=$00 if(i.init(15,14,false)) ' turn on a led when I2C is initialized dira[noparse][[/noparse]17]:=1 outa[noparse][[/noparse]17]:=1 SetDeviceAddr($00) Shutdown(false,true)'disable shutdown mode SetIntensity(15) 'set intensity to the highest DisplayTest(true) ' Turn on all leds repeat ' debug led just to make sure it's working/running dira[noparse][[/noparse]16]:=1 outa[noparse][[/noparse]16]:=1 PUB SetDeviceAddr(addr) addr += $50 'MAX6953 addresses take the form 101xxxx device_address := addr 'where xxxx is the user-selected address 0-15 PUB DisplayTest(state) 'Put the display in test mode. Will illuminate all LEDs if state=TRUE 'Does not affect plane data - original display is restored when set FALSE i.i2cStart i.i2cWrite(GetAddr,8) i.i2cWrite($07,8) if(state) i.i2cWrite($01,8) else i.i2cWrite($00,8) i.Stop PUB Shutdown(state, wrt) 'Put the display into/out low power 'shutdown' mode if(state) config_byte:=config_byte &= $FE else config_byte:= config_byte |= $01 if(wrt) WriteConfigRegister(config_byte) PUB WriteConfigRegister(reg) i.Start i.i2cWrite(GetAddr,8) i.i2cWrite($04,8) i.i2cWrite(config_byte,8) i.Stop PUB GetAddr : myaddr 'device_address:= (device_address <<1) & $FE 'return device_address return (device_address <<1) & $FE PUB SetIntensity(inten) ' Set the display intensity from 0-15 tempd := inten<<4 ' set the most significant nybble inten|=tempd i.Start i.i2cWrite(GetAddr,8) i.i2cWrite($01,8) ' first intensity register i.i2cWrite(inten,8) i.i2cWrite(inten,8) ' register addr autoincrements, so write second reg i.Stop
I've been racking my brains on this for the last couple of weeks reading/learning everything I possibly can. Posting here is my last resort. I realize what I'm asking is a fairly big task but I hope someone might be able to lend some more options.
Comments
in fact it is a big task.
by googling I found this c-code
max6953.c
and did you take a look into the sourcecode of a
demoprogram downloadable here ?
Did you experimentate with the device-adress hardocded testing through 0-15 with and without & FE
But now I have a second, kind of similar question. The max chip will only drive LEDs with a· forward voltage of 1.3. For the LEDs I'm using to test this will work fine. But the LEDs I will be using have a forward voltage of 3.2-3.4. Any ideas on what I can do to increase the voltage to the LEDs and not kill the max chip? The max input voltage on the chip is 5V to drive the LEDs with a 1.3V.· At least that's the way I've interpreted this:
As I'm sure you've noticed I'm a electronics noob and I'm taking quite a big jump for a first project. All I really·need is a point in the right direction and I can usually find what I need via google.
Post Edited (Peppe316) : 1/9/2009 3:31:26 AM GMT
I'm getting some awfully bad blinking happening even if I explicitly turn of 'blink' mode. Along with that the top row stays fully lit through the whole sequence.· Throughout both runs the max chip is recieving 4.9V. Any ideas on what might be going on here?
http://www.youtube.com/watch?v=zT78AOTIewY·(Full run from A-Z)
http://www.youtube.com/watch?v=1mpUUDpczdw·(with display test on in the beginning)
Code used for the tests:
to increase the output-voltage you can use transistors. As you have really a lot outputlines transistorarrays woud be suitable.
It depends on the current which type of transistorarray would be suitable.
From just a quick look at the schematics I'm unsure about the exact design. As a quick guess (that might be wrong)
There are 5 columms to which the ANODEs of the LEDs are connected.
It might be enough to use transistors on the columms and keep the Kathodes on the rows connected directly to the MAX-chip.
The rows seemed to be on ground if the LED is switched on.
Measure the voltage between ground and a columm-output when the related LED is switched ON
If you are able to switch on some of the LEDs stable. (ON steady for some minutes)
If this voltages is very near to ground (some Millivolts) this should work
best regards
Stefan