hallo allemaal .
progammeer taal proton plus

wie o wie kanme helpen,!!
ik ben driftig aan het zoeken naar de commando
om me porten. portdb om te zeten naar digital in
wil alle poorten gebruiken als input

ik ben nu 2 uur aan het zoeken en kan niet vinden
hoe ik portd kan om gooien naar digital inputs

ik heb dit gadaan trisd = %11111111
maar ik weet niet waarom het niet werkt
weet iemand hoe dit zit
alvast bedankt

Staat in de datasheet bij de A/D converter. ADCON1 = 0x0F

Heb net gekeken, portd is altijd digitaal (heeft geen analoge functies)

vreemd ik heb wat ge progamerd en dat als ik
schakelaar s0 tot s7 o zet gaat i eve aan en dan gewoon weer uit
erg vreemd

;Config file Dezen code kopiëren en plakken in  picbasic  voor de 18F4620 


Device 18F4620
Xtal = 8
 
Config_Start
    OSC = INTIO67
    PWRT = On
    WDT = OFF
    LPT1OSC = OFF
    MCLRE = OFF
    XINST = OFF
    Debug = OFF
Config_End
 
; OSCCON BITS 654    (Datasheet BLZ: 32)
;      OSCCON 111 = 8 MHZ
;      OSCCON 110 = 4 MHZ
;      OSCCON 101 = 2 MHZ
;      OSCCON 100 = 1 MHZ
OSCCON.6 = 1
OSCCON.5 = 1
OSCCON.4 = 1
TRISC = %00000000
trisd = %11111111 
Symbol  s0 = PORTD.0
Symbol  s1 = PORTD.1
Symbol  s2 = PORTD.2
Symbol  s3 = PORTD.3
Symbol  s4 = PORTD.4
Symbol  s5 = PORTD.5
Symbol  s6 = PORTD.6
Symbol  s7 = PORTD.7




start:


If s0 = 1 Then 
PORTC.0 =1
ElseIf s0 = 0 Then
PORTC.0 = 0
EndIf

If s1 = 1 Then 
PORTC.1 =1
ElseIf s1 = 0 Then
PORTC.1 = 0
EndIf

If s2 = 1 Then 
PORTC.2 =1
ElseIf s2 = 0 Then
PORTC.2 = 0
EndIf

If s3 = 1 Then 
PORTC.3 = 1
ElseIf s3 = 0 Then
PORTC.3 = 0
EndIf

If s4 = 1 Then 
PORTC.4 =1
ElseIf s4 = 0 Then
PORTC.4 = 0
EndIf

If s5 = 1 Then 
PORTC.5 =1
ElseIf  s5 = 0 Then
PORTC.5 = 0
EndIf

If s6 = 1 Then 
PORTC.6 =1
ElseIf  s6 = 0 Then
PORTC.6 = 0
EndIf

If s7 = 1 Then 
PORTC.7 =1
ElseIf s7 = 0 Then
PORTC.7 = 0
EndIf

GoTo start
End

[Bericht gewijzigd door Henry S. op (1%)]

PORTD wordt nergens als input gezet (TRISD)

klopt net agter ge komen en veranderd maar werkt ook niet
vraag me dis echt af of je die portd wel ingangen kanmaken
erg raar

[Bericht gewijzigd door ricardo12345 op (39%)]

Natuurlijk kan dat, zijn gewone i/o pinnen.
Heb je wel een pull-down aan de PGM pin? (of je moet LVP uitzetten in config)

ja ook all gedaan pull up weerstanden ik dek dat ik meschie iets fout heb met de

Config_Start
OSC = INTIO67
PWRT = On
WDT = OFF
LPT1OSC = OFF
MCLRE = OFF
XINST = OFF
Debug = OFF
Config_End

ik gebruik een extterne osc 8000 mhz op port porta 7 en 6
heb ik dit wel goed staan ???

pull-down weerstand!...

ik heb me puldown weerstanden er op zitten op me printje los er bij
ik weet eigenlijk niet of me osc goed staad 8000mhz gebruik extern kristal
weet iemand dat ik snap het niet meer

Je hebt maar 1 pull-down nodig (aan de PGM pin), of je moet LVP in config op OFF zetten...
Oscillator staat zoals je kunt zien op INT(ern), dus geen kristal.

ik snap het even niet kint u me vertellen wat ik in de config moet zeten
of veranderen
ik zie geen lvp staan

Ik heb geen picbasic, dus daar kan ik je niet mee helpen, een ander misschien?

Je code kan ook wel een stuk eenvoudiger:


