Sterrenhemel

Dit topic is gesloten

Arco

Special Member

Geen te dunne kabel gebruikt?
Als je modulaire 8 aderige kabel gebruikt, zou ik 4 aders voor Gnd gebruiken...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ik denk een combinatie van voedings en lange kabels.
Eventueel spanning meten op diverse punten.

Meten=Weten. Weet wat je meet.
Bavelt

Golden Member

Ik heb de standaard UTP kabel gebruikt. Daar zitten 8 aders in.
Omdat ik maar 5 pinnen nodig heb, gebruik ik alleen de volle kleuren, op de VCC na. De VCC en GND zijn de 'twisted pair'.

De voedingsspanning heb ik net gemeten, 4,94 V rechtstreeks op het Max_IC van het laatste paneel. Het spul gebruikt in principe maar heel weinig stroom. Als je de voeding nl uitzet doet hij het op de opgeladen Elco zelfs nog even...

De CLK en CS trekken al helemaal niks aan stroom lijkt me.

Ik heb even gedacht dat het wellicht weer te maken had met mijn eerdere problemen rond combinatie SPI en software_I2C.
Deze even geëlimineerd maar dat was het (gelukkig) niet.
Zou ook raar zijn, het werkt nl wel op de Matrix Led unit (8 keer 8*8 leds).

