00001
00002
00003
00004 #include "piccolo_all.h"
00005 #include "piccolo_spi.h"
00006 #include "delays.h"
00007 #include "timers.h"
00008
00009
00031 #define MCP23017ADDR 0x40 //MCP23017 címe, ha mindegyik címvezérlő láb földre van kötve
00032
00033
00034
00035 #define SLAVE_ENABLE() mLED_4 = 0 //Slave kiválasztása
00036 #define SLAVE_DISABLE() mLED_4 = 1 //Slave eszköz letiltása
00037
00038 #define spi_write3(a,b,c) {SLAVE_ENABLE(); \
00039 spi_io(a); \
00040 spi_io(b); \
00041 spi_io(c); \
00042 SLAVE_DISABLE(); }
00043
00047 void delay_ms(unsigned int d) {
00048 unsigned int i;
00049 for(i=0; i<d; i++) {
00050 Delay1KTCYx(12);
00051 }
00052 }
00053
00054 void main (void) {
00055 uint8 a_dat=0xF0,b_dat=0x55;
00056 DISABLE_ALL_ANALOG();
00057 mInitAllLEDs();
00058 LEDport = 0x0F;
00059 SLAVE_DISABLE();
00060 TRISBbits.TRISB7=0;
00061 PR2 = 4;
00062 OpenTimer2(TIMER_INT_OFF | T2_PS_1_1 | T2_POST_1_11 );
00063
00064
00065 spi_init(CKP_ACTIVE_HIGH |
00066 MASTER_TMR2,
00067 SPI_CKE_ON |
00068 SPI_SMP_END);
00069 while (1) {
00070 spi_write3(MCP23017ADDR,a_dat,b_dat);
00071 Delay100TCYx(12);
00072 LATBbits.LATB7=~LATBbits.LATB7;
00073 }
00074 }