If s0 = 1 Then
PORTC.0 =1
ElseIf s0 = 0 Then
PORTC.0 = 0
EndIf

eenvoudiger:


If s0 = 1 Then
PORTC.0 =1
Else
PORTC.0 = 0
EndIf

sx is namelijk 0 of 1. Een elseif om te vragen of dat wel waar is is ernstig overbodig.

Ik zou persoonlijk een pull-up weerstand van 10K tussen /MCLRE en +Volt hangen, LVP=Off.
LVP staat gewoon gedocumenteerd in de PIC18F config fuses (Help>Documents).


----+---
    |
   10K
    |
    +---/MCLRE

Pullup of -down weerstanden aan PORTC afhankelijk van hoe je de schakelaar wilt laten werken.


input poort hoog als S niet ingedrukt, laag als wel ingedrukt
----+---
    |
   10K
    |
    +---input
    |
    S
    |
----G---

input poort laag als S niet ingedrukt, hoog als wel ingedrukt
----+---
    |
    S
    |
    +---input
    |
   10K
    |
----G---

oke het werkt heb bij de config
lvp = off
gezet en het werkt nu eindelijk
ook bedank voor de code makelijker te maken
gr en badankt

Pull-up weerstand aan MCLR is niet nodig (MCLRE=OFF) en heeft niets met de pull-down aan PGM pin te maken.
Om dit soort fouten te voorkomen is het handig om eerst de datasheet te lezen. Als je alleen een copy & paste van bestaande code doet, weet je over 10 jaar nog niet waarom iets op een bepaalde manier moet worden ingesteld...

[Bericht gewijzigd door Arco op (52%)]

Hallo,

nu wil ik porta 0, 1, 2, 3,
ingangen difital maken en geef op
trisa.0 = 1
trisa.1 = 1
trisa.2 = 1

maar er gebeurd hier ook niks
moet je hier nu wer een apard iets voor doen ??

trisA=%11111111

je had al trisC=%00000000 en trisD=%11111111

dat heb ik gedaan ingang alle trisa = %11111111
uitgangen portd = %00000000
symbol led = portd.0

als ik dan zeg

start:

if s1 = 1 then
led = 1
else
led = 0
endif
goto start

ik druk op de toets en dan gebeurt er niks

en terwijl het andere weer wel werkt
aan portd de srakelaars en aan ports de leds om te testen
en dan zo trisd = %11111111 en voor de uitgangen ports = %00000000 dit werkt weer wel
maar ik heb ook de porta's nodig voor ingangen te gebruiken

erg raar snap dit niet

Tijd om eens de datasheet door te lezen, en even te googlen op de begrippen pull-up en pull-down. Verder zul je er rekening mee moeten houden dat pinnen een dubbele functie kunnen hebben. Bijvoorbeeld als de AD-converter aan staat zal dat invloed hebben op de betrokken pinnen.

In de datasheet staat bij het overzicht van alle pinnen of er ergens een dubbele functie op zit.

Verder is het raadzaam je logica eens goed uit te werken, wanneer moet iets hoog worden, wanneer laag. Vaak zorgt een foutje in de logica van een programma voor onverwachte resultaten.

En haal eens een spellingscontrole over je teksten, je maakt akelig veel slordige foutjes.

Default is PORTA vrijwel altijd analoog en zul je dus altijd een instructie nodig hebben om die digitaal te maken.
In Proton is hier een aparte instructie voor: ALL_DIGITAL = TRUE.
Voor de 4620 kun je ook het volgende doen: ADCON1 = 15.

Ik raad je, net als mbbneon, sowieso aan om de datasheet er op na te slaan zodat je ook snapt wat je doet. Nu blijf je gissen en vragen stellen. Op een gegeven moment werkt er iets, maar je hebt er geen bal van geleerd en bij de volgende opgave gaat het weer mis.

Op 15 augustus 2011 23:08:01 schreef hadv:
Je code kan ook wel een stuk eenvoudiger:

eenvoudiger:


If s0 = 1 Then
PORTC.0 =1
Else
PORTC.0 = 0
EndIf

en jij noemt dat eenvoudiger ?

dit noem ik eenvoudiger :


portc.0 = s0

Ik ook, maar....one step at a time.
Eerst maar eens leren dat een bit slechts 0 of 1 kan bevatten.

nu ik de TS zijn originele code eens bekijk kan hij berter PortD=POrtC doen .. in plaats van een bak if then elsen...
die if then elsen veroorzaken time delay. met dat in 1 keer ssignen gaat dat weg.