From e5f1d172a2eb270979cca5f9bb1da45e2437debc Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sun, 19 Jul 2020 13:01:03 +0200 Subject: [PATCH] execute all tests just once --- c2_ulx3s_test/adc.cpp | 14 ++++-- c2_ulx3s_test/adc.h | 2 +- c2_ulx3s_test/btn.cpp | 35 +++++++++++-- c2_ulx3s_test/btn.h | 2 +- c2_ulx3s_test/c2_ulx3s_test.ino | 88 ++++++++++++++++++++++++++++++--- c2_ulx3s_test/dac.cpp | 5 +- c2_ulx3s_test/dac.h | 2 +- c2_ulx3s_test/edid.cpp | 8 ++- c2_ulx3s_test/edid.h | 2 +- c2_ulx3s_test/flash.cpp | 9 ++-- c2_ulx3s_test/flash.h | 2 +- c2_ulx3s_test/rtc.cpp | 18 +++++-- c2_ulx3s_test/rtc.h | 2 +- c2_ulx3s_test/sd.cpp | 5 +- c2_ulx3s_test/sd.h | 2 +- 15 files changed, 162 insertions(+), 34 deletions(-) diff --git a/c2_ulx3s_test/adc.cpp b/c2_ulx3s_test/adc.cpp index 47f89b0..17ad139 100644 --- a/c2_ulx3s_test/adc.cpp +++ b/c2_ulx3s_test/adc.cpp @@ -137,8 +137,9 @@ void adc_init() configureMax1112x(); } -void adc_read(char *a) +int adc_read(char *a) { + int ret = 0; static uint8_t skip_eval = 5; // skip evaluation for first few readings static uint16_t reading[10], prev_reading[10]; // alternating LED state will also alternate @@ -175,16 +176,18 @@ void adc_read(char *a) { if(i & 1) { - if(reading[i] < ((i << 12) + 0x080) && prev_reading[i] > ((i << 12) + 0xF80) ) + if(reading[i] < ((i << 12) + 0x080) && prev_reading[i] > ((i << 12) + 0xF80) ) { channel_eval[i] = " OK "; - else + ret++; + } else channel_eval[i] = "FAIL"; } else { - if(prev_reading[i] < ((i << 12) + 0x080) && reading[i] > ((i << 12) + 0xF80) ) + if(prev_reading[i] < ((i << 12) + 0x080) && reading[i] > ((i << 12) + 0xF80) ) { channel_eval[i] = " OK "; - else + ret++; + } else channel_eval[i] = "FAIL"; } } @@ -229,4 +232,5 @@ void adc_read(char *a) else *gpio1_out |= gpio1_bits; } + return ret; } diff --git a/c2_ulx3s_test/adc.h b/c2_ulx3s_test/adc.h index ccecebe..dab61a8 100644 --- a/c2_ulx3s_test/adc.h +++ b/c2_ulx3s_test/adc.h @@ -1,2 +1,2 @@ void adc_init(); -void adc_read(char *a); +int adc_read(char *a); diff --git a/c2_ulx3s_test/btn.cpp b/c2_ulx3s_test/btn.cpp index 61ea201..76ece4b 100644 --- a/c2_ulx3s_test/btn.cpp +++ b/c2_ulx3s_test/btn.cpp @@ -14,10 +14,38 @@ void btn_init() pinMode(i, OUTPUT); } -void btn_read(char *line) +uint8_t btn[6]; +uint8_t btn_toggle[6] = { 0,0,0,0,0,0 }; + +int btn_read(char *line) { + int ret = 0; static uint8_t shiftdata = 0; uint8_t led = B10001 << (shiftdata++ & 3); + + Serial.print("btn_toggle="); + for(int i=0; i<=6; i++) { + btn[i] = digitalRead(i); + if ( i == 0 ) btn[i] = !btn[i]; + if ( btn[i] ) { + digitalWrite(8+i, 1); + if ( btn_toggle[i] == 0 ) { + btn_toggle[i]++; // press + } + } else { + digitalWrite(8+i, 0); + if ( btn_toggle[i] == 1 ) { + btn_toggle[i]++; // release + } + } + if (btn_toggle[i] == 2) { + ret++; + //digitalWrite(8+i, 1); + } + Serial.print(btn_toggle[i]); + } + Serial.println(); + sprintf(line, "BTN:%c%c%c%c%c%c%c SW:%c%c%c%c LED:%c%c%c%c%c%c%c%c\n", digitalRead(0) ? '_' : '0', digitalRead(1) ? '1' : '_', @@ -39,6 +67,7 @@ void btn_read(char *line) led & B00000010 ? '1' : '_', led & B00000001 ? '0' : '_' ); - for(int i = 0; i < 8; i++) - digitalWrite(8+i, led & (1<= 0x15 && id <= 0x17) + if(id >= 0x15 && id <= 0x17) { sprintf(a, "FLASH: %02x OK ", id); - else + ret = 1; + } else sprintf(a, "FLASH: %02x FAIL", id); + return ret; } diff --git a/c2_ulx3s_test/flash.h b/c2_ulx3s_test/flash.h index 9300137..2dd43d6 100644 --- a/c2_ulx3s_test/flash.h +++ b/c2_ulx3s_test/flash.h @@ -1 +1 @@ -void flash_read(char *a); +int flash_read(char *a); diff --git a/c2_ulx3s_test/rtc.cpp b/c2_ulx3s_test/rtc.cpp index e9c6493..6bc97f5 100644 --- a/c2_ulx3s_test/rtc.cpp +++ b/c2_ulx3s_test/rtc.cpp @@ -48,7 +48,7 @@ void rtc_set_clock() regwrite(0x03, 0x07 | 8); // weekday | battery_backup regwrite(0x02, 0x23); // hour regwrite(0x01, 0x59); // minute - regwrite(0x00, 0x00 | 0x80); // second | start_oscillator + regwrite(0x00, 0x58 | 0x80); // second | start_oscillator } void rtc_set_alarm() @@ -74,13 +74,20 @@ void rtc_init() { regwrite(0x08, 0x45); } -void rtc_read(char *a) +int rtc_read(char *a) { + int ret = 0; char *eval; uint8_t yr = regread(0x06,1) & 0x3F; - if(yr >= 0x17 && yr <= 0x18) - eval = regread(0x0D,1) & 8 ? " OK " : "WAIT"; - else + if(yr >= 0x17 && yr <= 0x18) { + //eval = regread(0x0D,1) & 8 ? " OK " : "WAIT"; + if ( regread(0x0D,1) & 8 ) { + eval = " OK "; + ret = 1; + } else { + eval = "WAIT"; + } + } else eval = "FAIL"; sprintf(a, "20%02x-%02x-%02x %02x:%02x:%02x %s *-%02x %02x:%02x:%02x\n", regread(0x06,1) & 0x3F, // year @@ -95,4 +102,5 @@ void rtc_read(char *a) regread(0x0B,1) & 0x7F, // alarm minute regread(0x0A,1) & 0x7F // alarm second ); + return ret; } diff --git a/c2_ulx3s_test/rtc.h b/c2_ulx3s_test/rtc.h index b5975a5..29fa131 100644 --- a/c2_ulx3s_test/rtc.h +++ b/c2_ulx3s_test/rtc.h @@ -1,5 +1,5 @@ void rtc_init(); -void rtc_read(char *a); +int rtc_read(char *a); void rtc_set_alarm(); void rtc_set_clock(); void rtc_clear_interrupts(); diff --git a/c2_ulx3s_test/sd.cpp b/c2_ulx3s_test/sd.cpp index 6a10f51..76f1ac1 100644 --- a/c2_ulx3s_test/sd.cpp +++ b/c2_ulx3s_test/sd.cpp @@ -41,8 +41,9 @@ Sd2Card card; SdVolume volume; SdFile root; // reading sd card type is slow -void sd_read(char *a) +int sd_read(char *a) { + int ret = 0; char *cardtype; if (card.init(SPI_HALF_SPEED, 2)) { @@ -61,10 +62,12 @@ void sd_read(char *a) cardtype = "? "; } sprintf(a, "SD: %s OK", cardtype); + ret = 1; } else { sprintf(a, "SD: FAIL "); } + return ret; } #endif diff --git a/c2_ulx3s_test/sd.h b/c2_ulx3s_test/sd.h index 08f8748..0b7e8f1 100644 --- a/c2_ulx3s_test/sd.h +++ b/c2_ulx3s_test/sd.h @@ -1 +1 @@ -void sd_read(char *a); +int sd_read(char *a); -- 2.20.1