# HG changeset patch # User Tero Marttila # Date 1412799661 -10800 # Node ID 5c86d54080c19f0b77e285de18bbb0240824f2d5 # Parent d0f29c45fe52b3344aa92116456a19fc83b02bee carboard: use adxl for x/y/z readings and data; signed sensor values are still completely broken diff -r d0f29c45fe52 -r 5c86d54080c1 Makefile --- a/Makefile Thu Sep 25 01:00:08 2014 +0300 +++ b/Makefile Wed Oct 08 23:21:01 2014 +0300 @@ -6,7 +6,9 @@ HEX = build/src/$(PROG).hex build/src/carboard.elf: build/src/carboard.o \ + build/qmsk/src/adxl345.o \ build/qmsk/src/serial.o \ + build/qmsk/src/spi.o \ build/qmsk/src/switch.o \ build/qmsk/src/timer.o @@ -28,7 +30,7 @@ CC = avr-gcc CPPFLAGS = -DF_CPU=$(CPU)UL -I$(QMSK_ARDUINO)/include -CFLAGS = -mmcu=$(MCU) -std=$(STD) -Os -g +CFLAGS = -mmcu=$(MCU) -std=$(STD) -Os LDFLAGS = -mmcu=$(MCU) LDLIBS = -lc diff -r d0f29c45fe52 -r 5c86d54080c1 src/carboard.c --- a/src/carboard.c Thu Sep 25 01:00:08 2014 +0300 +++ b/src/carboard.c Wed Oct 08 23:21:01 2014 +0300 @@ -35,34 +35,42 @@ SWITCH_MASK = 0b00111100, }; +#include "adxl345.h" #include "debug.h" #include "relay.h" #include "serial.h" +#include "spi.h" #include "switch.h" #include "timer.h" int main (void) { + adxl345_init(); debug_init(); relay_init(RELAY_PINS); serial_init(SERIAL_BAUD_9600, SERIAL_PARITY_N, SERIAL_STOPBITS_1); + spi_init(); switch_init(); timer_init(); // init - char c = '.'; + unsigned char c = '.'; byte s; unsigned short timeout = 8000; + int16_t adxl; debug_set(); sei(); + adxl345_setup(); + // start while (true) { c = s = 0; + adxl = 0; if (timer_sleep(timeout)) { - c = '.'; + c = 0; } else if ((c = serial_read())) { switch (c) { case 'L': relay_open(RELAY_LEFT); break; @@ -79,6 +87,11 @@ relay_close(RELAY_DOWN2); break; + case 'd': c = adxl345_read_devid(); break; + case 'x': adxl = adxl345_read_x(); break; + case 'y': adxl = adxl345_read_y(); break; + case 'z': adxl = adxl345_read_z(); break; + default: c = '!'; break; @@ -106,6 +119,20 @@ // out debug_toggle(); - serial_write(c); + if (c == 'x' || c == 'y' || c == 'z') { + int8_t v = adxl / 255; + + /* + if (adxl > 0) + serial_write('+'); + else if (adxl < 0) + serial_write('-'); + else + serial_write(' '); + */ + serial_write(v); + } else if (c) { + serial_write(c); + } } }