Esempio n. 1
0
void updateDisp(BYTE side) {

	// check if we are holding text
	if(holdText[side]) {
		// check if the hold time has passed
		if(millis - holdTimer[side] > HOLD_TIME) {
			holdText[side] = FALSE;
		}
		// carry out blinking of text
		else if(millis - blinkTimer[side] > BLINK_TIME) {
			// redisplay the text
			if(blinkStates[side]) {
				blinkStates[side] = FALSE;
				updateText(side, displayStates);
				blinkTimer[side] = millis;
			}
			// blank the displays
			else {
				blinkStates[side] = TRUE;
				blank_display(side);
				blinkTimer[side] = millis;
			}
		}
	}
	// data is being displayed
	else {
		if(millis - refreshTime[side] > REFRESH_TIME) {
			refreshTime[side] = millis;
			write_num(chan[displayStates[side]], d_place_arr[displayStates[side]], side);
		}
	}

	return;
}
Esempio n. 2
0
int main(void)
{
	// ADC Configuration
	ADMUX  = 0x00; // AREF, ADC0
	ADCSRB = 0x00; // Free Running Mode
	ADCSRA |= (1<<ADEN)|(1<<ADIE); // Enable ADC, ADC interrupt
	ADCSRA |= (1<<ADPS2)|(0<<ADPS1)|(1<<ADPS0); // prescaler 32
	DIDR0  |= (1<<ADC0D); // disable digital input
	
	// SPI and Display Configuration
	init_SPI();
	send_cmd(SHUTDOWN_ADDR, SHUTDOWN_DISPLAY_ON);
	send_cmd(DECODE_MODE_ADDR, DECODE_MODE_NO_DECODE);
	send_cmd(INTENSITY_ADDR, INTENSITY_MAX);
	send_cmd(SCAN_LIMIT_ADDR, SCAN_LIMIT_MAX);
	blank_display();
	
	// Test all pixels at startup
	send_cmd(DISPLAY_TEST_ADDR, DISPLAY_TEST_ON);
	_delay_ms(500);
	send_cmd(DISPLAY_TEST_ADDR, DISPLAY_TEST_OFF);
	_delay_ms(500);
	
	sample = 0;

	sei();
	ADCSRA |= (1<<ADSC); // Start ADC

    while(1);
}