Programhjälp.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7487
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

Då är det mycket enkelt att göra det.

Nu är det läge att göra hårdvaruförändringarna och ändringen i multiplexdelen. Sedan sätta den nya DISP7 till ett fast värde i initieringen av programmet för att testa så det fungerar och att inget redan befintligt slutar att fungera innan nästa steg av modifieringen läggs till.

Koppla helst dioderna så att den första att tändas ansluts till RB0, nästa till RB1 o.s.v., alternativt första till RB7, nästa till RB6 o.s.v.

Sedan kan tillägget enkelt göras utan tabell och bli okänsligt för om det hamnar på en "page break". Det kan göras utan tabell ändå, men det blir lite stökigare.

Edit: Här är ett förslag på programkod som kanske (otestad) gör det som skall göras. Den förutsätter att de nya LED's börjar tändas från RB0 och uppåt. Ändra en bokstav och en siffra och den börjar från RB7 och nedåt istället.

Edit2: missade att bitarna skall vara inverterade, ändrade detta


Kod: Markera allt


	;handle extra leds illuminating one-by-one
	;on seconds 55 to 59, goes blank at minute turnover 
XLEDS	
	movlw 0xff             ;inverted bits, 0xff means all off
        movwf DISP7		;turn off and also gives blank to start with	
	movfw TIME_CNT1		;get seconds
	addlw 0xab		;add decimal 171, gives 0..4 on BCD 55..59
	btfss STATUS,c		;reached second 55?
	return			;no-done
	addlw 0x1			;make #leds to lit 1-relative
XLEDS1	rlf DISP7		;move pattern 1 pos left
	bcf DISP7,0		;turn on led at the new bit
	addlw 0xff		;count down #leds to lit
	btfss STATUS,z		;all done?
	goto XLEDS1		;no-do nxt
	return			;yes-done


Placera denna subrutin sist i programkoden och anropa den t.ex. här:

Kod: Markera allt

; transfer TIME_CNT1,2&3 to DISP1-6 

TRANS	call	TM_DSP		; time to display
        call XLEDS                   ; !!handle added led's!!
	goto	SW_CHK


Senast redigerad av Marta 24 oktober 2008, 15:16:54, redigerad totalt 2 gånger.
Användarvisningsbild
dar303
Inlägg: 5979
Blev medlem: 17 december 2003, 19:54:56
Ort: Sthlm

Inlägg av dar303 »

Detta är ett väldigt trevligt forum! :)
Marcus F
Inlägg: 11
Blev medlem: 23 oktober 2008, 10:05:13
Ort: Njurunda

Inlägg av Marcus F »

Tack för det Marta, ska testa det under söndagen.
Jag återkommer med resultatet.
BMI
Gått bort
Inlägg: 496
Blev medlem: 31 juli 2006, 22:29:08
Ort: Halmstad

Inlägg av BMI »

Kul att se en som ger "proffsig" hjälp åt en medlem i nöd utan krav på motprestation . Känner själv hur kul det blir att lära att förstå vad den föreslagna patchen innebär samt att man då vill kolla lite mer noggrannare i koden. Förhoppningsvis lär man lära sig något nytt med läsandet

Marta är i mitt tycke ett föredömme på en medlem i ett sådant här forum. Verkar påläst men inte uppblåst :)
Marcus F
Inlägg: 11
Blev medlem: 23 oktober 2008, 10:05:13
Ort: Njurunda

Inlägg av Marcus F »

Hmm.
Jag har lagt in dina förslag + att jag definierat DISP7.
Klockan går som vanligt men jag får inte ut nått på dom extra led,arna.
Började fundera på adressen till DISP7 och provade att lägga DISP1,s adress på DISP7. Då räknar den i någon skum ordning på displayens segment men när den kommer till 55-59 så är den släkt.

Vad blir adressen för utgång 6 på 4051,an??

Så här har jag satt den nu men det funkar inte:

Kod: Markera allt

DISP_P	addwf	PCL,f		; add w to program counter
	retlw 	B'00000110'	; display 1 
	retlw	B'00000010'	; display 2
	retlw 	B'00000001'	; display 3
	retlw	B'00000100'	; display 4
	retlw 	B'00000000'	; display 5
	retlw	B'00000101'	; display 6
	retlw	B'00000011'	; display 7 startinglights
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7487
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

Jag måste titta igenom detta noggrant och lovar att lösa det. Just nu är klockan alldeles för mycket, det blir inte bra att göra sådant här vid denna sena trötta timma.
Marcus F
Inlägg: 11
Blev medlem: 23 oktober 2008, 10:05:13
Ort: Njurunda

Inlägg av Marcus F »

Du är en klippa.
Kom på ett litet annat problem också. LED,arna som ska drivas när detta är klart är LED lampor. Dessa drar 1,5W, när alla fem lyser brtyder det att dom drar 625mA. 6051 & ULN,en tycker inte speciellt bra om mer än 500mA :( . En lösning på detta är att låta första eller sista LED,en som ska tändas gå på DISP6 utgång RB2 eftersom denna inte används till något annat.
Användarvisningsbild
PeterH
Inlägg: 8640
Blev medlem: 15 mars 2006, 15:57:10
Ort: Gävle/Valbo

Inlägg av PeterH »

Så jag gissar att vad du *egentligen* ville ha redan från början var dom 5 nedräkningslampor som visas som stapel vid dragracing? I så fall hade nog varit bra att beskriva detta redan från början eftersom det kanske hade påverkat lösningen en del...? Det känns som att en extern drivarkrets för just dom fem dioderna/lamporna kommer att behövas i någon form. ULN, trissor eller FET:ar.

/PeterH
Marcus F
Inlägg: 11
Blev medlem: 23 oktober 2008, 10:05:13
Ort: Njurunda

Inlägg av Marcus F »

Öhh.
Så vitt jag vet har jag väl skrivit vad jag vill uppnå redan från början då jag skrev att det var startklockor, dock inte nån gran til DR om du läst hela så ska dessa räkna upp inte ner.
Jag ville ha hjälp me hur jag tänder dessa. När jag började räkna på effekten igår kväll så blev det lite för mycket. Om man kan nyttja DISP6 enligt vad jag skrev så betyder det att jag slipper lägga till nån mer Drivarkrets. Men om det ställer till det allt för mycket så får jag väl hitta på nått.
Skriv svar