i2c master with interrupt

Dependencies:   mbed

Fork of freemaster2_1 by Seeker of Truth ,

main.cpp

Committer:
greenroshks
Date:
2014-12-10
Revision:
2:2dd5bd9a64fb
Parent:
1:8e4b5e1f8039

File content as of revision 2:2dd5bd9a64fb:

#include "mbed.h"

const int addr = 0x20;                     //slave address 
I2C master (D14,D15);                      //configure pins p27,p28 as I2C master
Serial pc (USBTX,USBRX);
DigitalOut interrupt(D9);
InterruptIn data_ready(D10);
void FUNC_I2C_MASTER()
{
    //printf("press backspace for master to start \n\r");
    //while(1){
      //  interrupt = 0;
      //  if(pc.getc()=='z'){
            interrupt = 1;
            printf("\nEntered master function\n");
            int ack0 =true; 
            char *data =  new char;
            *data = 'b';
            bool loopvariable0 = true;
             master.frequency(100000);                       //set clock frequency
             //master.start();
            while(ack0)
            {
                //printf("2 master clk freq setup and addressing slave\n\r");
                
                master.start();                                 //initiating the data transfer
                ack0 =  master.read(addr,data,1);
            }
            if(!ack0)
            {
                    printf("\n master has read %c from slave\n\r",*data);
                    loopvariable0=false;
            }
                //master.stop();
            
            //printf("done\n\r");
            delete data;
            interrupt=0;
}
void main()
{
    data_ready.rise(&FUNC_I2C_MASTER);
    printf("\nstarted master\n");
    while(1)
    {
        ;
    }
}