Good morning, this is my first ever post since joining a few years ago. This forum has provided me with such useful information in programming my Picaxe and really appreciate its helpful contributors.
I need to say up front that I am not proficient at programming, as I am an early 60's starter with programming "anything", but I get by and get much enjoyment from the small projects I do. (Some abbreviations and terminology goes right over my head )
I am desperate for some clarification using the MAX7219 8x8 led matrix, I have read many posts on here and learned a lot, I have also searched the WWW and cannot get what I actually need. My problem is that when using a pre-made cascade of 4 matrix units. I can scroll displays along easily enough, but I have a problem with adding a new display to an individual 8x8 matrix.
For example if I successfully position say, a square of leds in matrix 3, then whatever I place in Matrix one, it will shift matrix 3 across to matrix 4. Also if I send empty data it all scrolls across obviously.
Eg. If I want to put the square in section 3 only, without pausing the programme permanently, any next operation I do I would need to send no data, square, no data, no data again, and no matter how fast this happens you will still see remnants of the square moving to the given point if I were to loop this operation.
I have quoted a post below from 2011 by contributor MartinM57 (to whom I owe a big thank you) which illustrates my problem.
The problem I have is how to **actually write** the no-op.
Quote "to write to the second, send Address, Data, No-Op, No-Op"
I know the no-op is $x0. I have tried writing it in at all the points without success, that makes sense to me in my program.
I would be really grateful if somebody could give me an actual example of how it would be written in its most basic form as would work in my attached program.
I have attached the modified program from another persons work which illustrates my problem when you run it. (It is one led as opposed to a square)
Thank you for your time with this, it is much appreciated. Mike.
Quoted text:
"Can you get one MAX7219 to work correctly?
Connect DOUT of the first MAX7219 to DIN of the second MAX7219 as shown in the datasheet.
Then to write to both MAX7219 then just send two sets of address/data values - the first set you send will initially go to the first MAX7219 - the second set will also go to the first MAX7219, but will cause the first MAX7219 to send what it had out of DOUT into DIN of the second.
To write to only one of them you have to use the No-Op register (register code x0)...
...to write to the first, send No-Op, No-Op, Address, Data (the No-Ops end up in the second one (so nothing changes in it), the data ends up in the first one)
...to write to the second, send Address, Data, No-Op, No-Op (the data ends up in the second one, the No-Ops end up in the first one (so nothing changes in it))
It sounds a bit confusing, but it does work
Last edited: Feb 16, 2011"
I need to say up front that I am not proficient at programming, as I am an early 60's starter with programming "anything", but I get by and get much enjoyment from the small projects I do. (Some abbreviations and terminology goes right over my head )
I am desperate for some clarification using the MAX7219 8x8 led matrix, I have read many posts on here and learned a lot, I have also searched the WWW and cannot get what I actually need. My problem is that when using a pre-made cascade of 4 matrix units. I can scroll displays along easily enough, but I have a problem with adding a new display to an individual 8x8 matrix.
For example if I successfully position say, a square of leds in matrix 3, then whatever I place in Matrix one, it will shift matrix 3 across to matrix 4. Also if I send empty data it all scrolls across obviously.
Eg. If I want to put the square in section 3 only, without pausing the programme permanently, any next operation I do I would need to send no data, square, no data, no data again, and no matter how fast this happens you will still see remnants of the square moving to the given point if I were to loop this operation.
I have quoted a post below from 2011 by contributor MartinM57 (to whom I owe a big thank you) which illustrates my problem.
The problem I have is how to **actually write** the no-op.
Quote "to write to the second, send Address, Data, No-Op, No-Op"
I know the no-op is $x0. I have tried writing it in at all the points without success, that makes sense to me in my program.
I would be really grateful if somebody could give me an actual example of how it would be written in its most basic form as would work in my attached program.
I have attached the modified program from another persons work which illustrates my problem when you run it. (It is one led as opposed to a square)
Thank you for your time with this, it is much appreciated. Mike.
Quoted text:
"Can you get one MAX7219 to work correctly?
Connect DOUT of the first MAX7219 to DIN of the second MAX7219 as shown in the datasheet.
Then to write to both MAX7219 then just send two sets of address/data values - the first set you send will initially go to the first MAX7219 - the second set will also go to the first MAX7219, but will cause the first MAX7219 to send what it had out of DOUT into DIN of the second.
To write to only one of them you have to use the No-Op register (register code x0)...
...to write to the first, send No-Op, No-Op, Address, Data (the No-Ops end up in the second one (so nothing changes in it), the data ends up in the first one)
...to write to the second, send Address, Data, No-Op, No-Op (the data ends up in the second one, the No-Ops end up in the first one (so nothing changes in it))
It sounds a bit confusing, but it does work
Last edited: Feb 16, 2011"
Attachments
-
1.9 KB Views: 11