Hallo,

Ik heb een volgend programmaatje geschreven om een soort primitieve ADC te maken met een LDR, een condensator van 100nF en een RGB led:


        zie nieuwe code onder

Allemaal heel leuk, en het werkt ook redelijk. Alleen als ik de ldr in het licht zet wordt de kleur netjes groen, en in het donkder/schemer blauw, maar maak ik hem dan nog donkerder dan gaat hij gewoon weer terug naar groen. De rode kleur krijg ik er helemaal nooitr uitgetoverd. Alleen als ik net de voedingssopanning aanluit heb je een hele korte rode flits, en dan springt hij weer over naar groen/blauw. De groene led zit op B7, blauw op B6, en rood op B5.

Wie weet waar het probleem zit?

[Bericht gewijzigd door Bernd op ]

Ik ken de assembler van de PIC's niet echt (ST man hier) maar in je listing heb je overal GOTO's na elkaar staan. Bij die tweede GOTO komt het programma dus nooit aan. Zoals onder het label 'jaja'

GOTO rgb4
GOTO rgb5

Het programma gaat dus naar rgb4 en daarna naar het label begin volgens het programma..

[Bericht gewijzigd door Atlantis op ]

nee dat klopt wel... als je het commando BTFSC hebt en hij merkt (de pic) dat het bit in dat register 0 is dan zal hij naar het tweede label gaan.

Ja ok, nogmaals in ken die instructies niet. Kennelijk een bit test :)

vermoedelijk zit het hem in de bsf/bcf functie
gebruik deze op een adres en schrijf dit adres weg naar de poort dus bcf/bsf niet rechstreeks een uitgang laten verranderen

ok, ik zal het eens proberen, maar ik doe het al die tijd dat ik programmeer al zo en het heeft nog nooit problemen opgeleverd. Het lijtk mij waarschijnlijker dat het probleem toch in de meting zelf.

ok, ik heb nu de wijzigingen van kpm doorgevoerd, plus nog een foutje dat erin zat weggewerkt, maar het resultaat is exact hetzelfde. Bij een lage weerstandswaarde van de ldr is de kleur goen, iest hoger dan wordt hij blauw, en nog hoger wordt hij weer groen. En hij blijft groen tot Rldr gaat naar oneindig. Ik kan geen fout in de software meer ontdekken. Kwordt er een beetje moe van :S

  deze is al weer oud ;)	

[Bericht gewijzigd door Bernd op ]

Op 1 mei 2003 16:44:43 schreef Bernd:
Ik word hier zo moe van

als ik het goed lees:
je kijkt steeds op het moment dat pin x 1 word naar trm0
en gebruikt deze waarde echter.... trm0 kan een overflow krijgen
zolang trm0 geen overflow situaltie krijgt gaat het goed maar als trm0 een overflow heeft en deze zie je niet dus geeft je prog groen licht
zet de trm0 prescaler eens op maximaal mischien werkt dat
of gebruik een kleinere c

[Bericht gewijzigd door k.p.meinesz op ]

ok bedankt, dat zal ik eens proberen!!

ik heb het geprobeerd met een condensator van 22 nF en ik heb ook het programma wat aangepast. Nu weekt hij beter, dat wil zeggen, maakt andere fouten. Hij kent nu drie toestanden. Blauw, rood, en wit (r,b,g) de andere slaat hij op de een of ander manier over. Het gekke is dat hij eenmaal van blauw naar rood, niet meer blauw kan wordenm, alleen nog maar wit. Eenmaal wit blijft hij dat ook. Dus op de een of andere manier vergeet hij een register ofzo te clearen. Maar TMR0 wordt zeker weten gecleared!


	trisa EQU 85h
	trisb EQU 86h
	timer11 EQU 20h
	timer22 EQU 21h
	time EQU 40h
	TMR0 EQU 01h
	INTCON EQU 0Bh
	OPTION_REG EQU 81h
	hulp1 EQU 41h
	hulp2 EQU 42h
	hulp3 EQU 43h
	hulp4 EQU 44h
	hulp5 EQU 45h
	porta EQU 05h
	portb EQU 06h
	ORG 00h
begin	CLRF INTCON
	CLRF time
	BSF 03,5
	MOVLW b'11111111'
	MOVWF trisa
	MOVLW b'00001111'
	MOVWF trisb
	MOVLW b'11010101'
	MOVWF OPTION_REG
	BCF 03,5
	GOTO main
setout	BSF 03,5
	MOVLW b'11101111'
	MOVWF trisa
	BCF 03,5
	RETURN
setin	BSF 03,5
	MOVLW b'11111111'
	MOVWF trisa
	BCF 03,5
	RETURN
main	CALL setout
	MOVLW b'00000000'
	MOVWF porta
	MOVLW 012h
	MOVWF timer22
labelb	MOVLW 0FFh
	MOVWF timer11
labela	DECFSZ timer11,1
	GOTO labela
	DECFSZ timer22,1
	GOTO labelb
	CALL setin
	NOP
	MOVLW 00h
	MOVWF TMR0
	BCF INTCON,2
msure	BTFSS porta,4
	GOTO msure
	MOVF TMR0,w
	MOVWF time
	GOTO pre1
pre1	MOVLW 033h
	MOVWF hulp1
timer1	DECFSZ hulp1,1
	GOTO aa
	GOTO pre2	
aa	DECFSZ time,1
	GOTO timer1
	GOTO jaja
pre2	MOVLW 033h
	MOVWF hulp2
timer2	DECFSZ hulp2,1
	GOTO ab
	GOTO pre3	
ab	DECFSZ time,1
	GOTO timer2
	GOTO jaja
pre3	MOVLW 033h
	MOVWF hulp3
timer3	DECFSZ hulp3,1
	GOTO ac
	GOTO pre4	
ac	DECFSZ time,1
	GOTO timer3
	GOTO jaja
pre4	MOVLW 033h
	MOVWF hulp4
timer4	DECFSZ hulp4,1
	GOTO ad
	GOTO pre5	
ad	DECFSZ time,1
	GOTO timer4
	GOTO jaja
pre5	MOVLW 033h
	MOVWF hulp5
timer5	DECFSZ hulp5,1
	GOTO ae
	GOTO jaja	
ae	DECFSZ time,1
	GOTO timer5
	GOTO jaja
jaja	BTFSC hulp1,7
	GOTO rgb1
	BTFSC hulp2,7
	GOTO rgb2	
	BTFSC hulp3,7
	GOTO rgb3	
	BTFSC hulp4,7
	GOTO rgb4 
	GOTO rgb5
rgb1	MOVLW 00h
	MOVWF portb
	MOVLW b'10000000'
	MOVWF portb
	GOTO begin
rgb2	MOVLW 00h
	MOVWF portb
	MOVLW b'01000000'
	MOVWF portb
	GOTO begin
rgb3	MOVLW 00h
	MOVWF portb
	MOVLW b'00100000'
	MOVWF portb
	GOTO begin
rgb4	MOVLW 00h
	MOVWF portb
	MOVLW b'11000000'
	MOVWF portb
	GOTO begin
rgb5	MOVLW 00h
	MOVWF portb
	MOVLW b'11100000'
	MOVWF portb
	GOTO begin
	END

[Bericht gewijzigd door Bernd op ]