Baco Led Matrix

Dit topic is gesloten

Ik ben ook aan het hobbyen.
Heb de TOTX111 eraf gesoldeerd en op een breadbord gezet samen met een PIC16F1825.
De UART van de PIC stuurt de TOTX111.
Dit gekoppeld middels een "glasvezelkabeltje" aan de TORX111 op het ledmatrixbord.
Signaal komt netjes binnen op het ledbord. Er licht echter niets op.
Heb al diverse baudrates geprobeerd en een oplopende reeks data verstuurd..

@zonnepaneeltje

Ik wacht met smart tot ik mijn twee panelen binnenkrijg. Maar om even te helpen, heb je ook het signaal geinverteerd?
Ik zat zelf meer te denken dat de data gewoon bytewise manchester encoded is (wat wel gebruikelijk is met optische interfaces). Ik kan niet wachten om dit proberen te reverse engineeren en uit woede er maar ook een microcontroller op te zetten :P. Zou het liefste het bord ongemodificeerd gebruiken.

Wat gebeurt er als je een blokgolf met een uart snelheid erop zet? Gebeurt er iets? Zie je iets op de serial clock wanneer je karakters er heen stuurt? Vraag me af hoe in het protocol het latchen van de shift registers gebeurt, met een commando? Wat voor optisch snoertje gebruik je? Toslink snoertje voldoende?

[Bericht gewijzigd door Squant op vrijdag 15 maart 2013 23:15:18 (24%)

A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."

Zo hier ook een halve dag met de fds184 bezig geweest in de hoop ergens te komen. Wat ik heb gedaan type ik even hier, misschien dat iemand er wat mee kan of iets in herkent.

Ik ben begonnen met een simpele blokgolf aan te bieden op de cpld simpelweg omdat met een ledje in die opto sensor ook werkt. op ~2,4MHz begon het display te reageren en op dat moment kwam er ook iets uit de optische uitgang. Dat vond ik genoeg op data lijken om een plaatje ervan te maken.
https://dl.dropbox.com/u/17502333/NewFile0.bmp

nagoed dat gaf mij ergens n streef punt om te beginnen met baudrates en na wat loopjes geknutseld te hebben waarbij de baudrate steeds verranderde kwam ik weer bij n punt waar op een moment t hele display in min of meerdere waarde was opgelicht. De baudrate op dat moment was ~4,1M maar nooit heb ik nog een mooi data pakketje op de uitgang gezien.

Goed even een andere kant om bij de baudrate te komen, er worden 2 klokken aangeboden op die cpld, 18,432Mhz en 574KHz. nu geloof ik, maar weet ik niet zeker, dat je sample klok 16 keer hoger moet zijn dan je baudrate. maar daar is waar mijn kennis ophoud en mijn ervaring met cpld's en fpga's me tekort schiet.

Ik heb gewoon maar wat geëxperimenteerd en hopelijk komt iemand met deze info weer op een idee.

@ Jesper: ik krijg soms ook pulsjes uit de seriele uitgang van de CPLD.
18.432 : 8 = 2.3 MHz , zou dit misschien de juiste "baud-rate" kunnen zijn?

@ Squant: ja,ik heb het signaal ook geinverteerd met een BC547.

Er hing bij mij nog een "glasvezelkabeltje" aan :) Hebben ze waarschijnlijk gebruikt om het bord te testen. Dat werkt prima want ik meet weer netjes het UART-signaal op de ingang van de CPLD.
Heb inmiddels ook wat random verticale lijnen te zien gekregen, maar mijn 1Amp-labvoeding stortte in, dat bordje trekt vet veel stroom.

Jouw tip over de Manchester code biedt weer hoop. Maar dit weekend heb ik daar geen tijd voor. Hoop dat iemand anders het oppakt.

Op Jesper zijn scope-plotje zie ik laag-perioden van +/- 0,2 us, en hoog van ongeveer 0,4 us. (als ik de tijdbasis goed zie, 1us/div).

De scope lijkt ook tijden van 420 (hoog?) en 640 (periode?, van eerste tot tweedes stijgende flank?) gemeten te hebben.

Dit alles doet mij vermoeden dat dit signaal uit een flipflop komt die met een klok met 210ns periodetijd is geklokt. 210ns => 4.8Mhz. 18.432/4 = 4.6 MHz => 217ns. Ik vind het close.

Ohja, 4 keer de baudrate is genoeg, dan vallen (bij voldoende stijle flanken) er altijd wel drie klokken in een bit en heeft of hoog, of laag de meerderheid.

