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; }
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); }