Hey,

Ik heb zojuist die uC tutorial eens lopen leren en heb meteen maar even geprobeerd eens impel programmaatje te maken. Ik wilde een programmaatje dat als ik een bepaalde schakelaar open liet staan, er een rood ledje ging branden en wanneer ik de schakelaar sloot, dat er dan een groen ledje zou gaan branden. De groene staat op RA2 en de rode op RA4. Op poort RA1 staat een weerstand van 10K naar de min en de schakelaar staat aan de ene kant op Vcc en aan de andere kant met een weerstand van 1K naar RA1.
Ik heb deze code geschreven:


	instelporta 	EQU 85h
	porta		EQU 05h
	ORG 		00h
	BSF 		03,5
	CLRF 		instelporta
	BSF 		instelporta,1
	BCF 		03,5
rood	CLRF 		porta
	BSF 		porta,4
	GOTO 		open
open	BTFSS 		porta,1
	GOTO 		open
	CLRF 		porta
groen	BSF 		porta,2
	GOTO 		dicht
dicht	BTFSC 		porta,1
	GOTO 		groen
	GOTO 		rood
	END

Als ik dit proggie in mn pic laadt en de schakelaar staat gewoon open (rode led zou moeten branden) dan brand de rode led niet! Als ik de schakelaar sluit (groene led hoort te gaan branden) brandt de groen led wel. De groene led gaat ook weer netjes uit als ik de schakelaar loslaat.
Weet iemand wat er mis is met dit proggie ??

PS. ik meet over de poort waar de rode led op staat wel een spanning van 0,5V... misschien oscillatie??

Op wo 23-10-2002 21:09:18 schreef Bernd:


	instelporta 	EQU 85h
	porta		EQU 05h
	ORG 		00h
	BSF 		03,5
	CLRF 		instelporta
	BSF 		instelporta,1
	BCF 		03,5
rood	CLRF 		porta   [b]hier reset je porta[/b] 
	BSF 		porta,4 [b]hier zet je porta,4[/b]
	GOTO 		open
open	BTFSS 		porta,1
	GOTO 		open

	CLRF 		porta
groen	BSF 		porta,2
	GOTO 		dicht
dicht	BTFSC 		porta,1
	GOTO 		groen
	GOTO 		rood
	END

is idd oscilatie
zie dik gedrukte deel zodra je de schakelaar opent
resetje poort a vervolgens set je poort a zolang je schakelaar open is blijf je deze lus herhalen
dus oscileerd de uitgang tussen reset en set
dit doe je toch niet bij dicht
weg met die clrf porta
(edit)
volgens mij werkt dit ook


start  btfss  porta,1
       goto rood
       goto goen
rood   bcf porta,2
       bsf porta,4
       goto start
groen  bcf porta,4
       bsf porta,2
       goto start
       end

want als je porta,1 niet 0 is is hij 1
(port set routine is weggelaten)

[Bericht gewijzigd door k.p.meinesz op ]

Ik zal er de 24e ook ff aar kijken, maar het is nou wat te laat voor me :)


rood	CLRF 		porta      <- reset
 	BSF 		porta,4    <- set	
        GOTO 		open
open	BTFSS 		porta,1	
        GOTO 		open

JA maar dan snap ik niet waarom (zolang als de schakelaar open staat) hij terugkeert naar die LABEL rood. Als de schakelaar open blijft staan blijft de poort 0 en dus gaat hij telkens na het commando BTFSS weer terug naar open, en niet naar rood toch.
nadat ik de poort a heb gecleared set ik bit 4 (poort RA4 dus) en zeg verder nooit dat hij hem weer moet clearen.

Op wo 23-10-2002 21:51:09 schreef k.p.meinesz:
[...]
is idd oscilatie
zie dik gedrukte deel zodra je de schakelaar opent
resetje poort a vervolgens set je poort a zolang je schakelaar open is blijf je deze lus herhalen
dus oscileerd de uitgang tussen reset en set

Nee is niet waar, hij blijft toch in de lus "open" hangen! Hij voert die regels maar 1 keer uit en gaat daarna wachten op de schakelaar. Dus heeft niks met oscillatie te maken.

dit doe je toch niet bij dicht

Doet die wel hoor.

weg met die clrf porta

Zoals Bernd zegt moet je die gewoon laten staan. Anders wordt die nooit gecleared.

Bernd -> je moet in deze code wat veranderen:


dicht	BTFSC 		porta,1
        GOTO 		groen
	GOTO 		rood
	END

