|
|
|
|
@ -5,7 +5,12 @@
|
|
|
|
|
#include <util/delay.h>
|
|
|
|
|
#include <avr/pgmspace.h>
|
|
|
|
|
|
|
|
|
|
#ifdef GDBSTUB
|
|
|
|
|
#include "avr8-stub.h"
|
|
|
|
|
#else
|
|
|
|
|
#include "uart.h"
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#include "lcd.h"
|
|
|
|
|
#include "twi.h"
|
|
|
|
|
#include "dataflash.h"
|
|
|
|
|
@ -25,649 +30,65 @@
|
|
|
|
|
; \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* clang-format off */
|
|
|
|
|
const uint8_t PROGMEM emg_logo[640] =
|
|
|
|
|
{
|
|
|
|
|
0x80,
|
|
|
|
|
0xe0,
|
|
|
|
|
0xf0,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xf0,
|
|
|
|
|
0xe0,
|
|
|
|
|
0x80,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xf0,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xf0,
|
|
|
|
|
0xe0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xe0,
|
|
|
|
|
0xf0,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xf0,
|
|
|
|
|
0xe0,
|
|
|
|
|
0x80,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x80,
|
|
|
|
|
0xe0,
|
|
|
|
|
0xf0,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xfc,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xf8,
|
|
|
|
|
0xf0,
|
|
|
|
|
0xe0,
|
|
|
|
|
0x80,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xf7,
|
|
|
|
|
0xf3,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xf7,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x07,
|
|
|
|
|
0x03,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x03,
|
|
|
|
|
0x0f,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0x07,
|
|
|
|
|
0x03,
|
|
|
|
|
0x03,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x03,
|
|
|
|
|
0x07,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x03,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x01,
|
|
|
|
|
0x03,
|
|
|
|
|
0x07,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xf1,
|
|
|
|
|
0xe1,
|
|
|
|
|
0xc1,
|
|
|
|
|
0xc1,
|
|
|
|
|
0x81,
|
|
|
|
|
0x81,
|
|
|
|
|
0x81,
|
|
|
|
|
0x81,
|
|
|
|
|
0xc1,
|
|
|
|
|
0xc1,
|
|
|
|
|
0xc1,
|
|
|
|
|
0xc1,
|
|
|
|
|
0xc1,
|
|
|
|
|
0xc1,
|
|
|
|
|
0xe1,
|
|
|
|
|
0xe1,
|
|
|
|
|
0xe1,
|
|
|
|
|
0xe1,
|
|
|
|
|
0xe1,
|
|
|
|
|
0xe1,
|
|
|
|
|
0xe1,
|
|
|
|
|
0xe1,
|
|
|
|
|
0xe1,
|
|
|
|
|
0xe1,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xf0,
|
|
|
|
|
0xe0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xc0,
|
|
|
|
|
0xe0,
|
|
|
|
|
0xf0,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0x00,
|
|
|
|
|
0x01,
|
|
|
|
|
0x07,
|
|
|
|
|
0x07,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x07,
|
|
|
|
|
0x07,
|
|
|
|
|
0x03,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x00,
|
|
|
|
|
0x03,
|
|
|
|
|
0x07,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x8f,
|
|
|
|
|
0xcf,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0xff,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x1f,
|
|
|
|
|
0x0f,
|
|
|
|
|
0x07,
|
|
|
|
|
0x01,
|
|
|
|
|
0x80, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
|
|
|
|
|
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
|
|
|
|
|
0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0x80, 0x00, 0x00, 0xfc,
|
|
|
|
|
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf0, 0xf8, 0xfc, 0xfc,
|
|
|
|
|
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
|
|
|
|
|
0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc,
|
|
|
|
|
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
|
|
|
|
|
0xfc, 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0x80, 0x00, 0x00, 0x80, 0xe0, 0xf0,
|
|
|
|
|
0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
|
|
|
|
|
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
|
|
|
|
|
0xfc, 0xfc, 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0x80, 0xff, 0xff, 0xff, 0xff,
|
|
|
|
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf3, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
|
|
|
|
|
0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf7, 0xff, 0xff, 0xff, 0xff,
|
|
|
|
|
0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
|
|
0xff, 0xff, 0xff, 0x1f, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
|
|
|
|
0x01, 0x01, 0x01, 0x01, 0x03, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
|
|
0xff, 0xff, 0xff, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
|
|
|
|
0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
|
|
0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
|
|
0xff, 0xff, 0x1f, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
|
|
|
|
0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
|
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
|
|
0xff, 0xf1, 0xe1, 0xc1, 0xc1, 0x81, 0x81, 0x81, 0x81, 0xc1, 0xc1, 0xc1,
|
|
|
|
|
0xc1, 0xc1, 0xc1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
|
|
|
|
|
0xe1, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
|
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
|
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
|
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
|
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
|
|
|
|
|
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xe0,
|
|
|
|
|
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
|
|
|
|
|
0xc0, 0xe0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
|
|
0x00, 0x01, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x07,
|
|
|
|
|
0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
|
|
|
|
|
0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x8f, 0xcf, 0xff,
|
|
|
|
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
|
|
|
|
|
0x1f, 0x0f, 0x07, 0x01,
|
|
|
|
|
};
|
|
|
|
|
/* clang-format on */
|
|
|
|
|
|
|
|
|
|
void demo_backlight(void);
|
|
|
|
|
void demo_start(void);
|
|
|
|
|
@ -687,13 +108,22 @@ int main(void)
|
|
|
|
|
// set PB0-PB3 on high-level
|
|
|
|
|
PORTB |= 0x0F; // Required for DMM Board DMM Board 2013
|
|
|
|
|
|
|
|
|
|
LCD_Init();
|
|
|
|
|
#ifdef GDBSTUB
|
|
|
|
|
debug_init(); // required for debugging via UART
|
|
|
|
|
#else
|
|
|
|
|
UART_Init();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
LCD_Init();
|
|
|
|
|
sei(); // enable interrupts after drivers initialized
|
|
|
|
|
|
|
|
|
|
demo_start();
|
|
|
|
|
demo_show_emg();
|
|
|
|
|
|
|
|
|
|
#ifndef GDBSTUB // UART unavailable if used by GDB stub for debugging
|
|
|
|
|
demo_uart();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
demo_display();
|
|
|
|
|
demo_backlight();
|
|
|
|
|
demo_music();
|
|
|
|
|
@ -759,6 +189,7 @@ void demo_show_emg(void)
|
|
|
|
|
wait_joy_button();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifndef GDBSTUB
|
|
|
|
|
void demo_uart(void)
|
|
|
|
|
{
|
|
|
|
|
unsigned char loop = 1;
|
|
|
|
|
@ -841,6 +272,7 @@ void demo_uart(void)
|
|
|
|
|
_delay_ms(200);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
void demo_music(void)
|
|
|
|
|
{
|
|
|
|
|
|