@ iedereen,

Denken jullie dat het UART style communicatie is met een start en stop bit? Het baudrate deelbare kristal verraad dat wel, maar zeker weten doe ik het niet. Het kunnen ook gewoon kale bytes zijn met manchester encodering.

Bij de scopetrace van JesperR zie ik dat zo 123 niet, erg lange start bit (mits de output geinverteerd is). Kan zijn dat het bord 2 startbits verwacht, of 1.5?

Bij wijze van test een microcontroller continue uart bytes op de 18.432/4 en 18.432/8 uitspuugd, liefst een makkelijk te herkennen patroon zoals hex 55 en AA, (afwisselend nullen en enen). Dan eens aan de output snuffelen, dan zou je als het goed is start en stop bits kunnen zien mits het standaard uart is, of anders zie je ook heel duidelijk een geklokt patroon ala manchester (je kan bv eens 5A en A5 uitsturen).

Ook een idee is om continue hex 55 uit te sturen en de serieele out te meten, zie je ook hex 55 passeren?

Hopelijk heb ik deze week de bordjes ook binnen en kan ik meedoen, vind het altijd razend interessant van die reverse engineering dingen :).

Als zo naar de baud rates kijk wordt het of dat kristal vervangen om binnen de uart snelheden van een 8bitter te vallen, of echt de sprong maken naar ARM. Of, kristal aanpassen naar 16MHz en dan met een ft232rl en een PC, en dan met een noodvaart data er naartoe sturen, die FTDI's kunnen iets van 2MBit sturen. Misschien in plaats van een PC een klein goedkoop linux routertje zoals een WR703N (18 dollar op ebay).

A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."

Ik van vanochtend een manchester encoder in elkaar geknutseld maar daar kreeg ik wat minder reactie mee op het display. Wat opvallend is dat wanneer ik (uart en machester) AA stuur dat het scherm leeg blijft. Ik heb het idee dat ergens tussen, decimaal, 10 en 20 iets met de rij aansturing gebeurd. maar dat is vanuitgaand dat de snelheid goed is anders blijf het gokken.

Ook bleek het lastiger dan ik verwacht had om manchester op 2,4MHz te krijgen maar het werkte goed. Ik heb bij wijze van testen ook het geïnverteerde ervan geprobeerd maar dat maakte bijna niks uit.

Wat ik ook jammer vind is dat de clpd niks van een buffer bied, dus voor mij moet ik daar al vanaf. Ik heb 10 van die dingen dus dat word praktisch gewoon onhandig met refresh rates. Betekend niet dat ik niet meer probeer, vind t heel leuk om te zien of ik het kan achterhalen.

Mijn -china- ft232 printje haalt amper 1M dus mijn uart komt uit een stm32f4 bordje, gaat ook wat makkelijker met het swepen op baudrate :p

@JesperR,

Hmm, blijkbaar voldoe je dan niet aan de sequentie die het bord verwacht om de lijn weer te geven wat in de schuif registers zit.

roosmcd heeft een stukje uit een manual ge copy paste die spreekt over packets. Dus misschien moet je voldoen aan een of ander packet formaat. Als je bv, garbage erin stuurt, zie je dan ook de spi richting de schuifregisters klokken? Wanneer klokt hij eigenlijk? Heb je een logic analyser waarin je lange traces kan opslaan die getriggerd worden op de latch enable van de schuifregisters?

Heeft die CPLD een doorlusstand of stuurt hij alles door naar de schuif registers en klokt hij alles in naderhand?

Als alles lijn georienteerd gebeurt moet er een soort "synchroniserende sequentie" zijn om de lijn selectie te resetten, je weet bij poweron niet waar die teller mogelijk zou zitten.

Ik vermoed dat de CPLD meer dan alleen de data slicing en doorlussen doet maar wat meer intelligentie bevat.

A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."

manual? wanneer is dat langs gekomen want dat heb ik even gemist. dan mag hij ook wel vertellen welke packets dat precies zijn :)

Op 7 maart 2013 22:50:48 schreef roosmcd:
In die surtronic lichtkranten zaten toch ook FDS-borden? Ik heb hier een pdf-je van een FDS101-bord, die zal zo'n display wel kunnen aansturen. Vermoedelijk zal de optische link hetzelfde zijn:

"The display boards
are driven by means of a fiber optic datalink (Toslink). Other interfaces are optional.

