MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Övriga diskussioner relaterade till komponenter. Exempelvis radiorör, A/D, kontaktdon eller sensorer.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av Al_Bundy »

Hej!

Jag har lödigt ihop 4 stycken katod 7-segment och en MAX7219 drivare och fått det fungera med ett bibliotek med Arduino. Nu tänkte jag skapa eget själv.

Som tur så behöver jag bara fokusera på CS, MOSI och CLK då MISO är inte relevant här för jag pratar bara med MAX7219 bara en gång.

I databladet så står det att man ska skicka 16-bitar per 7-segment.
D0 till D7 är det som ska visas på 7-segmentet och D7 är den lilla punkten.
D8 till D11 är adressen.

Men helt plötsligt så står det X på D12 till D15. Jag vet att D12 till D15 är "don't care" bits. Men är X typ som en variabler som innehåller något annat från en tabell ifrån databladet? För det står X lite överallt i tabellerna.

Det första man gör är att starta 7-segmenten. Då står det bara X X X X X, men på D0 står det 0 och vill jag starta så ska D0 vara 1.

Efter det så ska man sätta ljusstyrkan. Om jag vill ha maximal ljusstyrka 31/32 så är det XXXX1111 räknat ifrån D7 till D0.

Och sist så sätter man ett värde på en 7-segment. Så om jag vill skicka till exempel 5 till en 7-segment så måste jag skicka A = 1 B= 0 C= 1 D= 1 E= 0 F = 1 G = 1, samt DP måste vara 1 om jag vill ha med punkten, annars 0. Detta följs sedan av en adress. Så första 7-sgementen är D11 till D8 0000 och andra 7-segmentet är 0010.

Jag ska börja sända ifrån D15 till D0.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46935
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av TomasL »

X i detta fallet betyder "Dont Care/Ej Använd", Sanningstabeller och liknande skrivs alltid på detta sättet.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av Al_Bundy »

TomasL skrev:X i detta fallet betyder "Dont Care/Ej Använd", Sanningstabeller och liknande skrivs alltid på detta sättet.
Okej. Då spelar det alltså ingen roll om jag sätter en etta eller nolla.

Men hur blir det då om jag skickar att jag ska visa en nolla på en segment? Då kan den ju tro att jag stänger av den?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46935
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av TomasL »

Står i databladet exakt hur du gör.
Skicka Binärt noll och tänd de displayer du vill ha visning på.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av Al_Bundy »

Jo men hur ska den veta att jag vill tända en display och inte skriva en nolla till den?

OH, hittade det nu. ;)
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av Al_Bundy »

Här är min kod.

Det sin händer är att alla segmenten är ON, oavsett om jag gör något eller inte. Jag har trippelkollat om jag har kopplat rätt.

Koden kan synas bättre här.

Kod: Markera allt

PROGRAM SETUP
VAR
	LOCK: BOOL := FALSE;
	COUNTSETUP: INT;
	STARTUP: ARRAY[0..15] OF BOOL := [FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE];
	DECODE: ARRAY[0..15] OF BOOL := [FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE];
	INTENSITY: ARRAY[0..15] OF BOOL := [FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE];
	DIGI5: ARRAY[0..15] OF BOOL := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE];
 CLOCKARRAY: ARRAY[0..15] OF BOOL := [TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE];
    
    // Pause 
	PAUSE: TP;
	
END_VAR


(* This program only run once 
   1. Start up
   2. Choose decode mode
   3. Choose intensity register
   4. Lock
*)

// GPIO26 := STARTUP[COUNTSETUP]; MOSI
// GPIO17 := CLOCKARRAY[COUNTSETUP]; // CLK

