Ono sto sam sastavio nalazi se u sledecem ali nista ne dobijam na "DataIn = SSPBUF".
Na oscilosopu u Proteusu mi se cini da je sve OK.
Pic je PIC18F6722
Gde gresim?
Code:
DEFINE OSC 8
' REGISTERS AND PINOUT ( 1 = IN; 0 = OUT )
' ================================================================
'76543210
TRISD = %00000000 'mora ovo zbog nCS
TRISC = 0 '0 set PORTC I/O
ADCON1 = 7 ' Set PORTA and PORTE to digital
SSPEN VAR SSP1CON1.5 ' SSP Enable bit 5
CKP VAR SSP1CON1.4 ' Clock Polarity Select 4
SMP VAR SSP1STAT.7 ' Data input sample phase
CKE VAR SSP1STAT.6 ' Clock Edge Select bit
SSPIF VAR PIR1.3 ' SPI interrupt flag
' VARIABLES & COSTANTS
' ================================================================
DataIn VAR BYTE
DataIn2 VAR BYTE
nCS VAR PORTD.0
SSPEN = 1 '1 enable SPI pins 1
CKP = 1 '0 clock idle low 0
CKE = 0 '0 transmit on idle to active transition
SSPIF = 0 '0 clear buffer full status
SMP = 0 '0 sample in middle of data
'proba
probalcd2 var byte
probalcd2 = %01010101
TRISE = %00000000
' PROGRAM INIT
' ================================================================
Pause 500 ' Wait for LCD to start up
' Lcdout $fe, 1 , bin probalcd2
' Lcdout $fe, $c0, dec probalcd2
mainloop:
GoSub getdata ' initiate conversion and receive data
'LCDOut $fe, 1 , bin DataIn ' display received string
'Lcdout $fe, $c0, bin DataIn2
Pause 300
GoTo mainloop ' do it forever
getdata:
nCS = 0
SSPBUF = 0 'Send something
SSPIF = 0
WHILE SSPIF=0 : WEND
DataIn = SSPBUF 'Data received
SSPBUF = 0 'Send something
SSPIF = 0
WHILE SSPIF=0 : WEND
DataIn2 = SSPBUF 'Data received
nCS = 1
porte=datain2
Return
End
DEFINE OSC 8
' REGISTERS AND PINOUT ( 1 = IN; 0 = OUT )
' ================================================================
'76543210
TRISD = %00000000 'mora ovo zbog nCS
TRISC = 0 '0 set PORTC I/O
ADCON1 = 7 ' Set PORTA and PORTE to digital
SSPEN VAR SSP1CON1.5 ' SSP Enable bit 5
CKP VAR SSP1CON1.4 ' Clock Polarity Select 4
SMP VAR SSP1STAT.7 ' Data input sample phase
CKE VAR SSP1STAT.6 ' Clock Edge Select bit
SSPIF VAR PIR1.3 ' SPI interrupt flag
' VARIABLES & COSTANTS
' ================================================================
DataIn VAR BYTE
DataIn2 VAR BYTE
nCS VAR PORTD.0
SSPEN = 1 '1 enable SPI pins 1
CKP = 1 '0 clock idle low 0
CKE = 0 '0 transmit on idle to active transition
SSPIF = 0 '0 clear buffer full status
SMP = 0 '0 sample in middle of data
'proba
probalcd2 var byte
probalcd2 = %01010101
TRISE = %00000000
' PROGRAM INIT
' ================================================================
Pause 500 ' Wait for LCD to start up
' Lcdout $fe, 1 , bin probalcd2
' Lcdout $fe, $c0, dec probalcd2
mainloop:
GoSub getdata ' initiate conversion and receive data
'LCDOut $fe, 1 , bin DataIn ' display received string
'Lcdout $fe, $c0, bin DataIn2
Pause 300
GoTo mainloop ' do it forever
getdata:
nCS = 0
SSPBUF = 0 'Send something
SSPIF = 0
WHILE SSPIF=0 : WEND
DataIn = SSPBUF 'Data received
SSPBUF = 0 'Send something
SSPIF = 0
WHILE SSPIF=0 : WEND
DataIn2 = SSPBUF 'Data received
nCS = 1
porte=datain2
Return
End
[Ovu poruku je menjao PedjaZ dana 28.12.2013. u 18:00 GMT+1]