master not working
Fork of new_master by
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 //printf("\nhere\n"); 00024 master.frequency(100000); //set clock frequency 00025 master_intrpt = 1; 00026 00027 while(ack0) 00028 { 00029 printf("\nahoy\n"); 00030 ack0 = master.read(addr|1,&slave_data,1); 00031 //printf("\n read "); 00032 } 00033 if(!ack0 ) 00034 { 00035 printf("\n\r master has read %c from slave\n\r",slave_data); 00036 //printf("\n \r %d %d %d %d %d\n",*data_reg,*status_reg,*c1_reg,*c2_reg,*freq_reg); 00037 } 00038 else 00039 { 00040 printf("\n\r data not read by master \n"); 00041 } 00042 master_intrpt = 0; 00043 } 00044 00045 void FUNC_INT() 00046 { 00047 FUNC_I2C_MASTER_READ(); 00048 } 00049 00050 char writedata; 00051 void FUNC_MASTER_WRITE() 00052 { 00053 char data = pc.getc(); 00054 master_intrpt = 1; 00055 master.frequency(100000); 00056 while(ack1) 00057 { 00058 printf("write"); 00059 ack1 = (bool) master.write(addr|0x00,&writedata,1); 00060 } 00061 //if(!ack1 ) 00062 // { 00063 printf("master has written %c to slave\n\r",writedata); 00064 //printf("\n \r %d %d %d %d %d\n",*data_reg,*status_reg,*c1_reg,*c2_reg,*freq_reg); 00065 /* } 00066 else 00067 { 00068 printf("\n\r data not written to slave \n"); 00069 master_intrpt = 0; 00070 //printf("\n \r %d %d %d %d %d\n",*data_reg,*status_reg,*c1_reg,*c2_reg,*freq_reg); 00071 }*/ 00072 } 00073 00074 00075 int main() 00076 { 00077 printf("\nstarted master\n"); 00078 master_intrpt = 0; 00079 slave_intrpt.rise(&FUNC_INT); 00080 00081 //master.start(); 00082 while(1) 00083 { 00084 FUNC_MASTER_WRITE(); 00085 00086 } 00087 }
Generated on Thu Aug 4 2022 14:43:04 by
1.7.2
