diff options
-rw-r--r-- | megalogger/config.h | 2 | ||||
-rw-r--r-- | megalogger/megalogger.cbp | 570 | ||||
-rw-r--r-- | megalogger/megalogger.ino | 18 |
3 files changed, 575 insertions, 15 deletions
diff --git a/megalogger/config.h b/megalogger/config.h index 50f96a6..fe8dde5 100644 --- a/megalogger/config.h +++ b/megalogger/config.h @@ -28,7 +28,7 @@ /************************************** * Data logging/streaming options **************************************/ -#define ENABLE_DATA_OUT 1 +#define ENABLE_DATA_OUT 0 #define ENABLE_DATA_LOG 1 #define USE_OBD_BT 0 #define LOG_FORMAT FORMAT_CSV /* options: FORMAT_CSV, FORMAT_BIN */ diff --git a/megalogger/megalogger.cbp b/megalogger/megalogger.cbp index 1606205..3120a28 100644 --- a/megalogger/megalogger.cbp +++ b/megalogger/megalogger.cbp @@ -25,7 +25,7 @@ <Add option="-lardusim" /> </Linker> <Environment> - <Variable name="ARDUINO_DIR" value="$(APP_PATH)\ardusim" /> + <Variable name="ARDUINO_DIR" value="$(APP_PATH)/ardusim" /> </Environment> </Target> <Target title="Simulator - Release"> @@ -48,7 +48,456 @@ <Add option="-lardusim" /> </Linker> <Environment> - <Variable name="ARDUINO_DIR" value="$(APP_PATH)\ardusim" /> + <Variable name="ARDUINO_DIR" value="$(APP_PATH)/ardusim" /> + </Environment> + </Target> + <Target title="Arduino Uno"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-Os" /> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega328P__" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> + </Compiler> + <Linker> + <Add option="-s" /> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Uno" /> + <Variable name="BOARD_ID" value="uno" /> + <Variable name="MCU" value="atmega328p" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="115200" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Arduino Leonardo"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega32U4__" /> + <Add option="-DUSB_VID=0x2341" /> + <Add option="-DUSB_PID=0x8036" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/leonardo" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Leonardo" /> + <Variable name="BOARD_ID" value="leonardo" /> + <Variable name="MCU" value="atmega32u4" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="57600" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Arduino Esplora"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega32U4__" /> + <Add option="-DUSB_VID=0x2341" /> + <Add option="-DUSB_PID=0x8037" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/leonardo" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Esplora" /> + <Variable name="BOARD_ID" value="esplora" /> + <Variable name="MCU" value="atmega32u4" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="57600" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Arduino Micro"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega32U4__" /> + <Add option="-DUSB_VID=0x2341" /> + <Add option="-DUSB_PID=0x803C" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/micro" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Micro" /> + <Variable name="BOARD_ID" value="micro" /> + <Variable name="MCU" value="atmega32u4" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="57600" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Arduino Duemilanove (328)"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega328P__" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Duemilanove (328)" /> + <Variable name="BOARD_ID" value="duemilanove328" /> + <Variable name="MCU" value="atmega328p" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="57600" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Arduino Duemilanove (168)"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega168__" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Duemilanove (168)" /> + <Variable name="BOARD_ID" value="duemilanove168" /> + <Variable name="MCU" value="atmega168" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="19200" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Arduino Nano (328)"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega328P__" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Nano (328)" /> + <Variable name="BOARD_ID" value="nano328" /> + <Variable name="MCU" value="atmega328p" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="57600" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Arduino Nano (168)"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega168__" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Nano (168)" /> + <Variable name="BOARD_ID" value="nano168" /> + <Variable name="MCU" value="atmega168" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="19200" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Arduino Mini (328)"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega328P__" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Mini (328)" /> + <Variable name="BOARD_ID" value="mini328" /> + <Variable name="MCU" value="atmega328p" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="57600" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Arduino Mini (168)"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega168__" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Mini (168)" /> + <Variable name="BOARD_ID" value="mini168" /> + <Variable name="MCU" value="atmega168" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="19200" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Arduino Pro Mini (328)"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega328P__" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Pro Mini (328)" /> + <Variable name="BOARD_ID" value="promini328" /> + <Variable name="MCU" value="atmega328p" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="57600" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Arduino Pro Mini (168)"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega168__" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Pro Mini (168)" /> + <Variable name="BOARD_ID" value="promini168" /> + <Variable name="MCU" value="atmega168" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="19200" /> + <Variable name="UPLOAD_PORT" value="" /> </Environment> </Target> <Target title="Arduino Mega 2560/ADK"> @@ -57,20 +506,20 @@ <Option type="1" /> <Option compiler="avrgcc" /> <Compiler> - <Add option="-O3" /> <Add option="-x c++" /> <Add option="-mmcu=$(MCU)" /> <Add option="-DF_CPU=16000000L" /> <Add option="-D__AVR_ATmega2560__" /> + <Add option="-O2" /> <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> <Add directory="$(ARDUINO_DIR)/libraries" /> <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/mega" /> </Compiler> <Linker> - <Add option="-s" /> <Add option="-mmcu=$(MCU)" /> <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> </Linker> <ExtraCommands> <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> @@ -79,7 +528,7 @@ <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> </ExtraCommands> <Environment> - <Variable name="BOARD" value="Arduino Mega 2560\ADK" /> + <Variable name="BOARD" value="Arduino Mega 2560/ADK" /> <Variable name="BOARD_ID" value="mega2560" /> <Variable name="MCU" value="atmega2560" /> <Variable name="MCU_CLOCK" value="16" /> @@ -123,6 +572,117 @@ <Variable name="UPLOAD_PORT" value="" /> </Environment> </Target> + <Target title="Arduino Mega 8"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega328P__" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Arduino Mega 8" /> + <Variable name="BOARD_ID" value="mega8" /> + <Variable name="MCU" value="atmega8" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="19200" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Microduino Core+ (644P)"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega644P__" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/plus" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Microduino Core+ (644P)" /> + <Variable name="BOARD_ID" value="uduino644p" /> + <Variable name="MCU" value="atmega644p" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="115200" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> + <Target title="Freematics OBD-II Adapter"> + <Option output="build/megalogger_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> + <Option object_output="build" /> + <Option type="1" /> + <Option compiler="avrgcc" /> + <Compiler> + <Add option="-x c++" /> + <Add option="-mmcu=$(MCU)" /> + <Add option="-DF_CPU=16000000L" /> + <Add option="-D__AVR_ATmega644P__" /> + <Add option="-O2" /> + <Add option="-Os" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> + <Add directory="$(ARDUINO_DIR)/libraries" /> + <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/plus" /> + </Compiler> + <Linker> + <Add option="-mmcu=$(MCU)" /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add option="-s" /> + </Linker> + <ExtraCommands> + <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> + <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> + <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> + <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> + </ExtraCommands> + <Environment> + <Variable name="BOARD" value="Freematics OBD-II Adapter" /> + <Variable name="BOARD_ID" value="uduino644p" /> + <Variable name="MCU" value="atmega644p" /> + <Variable name="MCU_CLOCK" value="16" /> + <Variable name="UPLOAD_BAUDRATE" value="115200" /> + <Variable name="UPLOAD_PORT" value="" /> + </Environment> + </Target> </Build> <Compiler> <Add directory="." /> diff --git a/megalogger/megalogger.ino b/megalogger/megalogger.ino index 15da969..cb32afb 100644 --- a/megalogger/megalogger.ino +++ b/megalogger/megalogger.ino @@ -20,10 +20,6 @@ #endif #include "datalogger.h" -#if !defined(__AVR_ATmega2560__) && !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega644P__) && !defined(__SAM3X8E__) -#error This sketch requires Arduino MEGA or DUE to work -#endif - // logger states #define STATE_SD_READY 0x1 #define STATE_OBD_READY 0x2 @@ -34,7 +30,7 @@ #ifdef USE_GPS // GPS logging can only be enabled when there is additional hardware serial UART -#if defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) +#if defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) || defined(__SAM3X8E__) #define GPSUART Serial2 #elif defined(__AVR_ATmega644P__) #define GPSUART Serial1 @@ -53,11 +49,11 @@ TinyGPS gps; #endif // GPSUART #endif -static uint32_t lastFileSize = 0; +static uint8_t lastFileSize = 0; static uint32_t lastDataTime = 0; static uint32_t lastGPSDataTime = 0; static uint32_t lastACCDataTime = 0; -static uint16_t lastRefreshTime = 0; +static uint8_t lastRefreshTime = 0; static uint16_t lastSpeed = -1; static uint16_t startDistance = 0; static uint16_t fileIndex = 0; @@ -117,8 +113,10 @@ public: lcd.printInt(index); #endif +#ifndef MEMORY_SAVING showECUCap(); delay(1000); +#endif read(PID_DISTANCE, (int&)startDistance); @@ -432,7 +430,7 @@ private: #if ENABLE_DATA_LOG // flush SD data every 1KB - if (dataSize - lastFileSize >= 1024) { + if ((dataSize >> 10) != lastFileSize) { flushFile(); // display logged data size lcd.setFont(FONT_SIZE_MEDIUM); @@ -440,7 +438,7 @@ private: lcd.printInt((unsigned int)(dataSize >> 10)); lcd.setFont(FONT_SIZE_SMALL); lcd.print(" KB"); - lastFileSize = dataSize; + lastFileSize = dataSize >> 10; } #endif @@ -556,10 +554,12 @@ private: void initScreen() { lcd.clear(); +#ifndef MEMORY_SAVING lcd.draw2x(frame0[0], 0, 0, 78, 58); lcd.draw2x(frame0[0], 164, 0, 78, 58); lcd.draw2x(frame0[0], 0, 124, 78, 58); lcd.draw2x(frame0[0], 164, 124, 78, 58); +#endif //lcd.setColor(RGB16(0x7f, 0x7f, 0x7f)); lcd.setFont(FONT_SIZE_SMALL); |