IF LOCK = FALSE THEN
	GPIO19 := FALSE; // CS low - Talk
	
	// 1. Start up MAX7219
	FOR COUNTSETUP := 0 TO 15 DO
		// Call
		GPIO26 := STARTUP[COUNTSETUP];
		GPIO17 := CLOCKARRAY[COUNTSETUP];
		// Pause
		PAUSE(IN := TRUE, PT:= T#5MS); 
	END_FOR
	
	GPIO19 := TRUE; // CS hi - No talk
	PAUSE(IN := TRUE, PT:= T#5MS); 
	GPIO19 := FALSE; // CS low - Talk
	
	// 2. Choose decode mode - No decode mode
	FOR COUNTSETUP := 0 TO 15 DO
		// Call
		GPIO26 := DECODE[COUNTSETUP];
		GPIO17 := CLOCKARRAY[COUNTSETUP];
		// Pause
		PAUSE(IN := TRUE, PT:= T#5MS); 
	END_FOR
	
	GPIO19 := TRUE; // CS hi - No talk
	PAUSE(IN := TRUE, PT:= T#5MS); 
	GPIO19 := FALSE; // CS low - Talk
	
	// 3. Choose intensity register - FULL
	FOR COUNTSETUP := 0 TO 15 DO
		// Call
		GPIO26 := INTENSITY[COUNTSETUP];
		GPIO17 := CLOCKARRAY[COUNTSETUP];
		// Pause
		PAUSE(IN := TRUE, PT:= T#5MS); 
	END_FOR
	
	GPIO19 := TRUE; // CS hi - No talk
	PAUSE(IN := TRUE, PT:= T#5MS); 
	GPIO19 := FALSE; // CS low - Talk
	
	// 3. Choose DIGIT 5 at digit 1 - TEST
	FOR COUNTSETUP := 0 TO 15 DO
		// Call
		GPIO26 := DIGI5[COUNTSETUP];
		GPIO17 := CLOCKARRAY[COUNTSETUP]; 
		// Pause
		PAUSE(IN := TRUE, PT:= T#5MS); 
	END_FOR
	
	GPIO19 := TRUE; // CS hi - No talk
	// All done!
END_IF

LOCK := TRUE; // Lock
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av Al_Bundy »

Nu vet jag vad problemet är.

Det går inte göra en blinkande loop i PLC.

Tänk typ en FOR-loop som tänder och släcker en led lampa. Det går inte för det händer inget på utgången då.

Programmet måste tydligen köra klart innan den kan tända och släcka en lampa.

Jag vet. Detta är skumt.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av sodjan »

Ja, även många "vanliga" PLC'er fungerar så, de har en loop där man
först kör alla logiska operationer, sedan sätts alla utgångar samtidigt
i slutet av loopen innan man startar om ingen. Cykeltiden är ändå så
pass kort så vanliga maskiner märker ingen skillnad.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av Al_Bundy »

sodjan skrev:Ja, även många "vanliga" PLC'er fungerar så, de har en loop där man
först kör alla logiska operationer, sedan sätts alla utgångar samtidigt
i slutet av loopen innan man startar om ingen. Cykeltiden är ändå så
pass kort så vanliga maskiner märker ingen skillnad.
Men hur ska jag göra då för att LED lampan ska blinka i en loop?
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av sodjan »

(Du behöver inte, och det avråds från att, upprepa hela föregående
inlägg utan att det tillför något till tråden mer än onödig plats)

Man kanske får blinka den i huvudloopen?
Aja, jag vet inte vilken loop som det gäller.
Nerre
Inlägg: 27195
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av Nerre »

En PLC programmerar du normalt inte som du programmerar en normal microprocessor, en PLC programmerar du som om du hade byggt med logikkretsar.

För att få blink behöver du definiera en timer som ger en fyrkantvåg med blinkfrekvensen, och sen måste alla utgångar AND:as med den signalen.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av Al_Bundy »

Nerre skrev:En PLC programmerar du normalt inte som du programmerar en normal microprocessor, en PLC programmerar du som om du hade byggt med logikkretsar.

För att få blink behöver du definiera en timer som ger en fyrkantvåg med blinkfrekvensen, och sen måste alla utgångar AND:as med den signalen.
Så en PLC är dum och korkad med andra ord? Eller menar du att alla program i en PLC ska vara konternueliga och inte diskreta?

Den klarar utav endast automation on/off och klassisk reglering så som PID?

Okej. Så om jag ska göra en SPI clocka så måste den gå hela tiden? Det har jag gjort och det fungerar mycket bra.

Men det största problemet som jag har är att jag vill köra ett program bara en gång efter det programmet har slutat så startar alla andra program i sin vanliga ordning.

Om jag kan det så behöver jag inte dessa while loopar
Nerre
Inlägg: 27195
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av Nerre »

PLC är traditionellt byggda för att ersätta gammal relälogik.

Det är därför med heter PLC, Programmable Logic Controller.

Det finns kanske PLC som kan programmeras sekventiellt, men det normala är att man helt enkelt bygger en sekvensmaskin med vippor, på samma sätt som man byggda såna grejer med reläer eller tryckluft förr.

Det mest logiska sättet att programmera en PLC är med "ladderdiagram".

Vill du ha en microprocessor så ska du använda en microprocessor och inte en PLC:)
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av Icecap »

En dator - i vilken användning man än väljer - är aldrig dum och korkad!

Användaren som väljer fel sätt att använda den på kan däremot vara dum och korkat.

En PLC gör vad en PLC ska, om det inte motsvarar vad som behövs är det inte en PLC man ska använda.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: MAX 7219 7-segmentdrivare - Vad betyder X i databladet?

Inlägg av Al_Bundy »

Fast kan ju programmera en PLC sekventiellt ;)
Du menade säkert iternationellt? Eller hur det stavas.

Hur som helst jag har lyckats få en kommunikation med min MAX7219 men det är väldigt buggit.

Den kan potta ut en 8a ibland.
Skriv svar