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??
k.p.meinesz
Een schizofreen is nooit alleen!
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 ]
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
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.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
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.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
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 ]
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
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 heeftDie 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.
Erik
In order to succeed you must fail, so that you know what not to do the next time.
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
k.p.meinesz
Een schizofreen is nooit alleen!
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
. 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??
Erik
In order to succeed you must fail, so that you know what not to do the next time.
k.p.meinesz
Een schizofreen is nooit alleen!
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 