'18F4431 8MHz INT COUNT 0_359 SPI 060219 1200 Define CONFIG1L = 0x00 Define CONFIG1H = 0x08 'INT OSC Define CONFIG2L = 0x0c Define CONFIG2H = 0x20 Define CONFIG3L = 0x04 Define CONFIG3H = 0x80 Define CONFIG4L = 0x80 'Set for HVP Define CONFIG4H = 0x00 Define CONFIG5L = 0x0f Define CONFIG5H = 0xc0 Define CONFIG6L = 0x0f Define CONFIG6H = 0xe0 Define CONFIG7L = 0x0f Define CONFIG7H = 0x40 Define CLOCK_FREQUENCY = 8 OSCCON = %01110010 'internal 8Mhz clock Define SINGLE_DECIMAL_PLACES = 2 'Define SIMULATION_WAITMS_VALUE = 1 'Comment in for SIM out for PIC AllDigital TRISB = %00000000 'OUT 1=YLED 2=RLED TRISC = %01000000 '6-C/S=IN'SDI [[[HSEROUT appears to work when RC6=1???]]] TRISD = %00001100 '3=SCK=IN,2=SDI=IN, 3=SDO=0 Symbol yled = PORTB.1 Symbol rled = PORTB.2 start: yled = 1 WaitMs 1000 yled = 0 rled = 0 WaitMs 1000 QEICON = %00011011 'QEI enabled in 4x Update mode; position TIME is reset on period match (POSCNT = MAXCNT IPR3.IC2QEIP = 1 'high pri intr QEI Interrupt priority bit PIE3.IC2QEIE = 1 'qei intr enb QEI Interrupt flag eneble bit PIR3.IC2QEIF = 0 'Has reached the MAXCNT value, INT QEI MODULE Interrupt flag bit PIR3.IC3DRIF = 0 'clr in s/w REG file motion feedback filter(NOT USED)??????????? CAP2BUFL = 0x00 'POSCNT from quad signals, preload L0000 CAP2BUFH = 0x00 'POSCNT from quad signals, preload H0000 CAP3BUFL = 0x67 '359L' 0xfd '###MAXCNT, preload with [3581 Gbox correction] degrees [actual 359deg] CAP3BUFH = 0x01 '359H' 0x0d '###MAXCNT, preload with ???? degrees [actual ???deg] WaitUs 100 Hseropen 9600 WaitMs 100 'SPI SSPCON = %00100100 'SPI Control register: 5=SPI EN,3210= 0100 (SPI SLAVE,SCK PIN,SS PIN EN) 'SSPSTAT = %00000000 'Define SPI_CS_REG = PORTC '[used when in slave mode] 'Define SPI_CS_BIT = 6 '[used when in slave mode] 'Define SPI_SCK_REG = PORTD 'Define SPI_SCK_BIT = 3 'Define SPI_SDI_REG = PORTD 'Define SPI_SDI_BIT = 2 'Define SPI_SDO_REG = PORTD 'Define SPI_SDO_BIT = 1 'WaitMs 100 'SPIPrepare verify_uart: Hserout "TEST = ", CrLf yled = 0 Dim azi As Word Dim lbhb As Byte 'In the slave loop: 'get the azi.lb from QEI here get_count: WaitMs 1000 Toggle rled ''If SSPSTAT.BF = 1 Then Hserout "SSPBUF=", #SSPBUF, " ", "AZI.LB", #azi.LB, CrLf lbhb = SSPBUF If lbhb = 5 Then SSPBUF = azi.LB Else Goto loop Endif Goto get_count End