diff --git a/printer/avr/main.c b/printer/avr/main.c index ab52752..769a05a 100644 --- a/printer/avr/main.c +++ b/printer/avr/main.c @@ -13,6 +13,7 @@ inline void spi_process_data(); enum TIMERS{TIM_CARRIAGE, TIM_WHEEL, TIM_LINEFEED, + TIM_SYSTEM, TIMS}; #define TIMESCALE 4 @@ -753,15 +754,18 @@ void initialize_paperfeed() // } //} -//void systick_test() -//{ -// debug_write("[tmr] System timer test\r\n"); -// while (1) { -// if (block_for(0, 1000 * TIMESCALE)) { -// debug_write("hello\n"); -// } -// } -//} +void systick_test() +{ + debug_write("[tmr] System timer test\r\n"); + while (1) { + if (block_for(TIM_SYSTEM, 1000 * TIMESCALE)) { + debug_write("tick.\r\n"); + } + if (UCSRA & (1 << RXC)) { + break; + } + } +} void hardfault() { @@ -769,6 +773,12 @@ void hardfault() { STEPPER_STOP(WHEEL); STEPPER_STOP(CARRIAGE); STEPPER_STOP(LINEFEED); + DDRB = 0; + DDRC = 0; + DDRD = 0; + PORTB = 0; + PORTC = 0; + PORTD = 0; while(1); } @@ -1156,6 +1166,26 @@ int system_test_auto() default: break; } + + /* System control */ + switch (c) { + case 'i': + sei(); + debug_write("Interrupts enabled.\r\n"); + break; + case 'I': + cli(); + debug_write("Interrupts disabled.\r\n"); + break; + case 't': + systick_test(); + break; + case 'f': + hardfault(); + break; + default: + break; + } } }