Je hebt dat bij de open wel mooi gedaan en hier niet helemaal. Het is een klein detail maar je moet ipv
GOTO groen
neerzetten:
GOTO dicht

Maar eigenlijk moet je programma gewoon werken. Qua software klopt je proggie wel.

Mogelijke oorzaken:
*Ledje kapot.
*Hij ziet de schakelaar niet open staan maar altijd gesloten, dus je hebt niet voor een goede aarding gezorgt.
*Zit dat rode ledje wel op RA4? (en niet toevallig op RA3?)

nee het ledje doet het wel en de aarding is ok en de poort is goed. Bovendien verdwijnt die 0,5V op de poort RA4 als ik de schakelaar sluit... dit duidt dan weer wel op oscilatie, maar ja je hebt wel gelijk.. ik kan het me niet voorstellen dat ie oscileert. Ik zal dat label wel ff veranderen en kijken wat ie nu doet.

En als die het dan nog niet doet, probeer dan eens RA3 te gebruiken. (verander dan ook ff je code natuurlijk). Misschien ligt het wel aan die pin.

ok problem solved!

Ik heb in het programma poort RA3 de taak van RA4 overlaten nemen... de poorten dus gewisseld en nu doet ie het wel. Het mag dus duidelijk wezen. Of poort RA4 is kapot of hij moet anders aangestuurd worden. Maar ik ben bang dat ie kapot is. wat btw erg jammer is want ik geloof dat alleen op RA4 een timer zit aangesloten en een schmitt-trigger heeft :( Die heb ik wel nodig op mn robot.. dsu moet ik weer nieuwe kopen

bedankt allemaal!

[Bericht gewijzigd door Bernd op ]

Op do 24-10-2002 14:57:44 schreef Bernd:
Maar ik ben bang dat ie kapot is. wat btw erg jammer is want ik geloof dat alleen op RA4 een timer zit aangesloten en een schmitt-trigger heeft :( Die heb ik wel nodig op mn robot.. dsu moet ik weer nieuwe kopen
bedankt allemaal!

Graag gedaan. Het kan trouwens dat die niet stuk is of anders dat de timer het nog wel gewoon doet.

ik hoop, maar het is vreemd want hij kan als ik wil dat hij op die poort een 1 set er wel 0,5V op krijgen. Hij krijgt het gewoon niet hoger, maar hij doet het verder wel.

bernd hij hoeft niet kapot te wezen hoor een pic heeft alsie in de 0 staat is niet altijd precies 0V ik heb hetzelfde ook gehad dat ik dacht hey hij is kapot dat issie dus niet maar je stuurt hem dan waarschijnlijk verkeerd aan

Op do 24-10-2002 00:07:36 schreef Bastiaan:
Ik zal er de 24e ook ff aar kijken, maar het is nou wat te laat voor me :)

Had ik ook beter kunnen doen
sorry BERNDhad ff niet goed genoeg gekeken|:(

Je bent toch maar eens begonnen met proggen is toch best simpel he

succes verder

haha ja idd... nu ik het eenmaal een beetje kan merk ik dat het juist veel makkelijker en sneller is dan JAl. Asm ruleszz bij mij voortaan ;)

Erik, die poort geeft asl hij 0 moet zijn wel netjes 0,01V maar asl ie ene 1 (5V) moet geven juist maar 0,5V :)

ben nu al aant schrijven voor mn robot :D. Ik heb alleen een ding wat ik nog niet snap en dat is die getallen. Zo zeggen ze in de tut. dat 0FFh het getal 255 voorstelt... maar wat bijv. 155 (doe maar een gok hoor) Hoe haal je daar een hex. getal uit??

155=9b

gebruik je rekenmachine van windhoos in de uitgebreide mode

Kan dit ook te maken hebben met het option register?
bit 5

TOSC: TRM0 Clock Source Select bit
1=transition on RA4/TOCKI pin
0=Internal instruction cycle clock(CLOCKOUT)

of bit 4
TOSE:trm0 source edge select bit
1= increment on high-to-low transition on RA4/tocki pin
0= increment on low-to-high transition on RA4/tocki pin

Mischien onzin zou al de tweede keer zijn maar.....

verbeter mij maar ik kan ertegen leer ik mischien weer iets

tja zou kunnen.. ik weet het niet. Maar ik gebruik wle gewoon andere pinnen. Ik zal het wel een sproberen met dei 5e bit op 05h

tahnx erik.. werkt nog ook :P