v1.7.61 (LED matrix support)

This commit is contained in:
Verkehrsrot 2019-05-07 21:17:06 +02:00
parent c0a767e833
commit 19849c4eea
5 changed files with 24 additions and 17 deletions

View File

@ -1,15 +1,15 @@
#ifndef _IRQHANDLER_H #ifndef _IRQHANDLER_H
#define _IRQHANDLER_H #define _IRQHANDLER_H
#define DISPLAY_IRQ 0x01 #define DISPLAY_IRQ 0x001
#define BUTTON_IRQ 0x02 #define BUTTON_IRQ 0x002
#define MATRIX_DISPLAY_IRQ 0x03 #define SENDCYCLE_IRQ 0x004
#define SENDCYCLE_IRQ 0x04 #define CYCLIC_IRQ 0x008
#define CYCLIC_IRQ 0x08 #define TIMESYNC_IRQ 0x010
#define TIMESYNC_IRQ 0x10 #define MASK_IRQ 0x020
#define MASK_IRQ 0x20 #define UNMASK_IRQ 0x040
#define UNMASK_IRQ 0x40 #define GPS_IRQ 0x080
#define GPS_IRQ 0x80 #define MATRIX_DISPLAY_IRQ 0x100
#include "globals.h" #include "globals.h"
#include "cyclic.h" #include "cyclic.h"

View File

@ -4,8 +4,6 @@
#include "LEDMatrix.h" #include "LEDMatrix.h"
#include "ledmatrixfonts.h" #include "ledmatrixfonts.h"
extern uint8_t MatrixDisplayIsOn;
extern LEDMatrix matrix; extern LEDMatrix matrix;
void init_matrix_display(const char *Productname, const char *Version); void init_matrix_display(const char *Productname, const char *Version);

View File

@ -6,7 +6,7 @@
; ---> SELECT TARGET PLATFORM HERE! <--- ; ---> SELECT TARGET PLATFORM HERE! <---
[platformio] [platformio]
env_default = generic ;env_default = generic
;env_default = ebox ;env_default = ebox
;env_default = eboxtube ;env_default = eboxtube
;env_default = ecopower ;env_default = ecopower
@ -24,7 +24,7 @@ env_default = generic
;env_default = lolin32litelora ;env_default = lolin32litelora
;env_default = lolin32lora ;env_default = lolin32lora
;env_default = lolin32lite ;env_default = lolin32lite
;env_default = wemos32oled env_default = wemos32oled
;env_default = octopus32 ;env_default = octopus32
;env_default = ecopower, eboxtube, heltec, ttgobeam, lopy4, lopy, ttgov21old, ttgov21new, ttgofox ;env_default = ecopower, eboxtube, heltec, ttgobeam, lopy4, lopy, ttgov21old, ttgov21new, ttgofox
; ;
@ -32,7 +32,7 @@ description = Paxcounter is a proof-of-concept ESP32 device for metering passeng
[common] [common]
; for release_version use max. 10 chars total, use any decimal format like "a.b.c" ; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
release_version = 1.7.6 release_version = 1.7.61
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running! ; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose ; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
debug_level = 3 debug_level = 3
@ -70,7 +70,6 @@ lib_deps_all =
${common.lib_deps_display} ${common.lib_deps_display}
${common.lib_deps_rgbled} ${common.lib_deps_rgbled}
${common.lib_deps_gps} ${common.lib_deps_gps}
${common.lib_deps_matrix_display}
build_flags_basic = build_flags_basic =
-include "src/hal/${PIOENV}.h" -include "src/hal/${PIOENV}.h"
-include "src/paxcounter.conf" -include "src/paxcounter.conf"
@ -371,6 +370,7 @@ upload_speed = 921600
lib_deps = lib_deps =
${common.lib_deps_basic} ${common.lib_deps_basic}
${common.lib_deps_display} ${common.lib_deps_display}
${common.lib_deps_matrix_display}
build_flags = build_flags =
${common.build_flags_all} ${common.build_flags_all}
upload_protocol = ${common.upload_protocol} upload_protocol = ${common.upload_protocol}

View File

@ -8,7 +8,7 @@
static const char TAG[] = __FILE__; static const char TAG[] = __FILE__;
uint8_t MatrixDisplayIsOn = 0; uint8_t MatrixDisplayIsOn = 0;
unsigned long ulLastNumMacs = 0; static unsigned long ulLastNumMacs = 0;
LEDMatrix matrix(LED_MATRIX_LA_74138, LED_MATRIX_LB_74138, LED_MATRIX_LC_74138, LEDMatrix matrix(LED_MATRIX_LA_74138, LED_MATRIX_LB_74138, LED_MATRIX_LC_74138,
LED_MATRIX_LD_74138, LED_MATRIX_EN_74138, LED_MATRIX_DATA_R1, LED_MATRIX_LD_74138, LED_MATRIX_EN_74138, LED_MATRIX_DATA_R1,
@ -31,6 +31,15 @@ void init_matrix_display(const char *Productname, const char *Version) {
void refreshTheMatrixDisplay() { void refreshTheMatrixDisplay() {
// if Matrixdisplay is switched off we don't refresh it to relax cpu
if (!MatrixDisplayIsOn && (MatrixDisplayIsOn == cfg.screenon))
return;
// set display on/off according to current device configuration
if (MatrixDisplayIsOn != cfg.screenon) {
MatrixDisplayIsOn = cfg.screenon;
}
if (ulLastNumMacs != macs.size()) { if (ulLastNumMacs != macs.size()) {
ulLastNumMacs = macs.size(); ulLastNumMacs = macs.size();
matrix.clear(); matrix.clear();

View File

@ -52,7 +52,7 @@ So don't do it if you do not own a digital oscilloscope.
0 displayIRQ -> display refresh -> 40ms (DISPLAYREFRESH_MS) 0 displayIRQ -> display refresh -> 40ms (DISPLAYREFRESH_MS)
1 ppsIRQ -> pps clock irq -> 1sec 1 ppsIRQ -> pps clock irq -> 1sec
2 gpsIRQ -> gps store data -> 300ms 2 gpsIRQ -> gps store data -> 300ms
3 unused 3 MatrixDisplayIRQ -> matrix mux cycle -> 0,5ms (MATRIX_DISPLAY_SCAN_US)
// Interrupt routines // Interrupt routines