From 9a896c33147b6d2add03ede479c0c48dcf4723d1 Mon Sep 17 00:00:00 2001 From: Markus Koch Date: Sun, 10 Nov 2019 20:12:20 +0100 Subject: [PATCH] printer: avr: Extend test mode --- printer/avr/main.c | 48 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 9 deletions(-) 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; + } } }