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.
Dependencies: mbed
main.cpp@0:942156b7d5e8, 2014-11-19 (annotated)
- Committer:
- rrbeauch
- Date:
- Wed Nov 19 22:34:10 2014 +0000
- Revision:
- 0:942156b7d5e8
- Child:
- 1:d03710f41041
Mother I2C can receive and send ACK not working very well
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rrbeauch | 0:942156b7d5e8 | 1 | #include "mbed.h" |
rrbeauch | 0:942156b7d5e8 | 2 | |
rrbeauch | 0:942156b7d5e8 | 3 | //------------------------------------------------------- |
rrbeauch | 0:942156b7d5e8 | 4 | //Title: main.cpp |
rrbeauch | 0:942156b7d5e8 | 5 | //Author: Richard Beauchemin |
rrbeauch | 0:942156b7d5e8 | 6 | //Date: 11/17/2014 |
rrbeauch | 0:942156b7d5e8 | 7 | //Description: Motherboard I2C communication test. |
rrbeauch | 0:942156b7d5e8 | 8 | //------------------------------------------------------- |
rrbeauch | 0:942156b7d5e8 | 9 | |
rrbeauch | 0:942156b7d5e8 | 10 | //------------------------------------------------------- |
rrbeauch | 0:942156b7d5e8 | 11 | //Global Variables |
rrbeauch | 0:942156b7d5e8 | 12 | I2C mI2C(p28,p27); |
rrbeauch | 0:942156b7d5e8 | 13 | DigitalOut sendLED(LED1); |
rrbeauch | 0:942156b7d5e8 | 14 | DigitalOut receiveLED(LED2); |
rrbeauch | 0:942156b7d5e8 | 15 | int dCardAddress = 0x02; |
rrbeauch | 0:942156b7d5e8 | 16 | //char msg[6] = {'(','T','E','S','T',')'}; |
rrbeauch | 0:942156b7d5e8 | 17 | char msg[2]; |
rrbeauch | 0:942156b7d5e8 | 18 | //------------------------------------------------------- |
rrbeauch | 0:942156b7d5e8 | 19 | |
rrbeauch | 0:942156b7d5e8 | 20 | //------------------------------------------------------- |
rrbeauch | 0:942156b7d5e8 | 21 | //Function Declarations |
rrbeauch | 0:942156b7d5e8 | 22 | int writeCell(int,char*); |
rrbeauch | 0:942156b7d5e8 | 23 | int writeRow(int,char[],int); |
rrbeauch | 0:942156b7d5e8 | 24 | //------------------------------------------------------- |
rrbeauch | 0:942156b7d5e8 | 25 | |
rrbeauch | 0:942156b7d5e8 | 26 | int writeCell(int address, char* data) |
rrbeauch | 0:942156b7d5e8 | 27 | { |
rrbeauch | 0:942156b7d5e8 | 28 | return mI2C.write((address),data,1,0); |
rrbeauch | 0:942156b7d5e8 | 29 | } |
rrbeauch | 0:942156b7d5e8 | 30 | |
rrbeauch | 0:942156b7d5e8 | 31 | int writeRow(int address, char data[], int length) |
rrbeauch | 0:942156b7d5e8 | 32 | { |
rrbeauch | 0:942156b7d5e8 | 33 | int ACK = 1; |
rrbeauch | 0:942156b7d5e8 | 34 | while(length) |
rrbeauch | 0:942156b7d5e8 | 35 | { |
rrbeauch | 0:942156b7d5e8 | 36 | ACK &= writeCell(address,&data[length - 1]); |
rrbeauch | 0:942156b7d5e8 | 37 | length--; |
rrbeauch | 0:942156b7d5e8 | 38 | } |
rrbeauch | 0:942156b7d5e8 | 39 | return ACK; |
rrbeauch | 0:942156b7d5e8 | 40 | } |
rrbeauch | 0:942156b7d5e8 | 41 | |
rrbeauch | 0:942156b7d5e8 | 42 | |
rrbeauch | 0:942156b7d5e8 | 43 | int main() |
rrbeauch | 0:942156b7d5e8 | 44 | { |
rrbeauch | 0:942156b7d5e8 | 45 | sendLED = 0; |
rrbeauch | 0:942156b7d5e8 | 46 | receiveLED = 0; |
rrbeauch | 0:942156b7d5e8 | 47 | //mI2C.frequency(100000); |
rrbeauch | 0:942156b7d5e8 | 48 | int data = 0x0001; |
rrbeauch | 0:942156b7d5e8 | 49 | while(1) |
rrbeauch | 0:942156b7d5e8 | 50 | { |
rrbeauch | 0:942156b7d5e8 | 51 | mI2C.write(data); |
rrbeauch | 0:942156b7d5e8 | 52 | sendLED = 1; |
rrbeauch | 0:942156b7d5e8 | 53 | mI2C.read((dCardAddress),msg,2,0); |
rrbeauch | 0:942156b7d5e8 | 54 | if(msg[0] || msg[1]) |
rrbeauch | 0:942156b7d5e8 | 55 | { |
rrbeauch | 0:942156b7d5e8 | 56 | receiveLED = 1; |
rrbeauch | 0:942156b7d5e8 | 57 | msg[0] = 0; |
rrbeauch | 0:942156b7d5e8 | 58 | msg[1] = 0; |
rrbeauch | 0:942156b7d5e8 | 59 | } |
rrbeauch | 0:942156b7d5e8 | 60 | |
rrbeauch | 0:942156b7d5e8 | 61 | wait(0.5); |
rrbeauch | 0:942156b7d5e8 | 62 | sendLED = 0; |
rrbeauch | 0:942156b7d5e8 | 63 | receiveLED = 0; |
rrbeauch | 0:942156b7d5e8 | 64 | } |
rrbeauch | 0:942156b7d5e8 | 65 | /*receiveLED = writeRow(dCardAddress, msg, 6); |
rrbeauch | 0:942156b7d5e8 | 66 | while(1) |
rrbeauch | 0:942156b7d5e8 | 67 | { |
rrbeauch | 0:942156b7d5e8 | 68 | sendLED = 1; |
rrbeauch | 0:942156b7d5e8 | 69 | wait(0.2); |
rrbeauch | 0:942156b7d5e8 | 70 | sendLED = 0; |
rrbeauch | 0:942156b7d5e8 | 71 | }*/ |
rrbeauch | 0:942156b7d5e8 | 72 | } |