Exemple #1
0
void global_init()
{
	pinPullup(CHRG_P, PU_EN);

	// Pin change interrupt on USB power sense pin
#if HW_VERSION == 1
	PCICR |= _BV(PCIE0);
	PCMSK0 |= _BV(PCINT6);
#elif HW_VERSION == 2
	PCICR |= _BV(PCIE0);
	PCMSK0 |= _BV(PCINT7);
#else
	PCICR |= _BV(PCIE2);
	PCMSK2 |= _BV(PCINT19);
#endif

//#warning "remove me!"
//	pinPullup(USB_SENSE_P, PU_EN);

	// Unused pins
#if HW_VERSION == 3
	pinPullup(B6, PU_EN);
	pinPullup(B7, PU_EN);
#else
	pinPullup(D3, PU_EN);
	pinPullup(D4, PU_EN);
#endif
}
Exemple #2
0
void buttons_init()
{
	pinMode(BTN_UP_P,		INPUT);
	pinMode(BTN_DOWN_P,		INPUT);
	pinMode(BTN_SELECT_P,	INPUT);

	pinPullup(BTN_UP_P,		PULLUP_ENABLE);
	pinPullup(BTN_DOWN_P,	PULLUP_ENABLE);
	pinPullup(BTN_SELECT_P,	PULLUP_ENABLE);

	bits_set(PCMSK1, _BV(PCINT9)|_BV(PCINT10)|_BV(PCINT11));

	BTN_INT_ON();
}
Exemple #3
0
static void init()
{
//	OSCCAL = 71;

	clock_prescale_set(CPU_DIV);

//	power_twi_disable();
//	power_usart0_disable();
//	power_timer0_disable();
//	power_timer1_disable();
//	power_timer2_disable();
//	power_adc_disable();

#if !UART_ENABLE
	power_usart0_disable();
#endif

	// Pull-up on unused pins
	pinPullup(D0, PULLUP_ENABLE);
	pinPullup(D1, PULLUP_ENABLE);
	pinPullup(D3, PULLUP_ENABLE);
	pinPullup(D4, PULLUP_ENABLE);

	pinPullup(B7, PULLUP_ENABLE);

#if PIN_DEBUG != PIN_DEBUG_NONE
	pinMode(PIN_DEBUG_PIN, OUTPUT);
#endif

	// Pin change interrupt on USB power sense pin
	PCICR |= _BV(PCIE0);
	PCMSK0 |= _BV(PCINT6);

	// Everything else
	uart_init();
	spi_init();
	i2c_init();
	watchconfig_init();
	led_init();
	buzzer_init();
	battery_init();
	ds3231_init();
	buttons_init();
	millis_init();
	pwrmgr_init();
	time_init();
	alarm_init();
	oled_init();
}
Exemple #4
0
void time_init()
{
	pinPullup(RTC_INT_P, PU_EN);

#if RTC_SRC != RTC_SRC_INTERNAL
	EICRA |= _BV(ISC01);
	EIMSK |= _BV(INT0);
#endif

	time_wake();
}
Exemple #5
0
// Reset to known state (as per what the DS3231 datasheet says)
void i2c_resetState()
{
	bit_clr(TWCR, TWEN); // Disable TWI
	pinMode(SDA, INPUT);
	pinPullup(SDA, PULLUP_ENABLE);
	delay(1);

	// Toggle SDL until SDA goes HIGH or times out
	byte count = 64; // 64 * 1ms = 64ms timeout
	while(!pinRead(SDA) && count--)
	{
		delay(1);
		pinWrite(SDL, TOGGLE);
	}

	// Back to normal
	pinMode(SDA, OUTPUT);
	pinMode(SDL, OUTPUT);
	pinWrite(SDA, HIGH);
	pinWrite(SDL, HIGH);
}