src/carboard.c
changeset 5 5c86d54080c1
parent 4 d0f29c45fe52
equal deleted inserted replaced
4:d0f29c45fe52 5:5c86d54080c1
    33     SWITCH_HORN2        = 0b00100000,
    33     SWITCH_HORN2        = 0b00100000,
    34 
    34 
    35     SWITCH_MASK         = 0b00111100,
    35     SWITCH_MASK         = 0b00111100,
    36 };
    36 };
    37 
    37 
       
    38 #include "adxl345.h"
    38 #include "debug.h"
    39 #include "debug.h"
    39 #include "relay.h"
    40 #include "relay.h"
    40 #include "serial.h"
    41 #include "serial.h"
       
    42 #include "spi.h"
    41 #include "switch.h"
    43 #include "switch.h"
    42 #include "timer.h"
    44 #include "timer.h"
    43 
    45 
    44 int main (void)
    46 int main (void)
    45 {
    47 {
       
    48     adxl345_init();
    46     debug_init();
    49     debug_init();
    47     relay_init(RELAY_PINS);
    50     relay_init(RELAY_PINS);
    48     serial_init(SERIAL_BAUD_9600, SERIAL_PARITY_N, SERIAL_STOPBITS_1);
    51     serial_init(SERIAL_BAUD_9600, SERIAL_PARITY_N, SERIAL_STOPBITS_1);
       
    52     spi_init();
    49     switch_init();
    53     switch_init();
    50     timer_init();
    54     timer_init();
    51 
    55 
    52     // init
    56     // init
    53     char c = '.';
    57     unsigned char c = '.';
    54     byte s;
    58     byte s;
    55     unsigned short timeout = 8000;
    59     unsigned short timeout = 8000;
       
    60     int16_t adxl;
    56 
    61 
    57     debug_set();
    62     debug_set();
    58     sei();
    63     sei();
    59 
    64 
       
    65     adxl345_setup();
       
    66 
    60     // start
    67     // start
    61     while (true) {
    68     while (true) {
    62         c = s = 0;
    69         c = s = 0;
       
    70         adxl = 0;
    63 
    71 
    64         if (timer_sleep(timeout)) {
    72         if (timer_sleep(timeout)) {
    65             c = '.';
    73             c = 0;
    66         } else if ((c = serial_read())) {
    74         } else if ((c = serial_read())) {
    67             switch (c) {
    75             switch (c) {
    68                 case 'L':       relay_open(RELAY_LEFT); break;
    76                 case 'L':       relay_open(RELAY_LEFT); break;
    69                 case 'R':       relay_open(RELAY_RIGHT); break;
    77                 case 'R':       relay_open(RELAY_RIGHT); break;
    70                 case 'B':
    78                 case 'B':
    76                 case 'r':       relay_toggle(RELAY_RIGHT); break;
    84                 case 'r':       relay_toggle(RELAY_RIGHT); break;
    77                 case 'b':
    85                 case 'b':
    78                                 relay_close(RELAY_DOWN1);
    86                                 relay_close(RELAY_DOWN1);
    79                                 relay_close(RELAY_DOWN2);
    87                                 relay_close(RELAY_DOWN2);
    80                                 break;
    88                                 break;
       
    89 
       
    90                 case 'd':       c = adxl345_read_devid(); break;
       
    91                 case 'x':       adxl = adxl345_read_x(); break;
       
    92                 case 'y':       adxl = adxl345_read_y(); break;
       
    93                 case 'z':       adxl = adxl345_read_z(); break;
    81 
    94 
    82                 default:
    95                 default:
    83                     c = '!';
    96                     c = '!';
    84                     break;
    97                     break;
    85             }
    98             }
   104         }
   117         }
   105 
   118 
   106         // out
   119         // out
   107         debug_toggle();
   120         debug_toggle();
   108 
   121 
   109         serial_write(c);
   122         if (c == 'x' || c == 'y' || c == 'z') {
       
   123             int8_t v = adxl / 255;
       
   124 
       
   125             /*
       
   126             if (adxl > 0)
       
   127                 serial_write('+');
       
   128             else if (adxl < 0)
       
   129                 serial_write('-');
       
   130             else
       
   131                 serial_write(' ');
       
   132             */
       
   133             serial_write(v);
       
   134         } else if (c) {
       
   135             serial_write(c);
       
   136         }
   110     }
   137     }
   111 }
   138 }