master not working
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 00004 const int addr = 0x20; //slave address 00005 I2C master (D14,D15); //configure pins p27,p28 as I2C master 00006 Serial pc (USBTX,USBRX); 00007 DigitalOut master_intrpt(D9); 00008 InterruptIn slave_intrpt(D10); 00009 00010 bool ack0 =true; 00011 bool ack1 =true; 00012 00013 00014 unsigned char* data_reg = (unsigned char*)0x40067004; 00015 unsigned char* status_reg = (unsigned char*)0x40067003; 00016 unsigned char* c1_reg = (unsigned char*)0x40067002; 00017 unsigned char* c2_reg = (unsigned char*)0x40067005; 00018 unsigned char* freq_reg = (unsigned char*)0x40067001; 00019 00020 char slave_data; 00021 void FUNC_I2C_MASTER_READ() 00022 { 00023 master.frequency(100000); //set clock frequency 00024 master_intrpt = 1; 00025 while(ack0) 00026 { 00027 ack0 = master.read(addr|1,&slave_data,1); 00028 } 00029 if(!ack0 ) 00030 { 00031 printf("\n\r master has read %c from slave\n\r",slave_data); 00032 //printf("\n \r %d %d %d %d %d\n",*data_reg,*status_reg,*c1_reg,*c2_reg,*freq_reg); 00033 } 00034 else 00035 { 00036 printf("\n\r data not read by master \n"); 00037 } 00038 master_intrpt = 0; 00039 } 00040 00041 void FUNC_INT() 00042 { 00043 FUNC_I2C_MASTER_READ(); 00044 } 00045 00046 char writedata; 00047 void FUNC_MASTER_WRITE() 00048 { 00049 char data = pc.getc(); 00050 master_intrpt = 1; 00051 while(ack1) 00052 { 00053 ack1 = (bool) master.write(addr|0x00,&writedata,1); 00054 } 00055 if(!ack1 ) 00056 { 00057 printf("master has written %c to slave\n\r",writedata); 00058 //printf("\n \r %d %d %d %d %d\n",*data_reg,*status_reg,*c1_reg,*c2_reg,*freq_reg); 00059 } 00060 else 00061 { 00062 printf("\n\r data not written to slave \n"); 00063 master_intrpt = 0; 00064 //printf("\n \r %d %d %d %d %d\n",*data_reg,*status_reg,*c1_reg,*c2_reg,*freq_reg); 00065 } 00066 } 00067 00068 00069 int main() 00070 { 00071 printf("\nstarted master\n"); 00072 master_intrpt = 0; 00073 slave_intrpt.rise(&FUNC_INT); 00074 00075 //master.start(); 00076 while(1) 00077 { 00078 FUNC_MASTER_WRITE(); 00079 00080 } 00081 }
Generated on Thu Aug 25 2022 18:15:22 by
1.7.2