Wel jammer, ik was zo ver. Programma werkt, (op de LED-matrixjes), veel werk gestoken in de panelen met hun 512 Ledjes. Goede connectoren gebruikt en nu een knipperend resultaat van onwillige panelen...
;(

Er móet gewoon iets zijn waardoor mijn panelen afwijken en zich anders gedragen dan de Led-Matrix Unit (Waar dezelfde componenten etc op zitten)...

Maar waarom dat pas na 3e / 4e paneel is?

:?

Fouten zijn het bewijs dat je het probeert..

Thread over hetzelfde probleem, met een aantal dingen die je ook zou kunnen proberen:

https://forum.allaboutcircuits.com/threads/long-chain-of-max7219-matri…

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.
marcob

Golden Member

Hoe lang zijn je kabels?
Heb je een scoop, is je clock Signal nog wel gped?

Dit staat in de datasheet met cascading meerdere MAX7219 chips:

The no-op register is used when cascading MAX7219s or MAX7221s. Connect all devices’ LOAD/CS inputs together and connect DOUT to DIN on adjacent devices. DOUT is a CMOS logic-level output that easily drives DIN of successively cascaded parts. (Refer to the Serial Addressing Modes section for detailed information on serial input/output timing.) For example, if four MAX7219s are cascaded, then to write to the fourth chip, sent the desired 16-bit word, followed by three no-op codes (hex 0xXX0X, see Table 2). When LOAD/CS goes high, data is latched in all devices. The first three chips receive no-op commands, and the fourth receives the intended data

People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Bavelt

Golden Member

Op 5 februari 2021 14:33:27 schreef Roland van Leusden:
Thread over hetzelfde probleem, met een aantal dingen die je ook zou kunnen proberen:

https://forum.allaboutcircuits.com/threads/long-chain-of-max7219-matri…

Een mooie post!

Ik heb die thread met veel belangstelling gelezen. Die TS had inderdaad exact het probleem dat ik ook heb.
Na 4 chips ging het mis.

Na vele pogingen en testen kwam hij tot de oplossing om in de CS en CLK lijn een weerstand van 2K op te nemen, bij iedere module. Dat hielp hem.

Maar wat ik ook lees is dat het gebruik van MAX7219 in een keten nou niet echt een fijn werkbare oplossing is..
Groot probleem is dat kleine verstoringen op de - met name - CS lijn het onvoorspelbare gedrag veroorzaken. (er komt dan een extra 'latch').

Die weerstanden op de moduultjes aanbrengen; tja, dat wordt dan demonteren en sporen doorkrassen. ;( Zal het er niet fraaier op maken (of ik moet zelf nieuwe Max printjes maken).

Een alternatied kan zijn om een chip te gebruiken die met I2C werkt ipv SPI (de MAX7219 schijnt volgens die TS / reageerders geen "echte" SPI te zijn).

Maar misschien moet ik een andere oplossing kiezen: om voor iedere 2 Matrixen een eigen CPU te gebruiken en niet 'door te lussen'.
Maar dat vergt dan weer de nodige afstamming tussen de uC's..Dat zouden er 4 worden.

Lastig allemaal en ik weet niet goed wat ik nu moet gaan doen...

Fouten zijn het bewijs dat je het probeert..

Die weerstanden op de moduultjes aanbrengen; tja, dat wordt dan demonteren en sporen doorkrassen.

Lijkt me de snelste oplossing, als het een keer gemonteerd zit zie je die modules ook niet meer terug.

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.
Arco

Special Member

Wat ik ergens heb gezien is dat een serieweerstand in de clock en datalijn van 100 Ohm dichtbij de processor helpt...
Je zou ook een klein c'tje van de /CS naar Gnd kunnen proberen. De /CS blijft toch wel laag gedurende de hele write zonder onderbrekingen?

Je kunt ook een /CS per chip gebruiken, maar da's meer kabelwerk en pinnen... ;)
Het is met Daisy-chaining ook wel zo dat de klok met iedere extra 7219 verder achter voor gaat lopen op de data, maar met langzame SPI zou dat geen probleem mogen geven.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Ik ga deze dingen maar eens proberen. Zou het volstaan om eerst bv paneel 4 van die weerstanden te voorzien, of werkt het pas als ALLE modules zijn voorzien van een dergelijke weerstand?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Alleen op de processorprint...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Bavelt

Golden Member

Heb je een scoop, is je clock Signal nog wel gped?

De clock ziet er aan het begin nog wel rechthoekig uit. Bij het laatste (niet-werkende) paneel is het zo:

Frequency = 250.000 Hz

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

De clock kan niet blokvormig zijn aan de ene kant en een zaagtand aan de andere kant op 5m kabel... (dat is onmogelijk)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
bprosman

Golden Member

Maar misschien moet ik een andere oplossing kiezen: om voor iedere 2 Matrixen een eigen CPU te gebruiken en niet 'door te lussen'.
Maar dat vergt dan weer de nodige afstamming tussen de uC's..Dat zouden er 4 worden.

Ik zou zelfs iedere matrix een eigen (kleine) CPU geven en ze met een RS485 netwerkje aan elkaar knopen.
Dan kunnen ze ook met elkaar communiceren.

Het is met Daisy-chaining ook wel zo dat de klok met iedere extra 7219 verder achter gaat lopen op[ de data, maar met langzame SPI zou dat geen probleem mogen geven.

"Clock slip" heeft ons in het Token-ring tijdperk heel wat hoofbrekers gekost.

[Bericht gewijzigd door bprosman op vrijdag 5 februari 2021 22:29:16 (26%)

De jongere generatie loopt veel te vaak zijn PIC achterna.
Bavelt

Golden Member

Op 5 februari 2021 22:06:58 schreef Arco:
De clock kan niet blokvormig zijn aan de ene kant en een zaagtand aan de andere kant op 5m kabel... (dat is onmogelijk)

Ik heb een draad getrokken vanaf het breadboard (= start CLK) naar het laatste paneel. Dan zie je dat hij weer keurig 'rechtop' staat.

Het lijkt wel te kunnen (of er is iets anders mis)...

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

De kabellengte is nu 240 cm (4 * 60 cm).

De frequentie is evenwel 500.000 Hz (geen 250.000). Dat klopt ook met de SPI_Init, waar ik de Masterclock / 64 heb.

pic basic code:

SPI2_Init_Advanced(_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH)

De clockfrequentie van de pic staat op 32 Mhz.
Dat klopt dus.

Maar is dat allemaal niet een beetje hoog voor deze toepassing?
temeer, omdat de ververstijd van de Leds ca 5 seconden is..

Zou dat kunnen helpen?

[Bericht gewijzigd door Bavelt op vrijdag 5 februari 2021 22:41:04 (15%)

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Wanneer ik slechts een loze UTP kabel aan de MAX-Output van paneel 3 hang, slaat de zaak al op tilt...

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Ik zou zelfs iedere matrix een eigen (kleine) CPU geven en ze met een RS485 netwerkje aan elkaar knopen.
Dan kunnen ze ook met elkaar communiceren.

Dan zou ik dus ook geen MAX7219 nodig hebben maar de LED's rechtstreeks aansturen vanuit de PIC. 1 Poort voor de rij, 1 voor de kolommen.
Bedoel je dat?

Fouten zijn het bewijs dat je het probeert..
bprosman

Golden Member

Op 5 februari 2021 22:46:02 schreef Bavelt:
[...]

Dan zou ik dus ook geen MAX7219 nodig hebben maar de LED's rechtstreeks aansturen vanuit de PIC. 1 Poort voor de rij, 1 voor de kolommen.
Bedoel je dat?

Dat kan maar word qua programmeren al iets voor gevorderden omdat je EN je matrix EN je communicatie (onder interrupt) moet gaan afhandelen. Ik zou een processor de communcatie laten doen en de matrix "uitbesteden" aan de MAX7219

De jongere generatie loopt veel te vaak zijn PIC achterna.
Bavelt

Golden Member

Op 5 februari 2021 22:06:58 schreef Arco:
De clock kan niet blokvormig zijn aan de ene kant en een zaagtand aan de andere kant op 5m kabel... (dat is onmogelijk)

Dit heb ik al achterhaald: die "zaagtand" meet ik achter de weerstand van ca 2K, die ik tussen de CLK en de chip had gezet.
Bij de ingang is het overal een keurig blokgolf.

Maar ná de weerstand van 2K (1k8), dus aan de chip, wordt er een zaag/driehoek van gemaakt. Dat krijgt de chip dus wel binnen...

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Wat ik ergens heb gezien is dat een serieweerstand in de clock en datalijn van 100 Ohm dichtbij de processor helpt...

Ik heb inmniddels een weerstand van 100 Ohm in de datalijn en clocklijn opgenomen, en een C van 2N2 (Klein genoeg?).

De clockpuls is weer mooi.
Maar...het werkt nog niet. (wellicht ze ook aanbrengen in de eerste 3 matrixen?)

BTW: Kan een logic analyzer me hier ook bij helpen om te kijken wat er allemaal binnenkomt?

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Op 5 februari 2021 22:49:49 schreef bprosman:
[...]

Dat kan maar word qua programmeren al iets voor gevorderden omdat je EN je matrix EN je communicatie (onder interrupt) moet gaan afhandelen. Ik zou een processor de communcatie laten doen en de matrix "uitbesteden" aan de MAX7219

Dus je bedoelt ieder paneel voorzien van een uc én zijn 'eigen' MAX7219?

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Op 5 februari 2021 22:49:49 schreef bprosman:
[...]

Dat kan maar word qua programmeren al iets voor gevorderden omdat je EN je matrix EN je communicatie (onder interrupt) moet gaan afhandelen. Ik zou een processor de communcatie laten doen en de matrix "uitbesteden" aan de MAX7219

Maar het wordt met 8 uc's ook best wel stevig programmeren vrees ik... Als je bedenkt dat de toepassing 512 leds aanstuurt, waarbij er slechts één tegelijk mag veranderen (daar gebruik ik nu de GrayCode voor).

Dan moet er een verkeer tussen de uC's op gang komen die dat regelt. Toch?

Fouten zijn het bewijs dat je het probeert..

Op 5 februari 2021 22:40:04 schreef Bavelt:
De kabellengte is nu 240 cm (4 * 60 cm).

De frequentie is evenwel 500.000 Hz (geen 250.000). Dat klopt ook met de SPI_Init, waar ik de Masterclock / 64 heb.

500kHz is te hoog voor zo'n lange kabel. Probeer eens op 10kHz?

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
Bavelt

Golden Member

Op 5 februari 2021 23:54:49 schreef henri62:
[...] 500kHz is te hoog voor zo'n lange kabel. Probeer eens op 10kHz?

15Khz is het laagst wat ik kan instellen (1.000.000 Hz) / 64.

Maar dat biedt geen soelaas. probleem blijft.

Fouten zijn het bewijs dat je het probeert..
bprosman

Golden Member

Dan moet er een verkeer tussen de uC's op gang komen die dat regelt. Toch

Je kunt ook 1 microcontroller "Master" maken en de panelen alleen slave die naar hun eigen commando's luisteren.
De master stuurt dan bijvoorbeeld :
Paneel01 - Led12 - aan
Paneel07 - Led02 - uit
Ieder paneel ziet die commando's voorbijkomen en voert alleen uit wat voor hem is.

De jongere generatie loopt veel te vaak zijn PIC achterna.

Dit topic is gesloten