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 12:15:54 2014 +0000
Revision:
4:0b714f858ed2
Parent:
3:c810e140a6bf
H

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 4:0b714f858ed2 8 bool looper;
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 4:0b714f858ed2 17 /*while (looper){
raizel_varun 4:0b714f858ed2 18 wait(0.5);
raizel_varun 4:0b714f858ed2 19 break;}*/
raizel_varun 3:c810e140a6bf 20 wait(0.5);
greenroshks 2:2dd5bd9a64fb 21 interrupt = 1;
raizel_varun 3:c810e140a6bf 22 printf("\nMaster executed\n");
raizel_varun 3:c810e140a6bf 23
raizel_varun 3:c810e140a6bf 24
raizel_varun 3:c810e140a6bf 25 bool ack0 =true;
raizel_varun 3:c810e140a6bf 26 bool loopvariable0 =true;
viswachaitanya 0:9ea68477caaf 27 char *data = new char;
viswachaitanya 0:9ea68477caaf 28 *data = 'b';
raizel_varun 3:c810e140a6bf 29
raizel_varun 3:c810e140a6bf 30
raizel_varun 3:c810e140a6bf 31
raizel_varun 1:8e4b5e1f8039 32 master.frequency(100000); //set clock frequency
raizel_varun 1:8e4b5e1f8039 33 //master.start();
raizel_varun 3:c810e140a6bf 34 /*while(write2slave)
raizel_varun 3:c810e140a6bf 35 { *writedata = pc.getc();
raizel_varun 3:c810e140a6bf 36 wait(0.5);
raizel_varun 3:c810e140a6bf 37
raizel_varun 3:c810e140a6bf 38 printf("master clk freq setup and addressing slave\n\r");
raizel_varun 3:c810e140a6bf 39 master.start(); //initiating the data transfer
raizel_varun 3:c810e140a6bf 40 master_status_write = (bool) master.write(addr|0x00,writedata,1);
raizel_varun 3:c810e140a6bf 41 if(master_status_write==0)
raizel_varun 3:c810e140a6bf 42 {
raizel_varun 3:c810e140a6bf 43 printf("master has written %c to slave\n\r",*writedata);
raizel_varun 3:c810e140a6bf 44 write2slave=false;
raizel_varun 3:c810e140a6bf 45 }
raizel_varun 3:c810e140a6bf 46
raizel_varun 3:c810e140a6bf 47
raizel_varun 3:c810e140a6bf 48 }*/
raizel_varun 3:c810e140a6bf 49
greenroshks 2:2dd5bd9a64fb 50 while(ack0)
greenroshks 2:2dd5bd9a64fb 51 {
raizel_varun 1:8e4b5e1f8039 52 //printf("2 master clk freq setup and addressing slave\n\r");
greenroshks 2:2dd5bd9a64fb 53
viswachaitanya 0:9ea68477caaf 54 master.start(); //initiating the data transfer
greenroshks 2:2dd5bd9a64fb 55 ack0 = master.read(addr,data,1);
greenroshks 2:2dd5bd9a64fb 56 }
greenroshks 2:2dd5bd9a64fb 57 if(!ack0)
greenroshks 2:2dd5bd9a64fb 58 {
raizel_varun 4:0b714f858ed2 59 printf("\n master has read ");
viswachaitanya 0:9ea68477caaf 60 loopvariable0=false;
viswachaitanya 0:9ea68477caaf 61 }
greenroshks 2:2dd5bd9a64fb 62 //master.stop();
greenroshks 2:2dd5bd9a64fb 63
greenroshks 2:2dd5bd9a64fb 64 //printf("done\n\r");
greenroshks 2:2dd5bd9a64fb 65 delete data;
greenroshks 2:2dd5bd9a64fb 66 interrupt=0;
raizel_varun 4:0b714f858ed2 67 looper = false ;
raizel_varun 3:c810e140a6bf 68 }
raizel_varun 3:c810e140a6bf 69
raizel_varun 3:c810e140a6bf 70
raizel_varun 3:c810e140a6bf 71 int main()
raizel_varun 3:c810e140a6bf 72 {
greenroshks 2:2dd5bd9a64fb 73 data_ready.rise(&FUNC_I2C_MASTER);
raizel_varun 4:0b714f858ed2 74 looper = true;
greenroshks 2:2dd5bd9a64fb 75 printf("\nstarted master\n");
raizel_varun 3:c810e140a6bf 76 bool write2slave;
raizel_varun 3:c810e140a6bf 77 char *writedata = new char;
raizel_varun 3:c810e140a6bf 78
raizel_varun 3:c810e140a6bf 79
raizel_varun 3:c810e140a6bf 80 bool master_status_write = true;
greenroshks 2:2dd5bd9a64fb 81 while(1)
raizel_varun 3:c810e140a6bf 82 { write2slave=true;
raizel_varun 3:c810e140a6bf 83 interrupt = 0;
raizel_varun 3:c810e140a6bf 84
raizel_varun 3:c810e140a6bf 85 *writedata = pc.getc();
raizel_varun 3:c810e140a6bf 86
raizel_varun 3:c810e140a6bf 87 interrupt = 1;
raizel_varun 3:c810e140a6bf 88 master.frequency(100000); //set clock frequency
raizel_varun 3:c810e140a6bf 89 while(write2slave)
raizel_varun 3:c810e140a6bf 90 {
raizel_varun 3:c810e140a6bf 91 printf("master clk freq setup and addressing slave\n\r");
raizel_varun 3:c810e140a6bf 92 master.start(); //initiating the data transfer
raizel_varun 3:c810e140a6bf 93 master_status_write = (bool) master.write(addr|0x00,writedata,1);
raizel_varun 3:c810e140a6bf 94 if(master_status_write==0)
raizel_varun 3:c810e140a6bf 95 {
raizel_varun 4:0b714f858ed2 96 printf("master has written");
raizel_varun 3:c810e140a6bf 97 write2slave=false;
raizel_varun 3:c810e140a6bf 98 }
raizel_varun 3:c810e140a6bf 99 }
raizel_varun 3:c810e140a6bf 100
viswachaitanya 0:9ea68477caaf 101 }
greenroshks 2:2dd5bd9a64fb 102 }