No, nothing at all.
No, nothing at all.
Nothing special about PortA.3 that doesn't apply to PortB.2, nothing at all?
http://www.picbasic.co.uk/forum/showthread.php?t=561
I have CMCON=%00000111 using porta.3 as serial input and it is working but when I swapped serial in to portb.2 and the switch to porta.3 thats where the trouble began. I have not changed CMCON=%00000111 at all just the tris for in/outputs, hmmm....and the switch when on goes to ground when closed and pulled high externally when open, that way the processor knows the switch is on or off.
Ok, that's what I was getting at...the CMCON thing.
Post your code... I can guess all day...but quite frankly, I'm not going to.
And if you'll notice PortA.3 is a ST type input, whereas PortB.2 is a TTL input (I might have that backwards). So, it's possible that your voltage coming from the switch is marginal. It'll trip the one pin into the other state, but not the other pin.
INCLUDE "MODEDEFS.BAS"
@ DEVICE PIC16F628a,XT_OSC
@ DEVICE pic16F628a, WDT_OFF
@ DEVICE pic16F628a, PWRT_ON
@ DEVICE pic16F628a, MCLR_ON
@ DEVICE pic16F628a, BOD_ON
@ DEVICE pic16F628a, LVP_OFF
@ DEVICE pic16F628a, CPD_OFF
@ DEVICE pic16F628a, PROTECT_OFF
define osc 4
CMCON=%00000111
trisb = %11111011
trisa = %00011111
serpin var portb.2
nokey con %11111111
synch con 254
address con %1010101010101010
address1 con %1010101010101010
tx var byte
keyin var portb
keydata var byte
E VAR PORTB.0
D VAR PORTB.1
G VAR PORTA.3
A VAR PORTB.3
B VAR PORTB.4
C VAR PORTB.5
F VAR PORTB.6
na VAR PORTB.7
PreAmble CON $A5
Initialize:
keydata = %00000000
tx = 0
repeat
serout2 serpin,16572,[$AA,$AA,$AA,$AA,$AA,$AA,synch,address,address1,_
keydata,keydata]
tx = tx + 1
until tx > 120 || keyin != nokey
goto findkey
findkey:
if keyin != nokey then pressed
goto findkey
pressed:
if A = 0 then
keydata.3 = 1
else
keydata.3 = 0
endif
if B = 0 then
keydata.4 = 1
else
keydata.4 = 0
endif
if C = 0 then
keydata.5 = 1
else
keydata.5 = 0
endif
if D = 0 then
keydata.1 = 1
else
keydata.1 = 0
endif
if E = 0 then
keydata.0 = 1
else
keydata.0 = 0
endif
if F = 0 then
keydata.6 = 1
else
keydata.6 = 0
endif
if G = 0 then
keydata.2 = 1
else
keydata.2 = 0
endif
gosub transmit
goto findkey
end ' IS THIS NECESSARY??????????
transmit:
serout2 serpin,16572,[$AA,$AA,$AA,$AA,$AA,$AA,synch,address,address1,_
keydata,keydata]
return
Looks like a lot more switches than just PortB.3...
yes, you are correct but when I deleted them all but that one for testing, well you understand. Anyhow I am back to the original will porta serpin and the switch on portb, all seems well, BTW, about using MCLR and WDT when I set the config bits, other than the PBP manual that basically says to pull the MCLR high with a 4.7k what determines when to use it and I read here on the form PBP by default keeps clearing the watchdog, but also when should I be using that. Skimask, please don't say read the manual because page 8 says in general it should be on. I would like to know where I can find more specifics.
Thanks for your help and time Skimask
Bookmarks