slave not working
Fork of new_slave by
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) 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 ack0=slave.read(&readdata,1); 00030 } 00031 printf("loop"); 00032 } 00033 // if(!ack0 ) 00034 //{ 00035 printf("\ndata writen %d\n\r",writedata); 00036 printf("\n\r data read %d \n",readdata); 00037 //printf("\n \r %d %d %d %d %d\n",*data_reg,*status_reg,*c1_reg,*c2_reg,*freq_reg); 00038 /* } 00039 else 00040 { 00041 printf("\n\r data not written to slave \n"); 00042 }*/ 00043 00044 } 00045 00046 00047 void FUNC_INT() 00048 { 00049 00050 FUNC_I2C_WRITE2CDMS(); 00051 slave_intrpt = 0; 00052 } 00053 00054 00055 00056 00057 00058 int main() 00059 { 00060 printf("\n slave started\n\r"); 00061 slave_intrpt = 0; 00062 master_intrpt.rise(&FUNC_INT); 00063 while(1) 00064 { 00065 writedata = pc.getc(); 00066 slave_intrpt=1; 00067 00068 } 00069 00070 } 00071
Generated on Fri Aug 26 2022 17:31:22 by
1.7.2
