8#include "sharp96_drv.h"
9#include "pixel_stream_const.h"
15 : _spi(spi), _disp_on_pin(disp), _pwr_pin(pwr),
16 _timer(timer), _dirty(true), _setVCOM(false) {
19 for(
int y=0; y < getSizeY(); y++) {
20 for(
unsigned int x=0; x <
sizeof(_display_buffer[0]); x++) {
21 _display_buffer[y][x] = 0xff;
26 _disp_on_pin.gpioMode(GPIO::OUTPUT | GPIO::INIT_HIGH);
27 _pwr_pin.gpioMode (GPIO::OUTPUT | GPIO::INIT_HIGH);
30 _spi.setSpeed(1000000);
31 _spi.generateCS(
false);
35 _timer.setPeriod(50000, TIMER::PERIODIC);
36 _timer.setCallback([
this]() {
42void sharp96_drv::drawPixel(uint16_t x, uint16_t y, color_t c)
45 _display_buffer[y][x>>3] &= ~(0x80 >> (x & 0x7));
47 _display_buffer[y][x>>3] |= (0x80 >> (x & 0x7));
51void sharp96_drv::drawHLine(uint16_t xs, uint16_t y, uint16_t xe, color_t c)
53 for (
int x=xs; x <= xe; ++x)
57void sharp96_drv::drawVLine(uint16_t x, uint16_t ys, uint16_t ye, color_t c)
59 for (
int y=ys; y <= ye; ++y)
63void sharp96_drv::drawArea(uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye,
66 for (
int y=ys; y <= ye; ++y)
67 for (
int x=xs; x <= xe; ++x)
68 drawPixel(x, y, ps.getNext());
71void sharp96_drv::fillArea(uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye,
74 for (
int y=ys; y <= ye; ++y)
75 for (
int x=xs; x <= xe; ++x)
79void sharp96_drv::flush()
83 if (_setVCOM) cmd |= 0x40;
90 uint8_t * data_ptr = _display_buffer[0];
93 for (
int y=0; y < getSizeY(); ++y) {
94 writeData(reverseByte(y+1));
95 _spi.spiTx(data_ptr,
sizeof(_display_buffer[0]));
96 data_ptr +=
sizeof(_display_buffer[0]);
106 for (
int i=0; i < 5; ++i) ;
113void sharp96_drv::writeData(uint8_t data)
115 _spi.spiTx(&data, 1);
119uint8_t sharp96_drv::reverseByte(uint8_t data)
121#ifdef __MSP432P401R__
122 uint32_t input = data;
124 __asm__(
"rbit %0, %1\n" :
"=r"(output) :
"r"(input));
127 uint8_t y = 0, i = 0;
128 for (i=0; i < 8; i++) {