Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:e24b497adfce, 2014-10-13 (annotated)
- Committer:
- dwini
- Date:
- Mon Oct 13 13:27:05 2014 +0000
- Revision:
- 0:e24b497adfce
- Child:
- 1:e8ff4ff5a726
Working i2c communication channel
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| dwini | 0:e24b497adfce | 1 | #include "mbed.h" |
| dwini | 0:e24b497adfce | 2 | |
| dwini | 0:e24b497adfce | 3 | DigitalOut myled(LED1); |
| dwini | 0:e24b497adfce | 4 | Serial pc(USBTX, USBRX); // tx, rx |
| dwini | 0:e24b497adfce | 5 | I2CSlave slave(p28, p27); |
| dwini | 0:e24b497adfce | 6 | |
| dwini | 0:e24b497adfce | 7 | const int SLAVE_ADDRESS = 0x85; |
| dwini | 0:e24b497adfce | 8 | const int MEMORY_SIZE = 16; |
| dwini | 0:e24b497adfce | 9 | |
| dwini | 0:e24b497adfce | 10 | int memory[MEMORY_SIZE]; |
| dwini | 0:e24b497adfce | 11 | |
| dwini | 0:e24b497adfce | 12 | void initializeMemory(void) |
| dwini | 0:e24b497adfce | 13 | { |
| dwini | 0:e24b497adfce | 14 | for (int i = 0; i < MEMORY_SIZE; i++) { |
| dwini | 0:e24b497adfce | 15 | memory[i] = 0; |
| dwini | 0:e24b497adfce | 16 | } |
| dwini | 0:e24b497adfce | 17 | } |
| dwini | 0:e24b497adfce | 18 | |
| dwini | 0:e24b497adfce | 19 | int main() { |
| dwini | 0:e24b497adfce | 20 | pc.baud(115200); |
| dwini | 0:e24b497adfce | 21 | pc.printf("I am the slave device (SLAVE_ADDRESS = 0x%x)\r\n", SLAVE_ADDRESS); |
| dwini | 0:e24b497adfce | 22 | pc.printf("Size of integer is %d bytes\r\n", sizeof(int)); |
| dwini | 0:e24b497adfce | 23 | pc.printf("Size of memory buffer is %d elements\r\n", MEMORY_SIZE); |
| dwini | 0:e24b497adfce | 24 | |
| dwini | 0:e24b497adfce | 25 | // Make sure memory buffer is zeroed |
| dwini | 0:e24b497adfce | 26 | initializeMemory(); |
| dwini | 0:e24b497adfce | 27 | |
| dwini | 0:e24b497adfce | 28 | |
| dwini | 0:e24b497adfce | 29 | char buffer[10]; |
| dwini | 0:e24b497adfce | 30 | char msg[] = "Slave!"; |
| dwini | 0:e24b497adfce | 31 | |
| dwini | 0:e24b497adfce | 32 | slave.address(SLAVE_ADDRESS); |
| dwini | 0:e24b497adfce | 33 | |
| dwini | 0:e24b497adfce | 34 | while (1) { |
| dwini | 0:e24b497adfce | 35 | int i = slave.receive(); |
| dwini | 0:e24b497adfce | 36 | switch (i) { |
| dwini | 0:e24b497adfce | 37 | case I2CSlave::ReadAddressed: |
| dwini | 0:e24b497adfce | 38 | pc.printf("Slave received command: %d [ReadAddressed]\r\n", i); |
| dwini | 0:e24b497adfce | 39 | |
| dwini | 0:e24b497adfce | 40 | if (slave.write(msg, strlen(msg) + 1) == 0) { |
| dwini | 0:e24b497adfce | 41 | printf("Sending %s to master\r\n", msg); |
| dwini | 0:e24b497adfce | 42 | } |
| dwini | 0:e24b497adfce | 43 | break; |
| dwini | 0:e24b497adfce | 44 | |
| dwini | 0:e24b497adfce | 45 | case I2CSlave::WriteAddressed: |
| dwini | 0:e24b497adfce | 46 | pc.printf("Slave received command: %d [WriteAddressed]\r\n", i); |
| dwini | 0:e24b497adfce | 47 | |
| dwini | 0:e24b497adfce | 48 | if (slave.read(buffer, 10) == 0) { |
| dwini | 0:e24b497adfce | 49 | pc.printf("Received %s from master\r\n", buffer); |
| dwini | 0:e24b497adfce | 50 | } |
| dwini | 0:e24b497adfce | 51 | break; |
| dwini | 0:e24b497adfce | 52 | } |
| dwini | 0:e24b497adfce | 53 | for (int i = 0; i < 10; i++) buffer[i] = 0; // Clear buffer |
| dwini | 0:e24b497adfce | 54 | |
| dwini | 0:e24b497adfce | 55 | /*myled = 1; |
| dwini | 0:e24b497adfce | 56 | wait(1); |
| dwini | 0:e24b497adfce | 57 | myled = 0; |
| dwini | 0:e24b497adfce | 58 | wait(1);*/ |
| dwini | 0:e24b497adfce | 59 | } |
| dwini | 0:e24b497adfce | 60 | } |