DISPLAY CONTROL CIRCUITRY
The function of the control logic is to send and control the data to the display boards.
This is achieved by sending out ‘packets’ of data, the number of such packets being
equal to the number of rows to be scanned in the display board(s). Each stage involves
the shifting of data to the display board, called burst mode, followed by the showing of
that data on the selected row, called display mode.
This is accomplished using PLD U11, a parallel in / serial out shift register U8 and the
fibre optic output circuit TOTX111 (CN11). Each byte which is to be sent to the display
board is converted from parallel to serial using register U8. The output of the register is
connected to the PLD input pin 33.
The PLD controls the serial input signal and feeds it to the input of the transmission
circuit for the display boards. On the FDS101 controller board three different interfaces
are available to transport the serial data to the display boards:
2.5.1 FIBRE OPTIC
This makes use of a connectorless fibre optic
transmitter (CN11, TOTX111). The nylon
fibre must be cut squarely with a sharp knife
and plugged directly into the TOTX111. To
insert or release the nylon fibre, simply press
the clamp release ring. (see sketch)."

@roosmcd: Ik heb even gegoogled maar niets gevonden, is die manual vrij beschikbaar? Kan je deze naar geinteresseerden sturen of in het upload archief zetten? Zou veel tijd schelen qua reverse engineering.

A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."

Het zou ook nog kunnen dat er eerst een adres moet worden verzonden. Elk bord heeft een uniek nummer op een stickertje staan..
Dat zal wel moeten als het signaal van bord naar bord wordt doorgegeven toch?

@zonnepaneeltje: Ik en anderen hebben gezien dat de matrix oplicht als je met een zaklamp in de ontvanger schijnt. Zou wel heel toevallig zijn als het correcte serienummer uit die zaklamp komt.

Ook zou het wel erg toevallig zijn als die zaklamp een correcte CRC oid meestuurt.

@anderen: Ik verwacht geen uart achtig signaal met start en stopbits, maar een soort van TV achtig signaal:

* Vertical blanking/start of frame,
* data voor lijn 1, (lijn = serie schuifregisters)
* data voor lijn 2
* etc t/m lijn 16,
En begin bij begin.

Heel veel ingewikkelder kan het niet zijn, die CPLD heeft maar 64 flipfloppen, daar kun je niet heel veel mee..

Ik heb ook twee van de grotere panelen besteld en ben opzoek gegaan naar informatie over de cpld.

Op deze site kwam ik een schema tegen voor een programmer van de cpld. Het is een heel simpel schema met een paar 7400 series ic's. Toen heb ik de gratis software ispLEVER classic van lattice gedownload en ik kon zonder problemen in 1 keer de cpld uitlezen.

Je zou je eigen ontwerp dus makkelijk op de cpld kunnen zetten.

Hier is de uitgelezen ontwerp van de cpld:
https://dl.dropbox.com/u/23710328/cpld-matrix.jed

Te lang gewacht, gisteren nog 50. nu uitverkocht

klein is fijn

Moderator

Er lagen er gister nog 3 in de bak waarvan ik er 2 heb meengenomen.

