![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
i2c_test.cpp@0:7ccc94242357, 2012-04-24 (annotated)
- 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?
User | Revision | Line number | New 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 | } |