[ PedjaZ @ 28.12.2013. 10:26 ] @
Nigde ne mogu naci neki konkretan primer kako je odradjen SPI za ovaj A/D (10 bitni). 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 [Ovu poruku je menjao PedjaZ dana 28.12.2013. u 18:00 GMT+1] |