slave not working
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 I2CSlave slave(D14,D15); //configuring pins p27, p28 as I2Cslave 00003 Serial pc (USBTX,USBRX); 00004 InterruptIn master_intrpt(D9); 00005 00006 DigitalOut slave_intrpt(D10); 00007 00008 int ack0 = 1; 00009 int ack1 = 1; //read/write mode for i2c 0 : write2slave, 1 : write2master 00010 00011 00012 char writedata; 00013 char readdata; 00014 00015 void FUNC_I2C_WRITE2CDMS() 00016 { 00017 00018 slave.address(0x20); 00019 while(ack0==1) 00020 { 00021 if(slave.receive()==1) 00022 { 00023 ack0=slave.write(&writedata,1); 00024 00025 00026 } 00027 else if(slave.receive()==3 || slave.receive()==2) 00028 { 00029 ack1=slave.read(&readdata,1); 00030 } 00031 } 00032 if(!ack0 ) 00033 { 00034 printf("slave has written %c to slave\n\r",writedata); 00035 //printf("\n \r %d %d %d %d %d\n",*data_reg,*status_reg,*c1_reg,*c2_reg,*freq_reg); 00036 } 00037 else 00038 { 00039 printf("\n\r data not written to slave \n"); 00040 } 00041 if(!ack1 ) 00042 { 00043 printf("slave has read %c to master \n \r",writedata); 00044 //printf("\n \r %d %d %d %d %d\n",*data_reg,*status_reg,*c1_reg,*c2_reg,*freq_reg); 00045 } 00046 else 00047 { 00048 printf("\n\r data not read from master \n"); 00049 } 00050 } 00051 00052 00053 void FUNC_INT() 00054 { 00055 00056 FUNC_I2C_WRITE2CDMS(); 00057 slave_intrpt = 0; 00058 } 00059 00060 00061 00062 00063 00064 int main() 00065 { 00066 printf("\n slave started\n\r"); 00067 00068 master_intrpt.rise(&FUNC_INT); 00069 while(1) 00070 { 00071 writedata = pc.getc(); 00072 slave_intrpt=1; 00073 00074 } 00075 00076 } 00077
Generated on Sat Jul 23 2022 23:01:53 by
1.7.2