Dependencies:   mbed

Committer:
gsionek
Date:
Tue Apr 24 15:50:08 2012 +0000
Revision:
0:7ccc94242357
Child:
1:ef7be3d55009
prog test etudiant polytech

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gsionek 0:7ccc94242357 1 #include "i2c_test.h"
gsionek 0:7ccc94242357 2
gsionek 0:7ccc94242357 3 I2C i2cMaster(p28, p27);
gsionek 0:7ccc94242357 4 I2CSlave i2cSlave(p9,p10);
gsionek 0:7ccc94242357 5
gsionek 0:7ccc94242357 6 const int spiAddr = 0xA0;
gsionek 0:7ccc94242357 7 volatile int attente;
gsionek 0:7ccc94242357 8 volatile int pute;
gsionek 0:7ccc94242357 9
gsionek 0:7ccc94242357 10 void testI2C()
gsionek 0:7ccc94242357 11 {
gsionek 0:7ccc94242357 12 attente = 0;
gsionek 0:7ccc94242357 13 pute = 1;
gsionek 0:7ccc94242357 14 i2cMaster.frequency(100000);
gsionek 0:7ccc94242357 15 i2cSlave.frequency(100000);
gsionek 0:7ccc94242357 16 i2cSlave.address(0xA0);
gsionek 0:7ccc94242357 17
gsionek 0:7ccc94242357 18 Thread tSlave(i2cSlaveTask);
gsionek 0:7ccc94242357 19 Thread tMaster(i2cMasterTask);
gsionek 0:7ccc94242357 20 //printf("helo1");
gsionek 0:7ccc94242357 21 //int i =0;
gsionek 0:7ccc94242357 22 //wait(5);
gsionek 0:7ccc94242357 23 //do{
gsionek 0:7ccc94242357 24 //printf("ha\n\r");
gsionek 0:7ccc94242357 25 //}while(attente == 0);
gsionek 0:7ccc94242357 26 printf("helo2\n\r");
gsionek 0:7ccc94242357 27 }
gsionek 0:7ccc94242357 28
gsionek 0:7ccc94242357 29 void i2cMasterTask(void const* arg)
gsionek 0:7ccc94242357 30 {
gsionek 0:7ccc94242357 31 char test[] = "MASTER";
gsionek 0:7ccc94242357 32 char buf[32];
gsionek 0:7ccc94242357 33
gsionek 0:7ccc94242357 34 wait(1);
gsionek 0:7ccc94242357 35 i2cMaster.write(spiAddr, test, (strlen(test)+1));
gsionek 0:7ccc94242357 36 wait(1);
gsionek 0:7ccc94242357 37 for(int j = 0; j < 64; j++) buf[j] = 0; /*effacer le buffer*/
gsionek 0:7ccc94242357 38 i2cMaster.read(spiAddr, buf, sizeof(buf));
gsionek 0:7ccc94242357 39 if( !strcmp(buf, "MASTER SLAVE") ) printf("TESTE DE PUTE OK\n\r");
gsionek 0:7ccc94242357 40
gsionek 0:7ccc94242357 41 attente++;
gsionek 0:7ccc94242357 42 pute = 0;
gsionek 0:7ccc94242357 43 printf("helo3\n\r");
gsionek 0:7ccc94242357 44 }
gsionek 0:7ccc94242357 45
gsionek 0:7ccc94242357 46
gsionek 0:7ccc94242357 47 void i2cSlaveTask(void const* arg)
gsionek 0:7ccc94242357 48 {
gsionek 0:7ccc94242357 49 char send[64];
gsionek 0:7ccc94242357 50 char rec[64];
gsionek 0:7ccc94242357 51
gsionek 0:7ccc94242357 52 strcpy(send,"");
gsionek 0:7ccc94242357 53 while(pute) {
gsionek 0:7ccc94242357 54 for(int j = 0; j < 64; j++) rec[j] = 0; /*effacer le buffer*/
gsionek 0:7ccc94242357 55 switch ( i2cSlave.receive() ) {
gsionek 0:7ccc94242357 56 case I2CSlave::ReadAddressed :
gsionek 0:7ccc94242357 57 //pc.printf("I2CSlave::ReadAddressed\n\r");
gsionek 0:7ccc94242357 58 i2cSlave.write(send, strlen(send) + 1);
gsionek 0:7ccc94242357 59 break;
gsionek 0:7ccc94242357 60
gsionek 0:7ccc94242357 61 case I2CSlave::WriteGeneral :
gsionek 0:7ccc94242357 62 //pc.printf("I2CSlave::WriteGeneral\n\r");
gsionek 0:7ccc94242357 63 i2cSlave.read(rec, sizeof(rec));
gsionek 0:7ccc94242357 64 strcpy(send,rec);
gsionek 0:7ccc94242357 65 strcat(send," SLAVE");
gsionek 0:7ccc94242357 66 break;
gsionek 0:7ccc94242357 67
gsionek 0:7ccc94242357 68 case I2CSlave::WriteAddressed :
gsionek 0:7ccc94242357 69 //pc.printf("I2CSlave::WriteAddressed\n\r");
gsionek 0:7ccc94242357 70 i2cSlave.read(rec, sizeof(rec));
gsionek 0:7ccc94242357 71 strcpy(send,rec);
gsionek 0:7ccc94242357 72 strcat(send," SLAVE");
gsionek 0:7ccc94242357 73 break;
gsionek 0:7ccc94242357 74 default :
gsionek 0:7ccc94242357 75 break;
gsionek 0:7ccc94242357 76 }
gsionek 0:7ccc94242357 77 }
gsionek 0:7ccc94242357 78 printf("SLAVE FINI!\n\r");
gsionek 0:7ccc94242357 79 }