Ik heb de chip(s) er inmiddels ook af. Een launchpadje aangekoppelt en alles getest; werkt zonder problemen. Morgen maar eens een scanning code schrijven. Wel op één display de muxjes een beetje stuk. Er staat 7V op de ingang ;(
Zo, maar weer verder.

Serea

Vanmorgen 13 gekocht. Vond toen dit forum. Ze zijn nu blijkbaar uitverkocht. Denk niet alle displays te gaan gebruiken. Hoop er eerst eentje aan de praat te krijgen. Dus mochten er mensen binnen dit topic zijn, die alsnog met zo'n bordje willen gaan spelen: ik zal ze (natuurlijk zonder verdere winst ofzo) aan je doorspelen. :P

Op 16 maart 2013 19:19:15 schreef blurp:
@zonnepaneeltje: Ik en anderen hebben gezien dat de matrix oplicht als je met een zaklamp in de ontvanger schijnt. Zou wel heel toevallig zijn als het correcte serienummer uit die zaklamp komt.

Ook zou het wel erg toevallig zijn als die zaklamp een correcte CRC oid meestuurt.

@anderen: Ik verwacht geen uart achtig signaal met start en stopbits, maar een soort van TV achtig signaal:

* Vertical blanking/start of frame,
* data voor lijn 1, (lijn = serie schuifregisters)
* data voor lijn 2
* etc t/m lijn 16,
En begin bij begin.

Heel veel ingewikkelder kan het niet zijn, die CPLD heeft maar 64 flipfloppen, daar kun je niet heel veel mee..

lijkt het wel op.
Een blok golf met een freq. van 2.304 Mhz (18.432/8) geeft een verticale lijn op elke 11e kolom ledjes van twee matrix blokken (16 leds).

Een blok golf met een freq. van 2.304 Mhz (18.432/8) geeft een verticale lijn op elke 11e kolom ledjes van twee matrix blokken (16 leds).

Check. Alleen als ik dit doe dan schiet mijn labvoeding in de stroombegrenzing.
Die staat normaal op 2, maar begrenst ook op 3 ampere.

Omdat 3A een beetje veel is voor 1/16de van alle ledjes vermoed ik dat die de multiplexing tussen de lijnen stopt, en deze 11de lijn continu aanstaat.

Om dit te testen moet ik (of iemand) eens een scope zetten op de touwtjes naar die 16 P-fets. Later.

Bij een paar lijnen niet ge 'plext aan heb ik wel >4 A gezien. Ik gok ook dat dat bij jou het geval is. Toen ik aan het proberen was heb ik dan ook een 5 volt gebruikt, zodat het geen kortbrandende leds worden :+ Verder is mijn matrix werkend. Foto's volgen eventueel vanavond.

Met een msp430g2553 (launchpad ding) op 16 MHz kan ik alle LEDs aansturen zonder hinderlijk geflikker. Stroomverbruik blijft tussen 0 en 3A (gokje).

Serea

Ik krijg het met een 18F4550 niet voor elkaar om hem zonder flikkering te laten branden. Alleen als ik een half scherm doe ofzo. Ik heb de PIC met PLL op 48 MHz lopen, maar ik zal ergens wel wat fout doen. Bord ligt nu weer even in de kast, volgende poging zal met een DSPic30 zijn in MPLAB-X ipv Proton. zal proton dan teveel instructies maken in de uiteindelijke asm code?
het is natuurlijk wel zo dat er 192 keer geschoven moet worden x 16 (voor alle lijnen)

en dat liefst meer als 30 keer per seconde zodat je niks ziet flikkeren
= 92160, maar daar zitten natuurlijk nog flink wat instructies tussen

Ik heb even zitten spelen met de volgende AVR code:

code:


int main(void)
{
	// configure usart for SPI
	uint16_t i = 0;
	uint8_t j = 0;
	UCSR0C = _BV(UMSEL01) | _BV(UMSEL00);
	UBRR0H = 0;
	UBRR0L = 1;
	// only enable tx, no rx or interrupts
	UCSR0B = _BV(TXEN0);
	while (1) {
		if (UCSR0A & _BV(UDRE0)) {
			if (j == 0) {
				UDR0 = i >>8;
				j = 1;
			} else {
				UDR0 = i & 0xff;
				j = 0;
				i+=16;
			}
		}
	}
	return 666;
}

Voor de arme zielen die geen AVR kennen: Ik gebruikt de UART van de AVR voor SPI. Dat is handig, want de UART is dubbel gebufferd, dus kan gelijk na de laatste bit van byte n verder met de eerste bit van byte n+1. De SPI van AVR kan dat niet.

Verder zet ik de klok van de UART op een kwart van de cpu klok.

Tot slot heb ik de AVR en het display op dezelfde klok gezet. Ik heb geen 18.324MHz kristal liggen, dus ik heb ze allebei op 16MHz gezet. Ik zie in het schema van de FDS184 geen reden waarom dat niet zou werken.

Op die manier kan ik ieder bitpatroon dat in mijn AVR past naar het display sturen. Om simpel te beginnnen een 16 bit tellertje dat met stappen van 16 opgehoogd wordt.

Dat geeft:
http://www.uploadarchief.net/files/download/step_16.jpg

Maar met de beginstand (voor teller i) op 3:
http://www.uploadarchief.net/files/download/step_16_3.jpg

Afijn, als je goede suggesties hebt voor een patroon: Roep maar. Voor de goede orde: Dit zijn stabiele, niet flikkerende schermen!

Leuk om te zien! :-)
lijkt wel of je last hebt van ghosting?

@blurp:

Ik weet niet of de dataslicer in de CPLD een andere baudrate klok fijn gaat vinden, misschien het kristal op de led bord vervangen door eentje van 16MHz? Of als je de datarate wat lager wil maken, 8MHz?

Oxyian:

Is dat een stabiele weergave? Geloof van wel, anders had je iets van flikkeringen genoemd. Heb je ook eens met de duty cycle gespeeld?

@robojan:

Desnoods is het zelfs schrijven ook een optie.

A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."

Dit topic is gesloten