-
PIC18F458 Shiftin / Out
Something wrong with the Shiftin Shiftout
I have the following problem with the shiftin / out function.
Pic used is a 18F458
I used the port D to control an ADC Converter LTC1298 (D4-D7)
and 2 relays (D3 D4) and leds (D0 D1)
LEDNIGHT_Status VAR PortDStatus.0
LEDDAY_Status vAR PortDStatus.1
RELAYNIGHT_Status VAR PortDStatus.2
RELAYDAY_Status VAR PortDStatus.3
CS_Status VAR PortDStatus.4
SCLK_Status VAR PortDStatus.5
DIN_Status VAR PortDStatus.6
DOUT_Status VAR PortDStatus.7
All defined as out except PortD.6
To read the ADC value, I used the following command
CS_Status = 0
PORTD = PortDStatus 'Activate the ADC.
shiftout PORTD.7,PORTD.5,lsbfirst,[config\4] 'Send config bits.
shiftin PORTD.6,PORTD.5,msbpost,[Temp_VOLT\12] 'Get data bits.
CS_Status = 1
PORTD = PortDStatus 'Deactivate the ADC.
This works fine but if one of the ouptut D0-3 is set to 1 before the statement, the output will follow the CS_Status during the shifout or shiftin
statement.
Any idea ?
-
In your programm, we see no definition of "PortAStatus" !
Why do you put this undeclared value to PortD ?
-
18F456 shiftin shiftout
I don't use the Port A, so ..
I just tried with another PIC just to see if I didn't had one hardware problem : just the same
I then tried with a 18F452 instead of a 18F458.
With this one , everything just works fine ....
-
you need to disable analog comparator on PORTD<3:0> to avoid odd results first.
CMCON=7
about now?
-
You're right. I forgot this.
I tried again with the 458. It's works fine
Thanks