Display: add a primitive status display.

This isn't pretty at all, but it shows the principle.
Unfortunately it also exploits a bug in the I2C sending mechanism,
I2C sending hangs a few seconds after reset.
This commit is contained in:
Markus Hitter 2016-04-25 21:11:19 +02:00
parent 62190caaa5
commit a47c4b40df
3 changed files with 23 additions and 0 deletions

View File

@ -13,6 +13,7 @@
#include "debug.h" #include "debug.h"
#include "heater.h" #include "heater.h"
#include "serial.h" #include "serial.h"
#include "display.h"
#ifdef TEMP_INTERCOM #ifdef TEMP_INTERCOM
#include "intercom.h" #include "intercom.h"
#endif #endif
@ -84,6 +85,10 @@ static void clock_250ms(void) {
} }
ifclock(clock_flag_1s) { ifclock(clock_flag_1s) {
#ifdef DISPLAY
display_clock();
#endif
if (DEBUG_POSITION && (debug_flags & DEBUG_POSITION)) { if (DEBUG_POSITION && (debug_flags & DEBUG_POSITION)) {
// current position // current position
update_current_position(); update_current_position();

View File

@ -35,6 +35,7 @@
void display_init(void); void display_init(void);
void display_clear(void); void display_clear(void);
void display_clock(void);
void display_set_cursor(uint8_t line, uint8_t column); void display_set_cursor(uint8_t line, uint8_t column);
void display_writechar(uint8_t data); void display_writechar(uint8_t data);

View File

@ -10,6 +10,8 @@
#include "displaybus.h" #include "displaybus.h"
#include "font.h" #include "font.h"
#include "sendf.h"
#include "dda.h"
static const uint8_t PROGMEM init_sequence[] = { static const uint8_t PROGMEM init_sequence[] = {
@ -86,6 +88,9 @@ void display_clear(void) {
\param column The horizontal cursor position to set, in pixels. First \param column The horizontal cursor position to set, in pixels. First
column is zero. column is zero.
Use this for debugging purposes, only. Regular display updates happen in
display_clock().
*/ */
void display_set_cursor(uint8_t line, uint8_t column) { void display_set_cursor(uint8_t line, uint8_t column) {
@ -98,6 +103,18 @@ void display_set_cursor(uint8_t line, uint8_t column) {
displaybus_write(0x10 | ((column >> 4) & 0x0F), 1); displaybus_write(0x10 | ((column >> 4) & 0x0F), 1);
} }
/**
Regular update of the display. Typically called once a second from clock.c.
*/
void display_clock(void) {
display_set_cursor(0, 2);
update_current_position();
sendf_P(display_writechar, PSTR("X:%lq Y:%lq Z:%lq F:%lu "),
current_position.axis[X], current_position.axis[Y],
current_position.axis[Z], current_position.F);
}
/** /**
Prints a character at the current cursor position. Prints a character at the current cursor position.