Skip to content

Commit

Permalink
initial
Browse files Browse the repository at this point in the history
initial
  • Loading branch information
garbb committed Sep 16, 2017
1 parent 4758087 commit 78d567c
Show file tree
Hide file tree
Showing 11 changed files with 4,410 additions and 0 deletions.
1,062 changes: 1,062 additions & 0 deletions LowPower.cpp

Large diffs are not rendered by default.

169 changes: 169 additions & 0 deletions LowPower.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
#ifndef LowPower_h
#define LowPower_h

#include "Arduino.h"

enum period_t
{
SLEEP_15MS,
SLEEP_30MS,
SLEEP_60MS,
SLEEP_120MS,
SLEEP_250MS,
SLEEP_500MS,
SLEEP_1S,
SLEEP_2S,
SLEEP_4S,
SLEEP_8S,
SLEEP_FOREVER
};

enum bod_t
{
BOD_OFF,
BOD_ON
};

enum adc_t
{
ADC_OFF,
ADC_ON
};

enum timer5_t
{
TIMER5_OFF,
TIMER5_ON
};

enum timer4_t
{
TIMER4_OFF,
TIMER4_ON
};

enum timer3_t
{
TIMER3_OFF,
TIMER3_ON
};

enum timer2_t
{
TIMER2_OFF,
TIMER2_ON
};

enum timer1_t
{
TIMER1_OFF,
TIMER1_ON
};

enum timer0_t
{
TIMER0_OFF,
TIMER0_ON
};

enum spi_t
{
SPI_OFF,
SPI_ON
};

enum usart0_t
{
USART0_OFF,
USART0_ON
};

enum usart1_t
{
USART1_OFF,
USART1_ON
};

enum usart2_t
{
USART2_OFF,
USART2_ON
};

enum usart3_t
{
USART3_OFF,
USART3_ON
};

enum twi_t
{
TWI_OFF,
TWI_ON
};

enum usb_t
{
USB_OFF,
USB_ON
};

enum idle_t
{
IDLE_0,
IDLE_1,
IDLE_2
};

class LowPowerClass
{
public:
#if defined (__AVR__)

#if defined (__AVR_ATmega328P__) || defined (__AVR_ATmega168__)
void idle(period_t period, adc_t adc, timer2_t timer2,
timer1_t timer1, timer0_t timer0, spi_t spi,
usart0_t usart0, twi_t twi);
#elif defined __AVR_ATmega2560__
void idle(period_t period, adc_t adc, timer5_t timer5,
timer4_t timer4, timer3_t timer3, timer2_t timer2,
timer1_t timer1, timer0_t timer0, spi_t spi,
usart3_t usart3, usart2_t usart2, usart1_t usart1,
usart0_t usart0, twi_t twi);
#elif defined __AVR_ATmega256RFR2__
void idle(period_t period, adc_t adc, timer5_t timer5,
timer4_t timer4, timer3_t timer3, timer2_t timer2,
timer1_t timer1, timer0_t timer0, spi_t spi,
usart1_t usart1,
usart0_t usart0, twi_t twi);
#elif defined __AVR_ATmega32U4__
void idle(period_t period, adc_t adc, timer4_t timer4,
timer3_t timer3, timer1_t timer1, timer0_t timer0,
spi_t spi, usart1_t usart1, twi_t twi, usb_t usb);
#else
#error "Please ensure chosen MCU is either 168, 328P, 32U4, 2560 or 256RFR2."
#endif
void adcNoiseReduction(period_t period, adc_t adc, timer2_t timer2) __attribute__((optimize("-O1")));
void powerDown(period_t period, adc_t adc, bod_t bod) __attribute__((optimize("-O1")));
void powerSave(period_t period, adc_t adc, bod_t bod, timer2_t timer2) __attribute__((optimize("-O1")));
void powerStandby(period_t period, adc_t adc, bod_t bod) __attribute__((optimize("-O1")));
void powerExtStandby(period_t period, adc_t adc, bod_t bod, timer2_t timer2) __attribute__((optimize("-O1")));

#elif defined (__arm__)

#if defined (__SAMD21G18A__)
void idle(idle_t idleMode);
void standby();
#else
#error "Please ensure chosen MCU is ATSAMD21G18A."
#endif

#else

#error "Processor architecture is not supported."

#endif
};

extern LowPowerClass LowPower;
#endif
49 changes: 49 additions & 0 deletions old/1/tomtom.gps.auto.on/tomtom.gps.auto.on.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// The TomTom Mkii Bluetooth GPS receiver does not automatically turn on when power is applied via its charging port.
// The power button must be held for approximately 1 second to turn it on.
// This program is intented to be used with an ardunio with an I/O pin connected to one of the leads of the power button
// to simulate a power button press and turn the device on as soon as the arduino powers on.

// pin to be connected to tomtom gps power button
#define pwrbuttonpin 10
// delay for simulated power button hold-down
#define pwrbuttondelay 1200
// built-in led pin
#define ledpin 13

void setup() {
//pinMode(ledpin, OUTPUT);

// set pwrbuttonpin pin HIGH (to 5v)
digitalWrite(pwrbuttonpin, HIGH);

// short pwrbuttonpin to ground
// (simulate button press)
pinMode(pwrbuttonpin, OUTPUT);
//digitalWrite(ledpin, HIGH);

// wait
delay(pwrbuttondelay);

// disconnect pwrbuttonpin (input mode = high impediance)
// (simulate button release)
pinMode(pwrbuttonpin, INPUT);
//digitalWrite(ledpin, LOW);
}

void loop() {
/*
delay(pwrbuttondelay);
// short pwrbuttonpin to ground
// (simulate button press)
pinMode(pwrbuttonpin, OUTPUT);
digitalWrite(ledpin, HIGH);
delay(pwrbuttondelay);
// disconnect pwrbuttonpin (input mode = high impediance)
// (simulate button release)
pinMode(pwrbuttonpin, INPUT);
digitalWrite(ledpin, LOW);
*/
}
Loading

0 comments on commit 78d567c

Please sign in to comment.