AS1130 First attempt - working

I asked you some questions in my last post hexadec

That's right...you did. Trouble is (for you) that it isn't one of my life's priorities to answer your questions immediately...

So of what was funkyguy4000 talking there?

Don't know (and don't really care) why don't you ask HIM.

But would the circuit also work if I use four Sync_In Pins and let them work with their own oscillator that they are independant of the other devices clock?

You STILL haven't looked at what sync is/does...
If you want the chips to work independantly then don't use sync...if you want them synchronised then use sync. Not rocket science is it?

Now go away, learn some politenness and manners - then come back.

I know this isn't strictly Arduino, but here's a video of where I'm up to and what's possible with this chip.

I'm now uploading the page data to the AS1130 through the MCU (could easily be an AVR :grin:) from the PC.
The PC app takes data produced in a spreadsheet, converts it to binary format and uploads it to the external eeprom on the PIC board.
It then gets uploaded to the AS1130 as 36 frame pages. At the moment I'm using 10 x 36 frame pages (which will fit easily onto an AtMega328).

If anyone wants the source code for the PIC or the PC app. just ask.

I WILL be porting the code for the Arduino...but time is at a premium unfortunately :frowning:

I'm really sorry Hexadec

No problems mate...I was feeling a bit grumpy that day. :grin:

It's best to think of the AS1130 as a completely separate entity which can receive data and instructions at 1Mhz over the I2C bus.

Once you have set up the AS1130 by sending instructions and the frame data and telling it to start, it will display the frames one by one at whatever rate you told it to.
It will do this forever without any more communication with whatever is sending instructions to it.

The fastest time between frames is 32.5mS which is about 31 frames per second - the slowest is 487.5mS which is about 2 per second. (see Table 17 frame_delay)

While the AS1130 is displaying the frames you can upload another set of frames and it will display them. (It displays whatever is in it's eeprom 1 frame at a time)

Now think of the microcontroller as a seperate entity.

It can send instructions over I2C and stream data as fast as the receiver connected to it can process it.
It has eeprom memory that can hold binary arrays (in this case our frame data) until it is full.
It can communicate and exchange data with an external eeprom and send that data out over I2C.

Now put them together...

MCU sends instructions and frame data to AS1130 and tells it to start.
AS1130 displays the frames on it's own and ignores the MCU.
MCU gets another 36 frames of data either from its own eeprom, an external eeprom, the serial bus or anywhere else that can be connected to it.
All this time the AS1130 is happily displaying the frames...
MCU sends new frame data to AS1130.

The cycle continues until the power goes down. :grin:

Don't forget you can also send instructions to the AS1130 while its running as can be seen in the video.

The speed that the frames are displayed is constrained to one of 15 different speeds set in the Frame Time/Scroll register and has nothing to do with the clock speed the I2C bus speed or the MCU speed.

Hope that is now clear.... 8)

binarygod:
@funkyguy4000 :

Of what were you talking there about that library?

I was speaking of the Wire library that Arduino uses. I'm not sure if the ATmega128 that you are hoping to use will work with it, my advice would just to try it out and see what happens. I see no reason why it wouldn't work but also I wouldn't stand by that statement. Just do some experimentation to see if it works. If it does, could you kindly let us know?

You'll have to go to the libraries folder of the arduino ide program and open it up in some sort of C programming environment

libraries\Wire


Rob

Well spotted.... :grin:

When I was first looking at this chip I read somewhere that the sync line was open drain which I don't like to leave floating. (it isn't)

So, yes it's a mistake. =(

As stated earlier in the thread, it doesn't matter if the sync is up, down or indifferent unless you are using it. :slight_smile:

I don't think it will make any difference...I just have loads of electrolytics :grin:

I haven't done anything yet with 2 screens, so I don't know.

I would guess that you should sync the two displays then use an interrupt to control the scroll time.

If I were you...I wouldn't complicate the issue by doing this yet...I would get a firm understanding of using ONE chip and ONE screen before you go further. :smiley:

not stupid at all....

I just used cheap ordinary 2V, 20mA red.

Nooooooo......all the VDD pins are connected internally...you just need ONE 10uF cap for each seperate AS1130.

The 4K7 on all pins should be fine.

On the first board I made I connected all the VDDs and VSSs together...what a waste of time... :blush: :smiley:

On the board I'm using for all the demos...pin 3 is connected to VDD and pin 1 to VSS, the cap is connected to both of them.

If you do a continuity test with a meter, you'll find the VDD pins are all connected together, as are the VSS.

WAIT!
So you are saying I can choose which Gnd pin and which Vcc pin to use? I don't need to connect all of them?

Yep! :stuck_out_tongue_closed_eyes: :grin:

AWWWWWW I wish I knew that earlier

They won't be floating...they are connected internally. :stuck_out_tongue:

Don't forget that the LEDs are being fed by a variable duty cycle.

I am using a 3.3V regulator fed from the 5V USB port (like on the Arduino) and the maximum current drawn by the AS1130 when all LEDS are on and at maximum brightness is about 245mA but this is only for a maximum 500mS as it then switches to the next frame.

I would allow 500mA per 11x12 panel..that should be more than enough (unless you have other stuff connected)

Are you a student by any chance? :grin:

Look up Ohms law and read the datasheet.

Read about PWM duty cycles.

]:smiley:

:grin:

when the CURRENTSOURCE Register is 0xFF then every single led gets 30mA, so 132 x 30mA = 3,96mA no?

Ahhh but if you read the datasheet the LEDs are crossplexed and the scanning only turns on 1 Current Source at a time...

My board (as I said) draws 245mA when full on and it draws that for 487.5mS or a MAXIMUM of 500mS (it could be 32.5mS too but THAT would be the minimum time)

THIS problem with the current is the last thing I have to know to build the circuit finally...

You are right to consider all angles before embarking on a design and building the prototype....but the datasheet gives all this information and you can trust it!
OR
You can trust the fact that I have one working and I have shared the information.

If you consider that 11 x 20mA LEDs draw 220mA when full on and you have 3 boards then 3 x 220 = 660mA
Then you must add some for the chips themselves plus leakage, losses, blah blah blah....

I would design for a 1.5A supply to drive 3 boards and a MCU etc.

Now it's time to get the soldering iron out.... :stuck_out_tongue:

I'm really sorry that I'm still discussing with you

I don't have a problem with that...as long as you are prepared to put in the effort to understand.... :grin:

What do you mean with '1 Current Source'?

There are 12 Current Sources CS0 - CS11.

Try to forget about crossplexing and charlieplexing for a moment and think about how a matrix of LEDs is scanned.
Here is a good explanation of how it works: http://www.franksworkshop.com.au/Electronics/RGB/RGB.htm

This means that it is only possible for there to be 11 LEDs on at any one time. (in this case)
Then... we take into account that each LED is also PWM driven (you can look that one up yourself :P)

But in your first programm the current source register is 0xFF so 30mA per Led, and then you have 330mA and not 235?

The current source register is not setting the amount of current drawn by each LED it is setting the maximum possible current that CAN be drawn (allowing dimming of the display)
The amount of current drawn is determined by the circuit characteristics but is LIMITED to a MAXIMUM of 30mA by the CS Register.

But if the Current Source Register is 0xFF then all the LEDs together draw 11x30mA so 330mA and that three times (three screens) so 990mA!

Wrong!

Isn't there any solution to have max. 500mA for the three screens together?

Yes.
The obvious way is to use LEDs that draw less current....if you can find them.
OR easier
Limit the current in the Current Source Register to 15mA (0x0F) but you'll have to make sure in software that this doesn't change.