pa3gws
Ik ben gestopt met roken nu mijn schakelingen nog.
Beste forum leden.
Ik heb dit eenvoudige stukje code van de picbasic website gehaald en een klein beetje veranderd.
Het lijkt allemaal te werken maar als ik op poort A.0 en A.1 een Led aansluit.
Dan gaan die niet helemaal uit.
Op poorten B.0 en B.1 zit een 470 Ohm pulldown weerstand naar GND.
Hang ik poorten B.0 en B.1 rechtstreeks aan de GND dan gaan de led's wel uit maar dat gaat natuurlijk fout als ik de poorten hoog maak.
Ik doe ongetwijfeld iets verkeerd maar wat?
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE
DELAYMS 5000
TRISA = %11111100
TRISB = %11111111
PORTB_PULLUPS ON
CLEAR
WHILE 1 = 1
IF PORTB.0 = 1 THEN HIGH PORTA.0
IF PORTB.1 = 0 THEN LOW PORTA.0
IF PORTB.0 = 0 THEN HIGH PORTA.1
IF PORTB.2 = 0 THEN LOW PORTA.1
WEND
END
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Waarom zou je pull-ups en pull-downs aan een pin hangen???
Hang ik poorten B.0 en B.1 rechtstreeks aan de GND dan gaan de led's wel uit maar dat gaat natuurlijk fout als ik de poorten hoog maak.
Wil je ze dan ook als outputs gebruiken? Anders kun je gewoon naar Gnd schakelen.
pa3gws
Ik ben gestopt met roken nu mijn schakelingen nog.
Alvast bedankt voor de reacties.
Maar ik zie aan de reacties dat ik niet duidelijk ben in mijn vraagstelling.
Even een korte uitleg.
Op poort b.0 zit een relais kontact en op de poorten B.1 en B.2 zitten microswitches.
En de poorten A.0 en A.1 gaan naar een L293.
De bedoeling is dat wanneer er een 12 voeding aangaat er een motor maar een bepaalde positie loopt en door een eindschakelaar stopt.
Als die 12 volt voeding wegvalt (relais kontact naar GND)dan moet de motor teruglopen en weer stoppen op de eindschakelaar.
De eindschakelaars zijn de microswitches op poorten B.1 en 2.
Dit werkt eigenlijk zo als ik het wil maar de motor blijft heel langzaan doorlopen.
En dat wil ik dus niet.
Kijk hier eens:
http://www.picbasic.nl/index_picbasic.htm
Kijk bij les 7.
hadv
Just find out what you like and let it kill you
Werk eerst een alle mogelijkheden uit:
PORTB.0/1/2 geeft 2^3 = 8 mogelijkheden, jij beschrijft slechts de helft. Dan per combinatie aangeven wat er moet gebeuren.
Een combinatie die niet kan optreden mag je overslaan.
PORTB 0 1 2 | PORTA.0 1
=====================|=============
0 0 0 | ? ?
1 0 0 | ? ?
0 1 0 | ? ?
0 0 1 | ? ?
1 1 0 | ? ?
0 1 1 | ? ?
1 0 1 | ? ?
1 1 1 | ? ?
En in plaats van "HIGH" en "LOW" PORTx.y = 1 of 0.
loopycoaster
Mijn youtube profiel: http://www.youtube.com/user/PicBasicMaster
Zoiets zou ik doen:
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE
TRISA = %11111100
TRISB = %11111111
symbol Gesloten = 0
symbol Open = 1
symbol Relaiscontact = portb.0
symbol Motor1 = porta.0
symbol Motor2 = porta.1
symbol S1 = portb.1
symbol S2 = portb.2
PORTB_PULLUPS ON
delayms 5000
CLEAR
WHILE 1 = 1
if relaiscontact = Gesloten and s1 = 1 then
motor1 = 1
elseif relaiscontact = open and s2 = 1 then
motor2 = 1
else ;wanneer de microswitches goed staan icm het relaiscontact
motor1 = 0
motor2 = 0
endif
WEND
END
pa3gws
Ik ben gestopt met roken nu mijn schakelingen nog.
@hadv.
Ik was ook al op picbasic met de tabellen bezig maar daar ben ik nog niet uit.
De tabel ziet er als volgt uit
PORTB 0 1 2 | PORTA.0 1
=====================|=============
0 1 0 | 1 0
0 0 1 | 0 0
1 1 0 | 0 0
0 1 1 | 1 0
1 0 1 | 0 1
1 1 1 | 0 1
@loopycoaster
Toen ik mijn vorige commentaar neer schreef zat ik op mijn werk en had ik het niet goed bekeken.
Nu de code in de Pic gezet en het werkt. 
Super bedankt maar nu vraag ik mij nog steeds af hoe het kan dat in mijn eerste bedenksel de led niet helemaal uit ging.
Ik denk dat dat kwam door het relais kontakt maar weet de reden niet.
Kan je dat verklaren?
Wie weet leer ik er nog iets van.
[Bericht gewijzigd door pa3gws op (30%)]