Seeker of Truth , / Mbed 2 deprecated freemaster_write2master_working

Dependencies:   mbed

Fork of freemaster_write2master_working by green rosh

Committer:
raizel_varun
Date:
Fri Dec 12 08:53:06 2014 +0000
Revision:
3:c810e140a6bf
Parent:
2:2dd5bd9a64fb
Child:
4:0b714f858ed2
dfdsf

Who changed what in which revision?

UserRevisionLine numberNew contents of line
viswachaitanya 0:9ea68477caaf 1 #include "mbed.h"
viswachaitanya 0:9ea68477caaf 2
viswachaitanya 0:9ea68477caaf 3 const int addr = 0x20; //slave address
viswachaitanya 0:9ea68477caaf 4 I2C master (D14,D15); //configure pins p27,p28 as I2C master
viswachaitanya 0:9ea68477caaf 5 Serial pc (USBTX,USBRX);
greenroshks 2:2dd5bd9a64fb 6 DigitalOut interrupt(D9);
greenroshks 2:2dd5bd9a64fb 7 InterruptIn data_ready(D10);
raizel_varun 3:c810e140a6bf 8
raizel_varun 3:c810e140a6bf 9
raizel_varun 3:c810e140a6bf 10
greenroshks 2:2dd5bd9a64fb 11 void FUNC_I2C_MASTER()
viswachaitanya 0:9ea68477caaf 12 {
greenroshks 2:2dd5bd9a64fb 13 //printf("press backspace for master to start \n\r");
greenroshks 2:2dd5bd9a64fb 14 //while(1){
raizel_varun 3:c810e140a6bf 15 //interrupt = 0;
greenroshks 2:2dd5bd9a64fb 16 // if(pc.getc()=='z'){
raizel_varun 3:c810e140a6bf 17 wait(0.5);
greenroshks 2:2dd5bd9a64fb 18 interrupt = 1;
raizel_varun 3:c810e140a6bf 19 printf("\nMaster executed\n");
raizel_varun 3:c810e140a6bf 20
raizel_varun 3:c810e140a6bf 21
raizel_varun 3:c810e140a6bf 22 bool ack0 =true;
raizel_varun 3:c810e140a6bf 23 bool loopvariable0 =true;
viswachaitanya 0:9ea68477caaf 24 char *data = new char;
viswachaitanya 0:9ea68477caaf 25 *data = 'b';
raizel_varun 3:c810e140a6bf 26
raizel_varun 3:c810e140a6bf 27
raizel_varun 3:c810e140a6bf 28
raizel_varun 1:8e4b5e1f8039 29 master.frequency(100000); //set clock frequency
raizel_varun 1:8e4b5e1f8039 30 //master.start();
raizel_varun 3:c810e140a6bf 31 /*while(write2slave)
raizel_varun 3:c810e140a6bf 32 { *writedata = pc.getc();
raizel_varun 3:c810e140a6bf 33 wait(0.5);
raizel_varun 3:c810e140a6bf 34
raizel_varun 3:c810e140a6bf 35 printf("master clk freq setup and addressing slave\n\r");
raizel_varun 3:c810e140a6bf 36 master.start(); //initiating the data transfer
raizel_varun 3:c810e140a6bf 37 master_status_write = (bool) master.write(addr|0x00,writedata,1);
raizel_varun 3:c810e140a6bf 38 if(master_status_write==0)
raizel_varun 3:c810e140a6bf 39 {
raizel_varun 3:c810e140a6bf 40 printf("master has written %c to slave\n\r",*writedata);
raizel_varun 3:c810e140a6bf 41 write2slave=false;
raizel_varun 3:c810e140a6bf 42 }
raizel_varun 3:c810e140a6bf 43
raizel_varun 3:c810e140a6bf 44
raizel_varun 3:c810e140a6bf 45 }*/
raizel_varun 3:c810e140a6bf 46
greenroshks 2:2dd5bd9a64fb 47 while(ack0)
greenroshks 2:2dd5bd9a64fb 48 {
raizel_varun 1:8e4b5e1f8039 49 //printf("2 master clk freq setup and addressing slave\n\r");
greenroshks 2:2dd5bd9a64fb 50
viswachaitanya 0:9ea68477caaf 51 master.start(); //initiating the data transfer
greenroshks 2:2dd5bd9a64fb 52 ack0 = master.read(addr,data,1);
greenroshks 2:2dd5bd9a64fb 53 }
greenroshks 2:2dd5bd9a64fb 54 if(!ack0)
greenroshks 2:2dd5bd9a64fb 55 {
greenroshks 2:2dd5bd9a64fb 56 printf("\n master has read %c from slave\n\r",*data);
viswachaitanya 0:9ea68477caaf 57 loopvariable0=false;
viswachaitanya 0:9ea68477caaf 58 }
greenroshks 2:2dd5bd9a64fb 59 //master.stop();
greenroshks 2:2dd5bd9a64fb 60
greenroshks 2:2dd5bd9a64fb 61 //printf("done\n\r");
greenroshks 2:2dd5bd9a64fb 62 delete data;
greenroshks 2:2dd5bd9a64fb 63 interrupt=0;
raizel_varun 3:c810e140a6bf 64 }
raizel_varun 3:c810e140a6bf 65
raizel_varun 3:c810e140a6bf 66
raizel_varun 3:c810e140a6bf 67 int main()
raizel_varun 3:c810e140a6bf 68 {
greenroshks 2:2dd5bd9a64fb 69 data_ready.rise(&FUNC_I2C_MASTER);
greenroshks 2:2dd5bd9a64fb 70 printf("\nstarted master\n");
raizel_varun 3:c810e140a6bf 71 bool write2slave;
raizel_varun 3:c810e140a6bf 72 char *writedata = new char;
raizel_varun 3:c810e140a6bf 73
raizel_varun 3:c810e140a6bf 74
raizel_varun 3:c810e140a6bf 75 bool master_status_write = true;
greenroshks 2:2dd5bd9a64fb 76 while(1)
raizel_varun 3:c810e140a6bf 77 { write2slave=true;
raizel_varun 3:c810e140a6bf 78 interrupt = 0;
raizel_varun 3:c810e140a6bf 79
raizel_varun 3:c810e140a6bf 80 *writedata = pc.getc();
raizel_varun 3:c810e140a6bf 81
raizel_varun 3:c810e140a6bf 82 interrupt = 1;
raizel_varun 3:c810e140a6bf 83 master.frequency(100000); //set clock frequency
raizel_varun 3:c810e140a6bf 84 while(write2slave)
raizel_varun 3:c810e140a6bf 85 {
raizel_varun 3:c810e140a6bf 86 printf("master clk freq setup and addressing slave\n\r");
raizel_varun 3:c810e140a6bf 87 master.start(); //initiating the data transfer
raizel_varun 3:c810e140a6bf 88 master_status_write = (bool) master.write(addr|0x00,writedata,1);
raizel_varun 3:c810e140a6bf 89 if(master_status_write==0)
raizel_varun 3:c810e140a6bf 90 {
raizel_varun 3:c810e140a6bf 91 printf("master has written %c to slave\n\r",*writedata);
raizel_varun 3:c810e140a6bf 92 write2slave=false;
raizel_varun 3:c810e140a6bf 93 }
raizel_varun 3:c810e140a6bf 94 }
raizel_varun 3:c810e140a6bf 95
viswachaitanya 0:9ea68477caaf 96 }
greenroshks 2:2dd5bd9a64fb 97 }