Richard Hoekstra
/
TLS2-Motorcontroller_v2
De motorcontroller van het TLS2 project.
main.cpp@1:9e6c4011eef6, 2016-11-16 (annotated)
- Committer:
- RichardHoekstra
- Date:
- Wed Nov 16 15:30:21 2016 +0000
- Revision:
- 1:9e6c4011eef6
- Parent:
- 0:48c10918dabf
- Child:
- 2:b9449fc96691
Motorcontroller I2C is ready and the switch statement is ready to work with codes.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RichardHoekstra | 0:48c10918dabf | 1 | #include "mbed.h" |
RichardHoekstra | 1:9e6c4011eef6 | 2 | #define motor_addr 0x91 |
RichardHoekstra | 1:9e6c4011eef6 | 3 | //I2C settings |
RichardHoekstra | 1:9e6c4011eef6 | 4 | #define SDA D14 |
RichardHoekstra | 1:9e6c4011eef6 | 5 | #define SCL D15 |
RichardHoekstra | 1:9e6c4011eef6 | 6 | #define I2C_BUFFER_SIZE 10 |
RichardHoekstra | 1:9e6c4011eef6 | 7 | I2CSlave slave(SDA,SCL); |
RichardHoekstra | 0:48c10918dabf | 8 | |
RichardHoekstra | 1:9e6c4011eef6 | 9 | |
RichardHoekstra | 0:48c10918dabf | 10 | |
RichardHoekstra | 1:9e6c4011eef6 | 11 | int main() { |
RichardHoekstra | 1:9e6c4011eef6 | 12 | slave.address(motor_addr); //Set the correct address for this module |
RichardHoekstra | 1:9e6c4011eef6 | 13 | char buffer[I2C_BUFFER_SIZE] = {0}; //Create the buffer for I2C |
RichardHoekstra | 1:9e6c4011eef6 | 14 | bool buffer_changed; |
RichardHoekstra | 1:9e6c4011eef6 | 15 | while(1) { |
RichardHoekstra | 1:9e6c4011eef6 | 16 | int i = slave.receive(); |
RichardHoekstra | 1:9e6c4011eef6 | 17 | switch (i) { |
RichardHoekstra | 1:9e6c4011eef6 | 18 | case I2CSlave::ReadAddressed: |
RichardHoekstra | 1:9e6c4011eef6 | 19 | //Received a request to be read |
RichardHoekstra | 1:9e6c4011eef6 | 20 | //Irrelevant for now |
RichardHoekstra | 1:9e6c4011eef6 | 21 | break; |
RichardHoekstra | 1:9e6c4011eef6 | 22 | case I2CSlave::WriteGeneral: |
RichardHoekstra | 1:9e6c4011eef6 | 23 | //Received a request to be written to |
RichardHoekstra | 1:9e6c4011eef6 | 24 | slave.read(buffer,I2C_BUFFER_SIZE); |
RichardHoekstra | 1:9e6c4011eef6 | 25 | buffer_changed = true; |
RichardHoekstra | 1:9e6c4011eef6 | 26 | break; |
RichardHoekstra | 1:9e6c4011eef6 | 27 | case I2CSlave::WriteAddressed: |
RichardHoekstra | 1:9e6c4011eef6 | 28 | //Received a request to be written to a specific location |
RichardHoekstra | 1:9e6c4011eef6 | 29 | slave.read(buffer,I2C_BUFFER_SIZE); |
RichardHoekstra | 1:9e6c4011eef6 | 30 | buffer_changed = true; |
RichardHoekstra | 1:9e6c4011eef6 | 31 | break; |
RichardHoekstra | 1:9e6c4011eef6 | 32 | } |
RichardHoekstra | 1:9e6c4011eef6 | 33 | //Do shit depending on the command it received in the first data block |
RichardHoekstra | 1:9e6c4011eef6 | 34 | if(buffer_changed == true){ |
RichardHoekstra | 1:9e6c4011eef6 | 35 | int command = buffer[0]; |
RichardHoekstra | 1:9e6c4011eef6 | 36 | switch(command){ |
RichardHoekstra | 1:9e6c4011eef6 | 37 | case 0: |
RichardHoekstra | 1:9e6c4011eef6 | 38 | break; |
RichardHoekstra | 1:9e6c4011eef6 | 39 | case 1: |
RichardHoekstra | 1:9e6c4011eef6 | 40 | break; |
RichardHoekstra | 1:9e6c4011eef6 | 41 | case 2: |
RichardHoekstra | 1:9e6c4011eef6 | 42 | break; |
RichardHoekstra | 1:9e6c4011eef6 | 43 | case default: |
RichardHoekstra | 1:9e6c4011eef6 | 44 | //No command was valid |
RichardHoekstra | 1:9e6c4011eef6 | 45 | //Create some kind of error? Maybe, blinking led. |
RichardHoekstra | 1:9e6c4011eef6 | 46 | break; |
RichardHoekstra | 1:9e6c4011eef6 | 47 | } |
RichardHoekstra | 1:9e6c4011eef6 | 48 | |
RichardHoekstra | 1:9e6c4011eef6 | 49 | } |
RichardHoekstra | 1:9e6c4011eef6 | 50 | //Clear the buffer for the next iteration |
RichardHoekstra | 1:9e6c4011eef6 | 51 | if(buffer_changed == true){ |
RichardHoekstra | 1:9e6c4011eef6 | 52 | for(int i=0;i<I2C_BUFFER_SIZE;i++){ |
RichardHoekstra | 1:9e6c4011eef6 | 53 | buffer[i] = 0; |
RichardHoekstra | 1:9e6c4011eef6 | 54 | } |
RichardHoekstra | 1:9e6c4011eef6 | 55 | buffer_changed = false; |
RichardHoekstra | 1:9e6c4011eef6 | 56 | } |
RichardHoekstra | 0:48c10918dabf | 57 | |
RichardHoekstra | 0:48c10918dabf | 58 | } |
RichardHoekstra | 0:48c10918dabf | 59 | } |