mirror of
https://github.com/JorjBauer/aiie.git
synced 2024-12-26 23:29:21 +00:00
more debugging: async still not working, but looking at 8-bit color status & bios
This commit is contained in:
parent
6d41176ee6
commit
eb60d86ab5
@ -79,6 +79,10 @@
|
|||||||
|
|
||||||
#define TCR_MASK (LPSPI_TCR_PCS(3) | LPSPI_TCR_FRAMESZ(31) | LPSPI_TCR_CONT | LPSPI_TCR_RXMSK )
|
#define TCR_MASK (LPSPI_TCR_PCS(3) | LPSPI_TCR_FRAMESZ(31) | LPSPI_TCR_CONT | LPSPI_TCR_RXMSK )
|
||||||
|
|
||||||
|
#define _565toR(c) ( ((c) & 0xF800) >> 8 )
|
||||||
|
#define _565toG(c) ( ((c) & 0x07E0) >> 3 )
|
||||||
|
#define _565toB(c) ( ((c) & 0x001F) << 3 )
|
||||||
|
|
||||||
static RA8875_t4 *_dmaActiveDisplay[3];
|
static RA8875_t4 *_dmaActiveDisplay[3];
|
||||||
|
|
||||||
RA8875_t4::RA8875_t4(const uint8_t cs_pin, const uint8_t rst_pin, const uint8_t mosi_pin, const uint8_t sck_pin, const uint8_t miso_pin)
|
RA8875_t4::RA8875_t4(const uint8_t cs_pin, const uint8_t rst_pin, const uint8_t mosi_pin, const uint8_t sck_pin, const uint8_t miso_pin)
|
||||||
@ -95,7 +99,6 @@ RA8875_t4::RA8875_t4(const uint8_t cs_pin, const uint8_t rst_pin, const uint8_t
|
|||||||
_pspi = NULL;
|
_pspi = NULL;
|
||||||
_pfbtft = NULL;
|
_pfbtft = NULL;
|
||||||
_dma_state = 0;
|
_dma_state = 0;
|
||||||
pending_rx_count = 0;
|
|
||||||
_frame_complete_callback = NULL;
|
_frame_complete_callback = NULL;
|
||||||
_frame_callback_on_HalfDone = false;
|
_frame_callback_on_HalfDone = false;
|
||||||
_dma_frame_count = 0;
|
_dma_frame_count = 0;
|
||||||
@ -146,7 +149,6 @@ void RA8875_t4::begin(uint32_t spi_clock, uint32_t spi_clock_read)
|
|||||||
// DIRECT_WRITE_HIGH(_csport, _cspinmask);
|
// DIRECT_WRITE_HIGH(_csport, _cspinmask);
|
||||||
digitalWriteFast(_cs, HIGH);
|
digitalWriteFast(_cs, HIGH);
|
||||||
|
|
||||||
pending_rx_count = 0; // Make sure it is zero if we we do a second begin...
|
|
||||||
_spi_tcr_current = _pimxrt_spi->TCR; // get the current TCR value
|
_spi_tcr_current = _pimxrt_spi->TCR; // get the current TCR value
|
||||||
|
|
||||||
maybeUpdateTCR(LPSPI_TCR_PCS(3)|LPSPI_TCR_FRAMESZ(7));
|
maybeUpdateTCR(LPSPI_TCR_PCS(3)|LPSPI_TCR_FRAMESZ(7));
|
||||||
@ -348,11 +350,10 @@ bool RA8875_t4::updateScreenAsync(bool update_cont)
|
|||||||
while (pftbft < pfbtft_end) {
|
while (pftbft < pfbtft_end) {
|
||||||
_pspi->transfer(*pftbft++);
|
_pspi->transfer(*pftbft++);
|
||||||
}
|
}
|
||||||
pending_rx_count++; // waiting for one more full transaction to complete
|
|
||||||
waitTransmitComplete();
|
|
||||||
_endSend();
|
_endSend();
|
||||||
|
|
||||||
return;
|
return true;
|
||||||
|
// DEBUG END
|
||||||
|
|
||||||
if (!_pfbtft) return false;
|
if (!_pfbtft) return false;
|
||||||
|
|
||||||
@ -427,9 +428,9 @@ void RA8875_t4::fillWindow(uint16_t color)
|
|||||||
_writeRegister(RA8875_DLVER0 + 1,y1 >> 8);
|
_writeRegister(RA8875_DLVER0 + 1,y1 >> 8);
|
||||||
|
|
||||||
// Set the color
|
// Set the color
|
||||||
_writeRegister(RA8875_FGCR0,((color & 0xF800) >> 11)); // 5 bits red
|
_writeRegister(RA8875_FGCR0,_565toR(color) >> 2); // 5 bits red -> 3 bits red
|
||||||
_writeRegister(RA8875_FGCR0+1,((color & 0x07E0) >> 5)); // 6 bits green
|
_writeRegister(RA8875_FGCR0+1,_565toG(color) >> 3); // 6 bits green -> 3 bits green
|
||||||
_writeRegister(RA8875_FGCR0+2,((color & 0x001F) )); // 5 bits blue
|
_writeRegister(RA8875_FGCR0+2,_565toB(color) >> 3); // 5 bits blue -> 2 bits blue
|
||||||
|
|
||||||
// Send fill
|
// Send fill
|
||||||
writeCommand(RA8875_DCR); // draw control register
|
writeCommand(RA8875_DCR); // draw control register
|
||||||
@ -619,18 +620,6 @@ void RA8875_t4::process_dma_interrupt(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RA8875_t4::waitTransmitComplete(void) {
|
|
||||||
uint32_t tmp __attribute__((unused));
|
|
||||||
|
|
||||||
while (pending_rx_count) {
|
|
||||||
if ((_pimxrt_spi->RSR & LPSPI_RSR_RXEMPTY) == 0) {
|
|
||||||
tmp = _pimxrt_spi->RDR; // Read any pending RX bytes in
|
|
||||||
pending_rx_count--; //decrement count of bytes still levt
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_pimxrt_spi->CR = LPSPI_CR_MEN | LPSPI_CR_RRF; // Clear receive FIFO and leave module enabled
|
|
||||||
}
|
|
||||||
|
|
||||||
// Other possible methods, that I don't think we'll need:
|
// Other possible methods, that I don't think we'll need:
|
||||||
// void RA8875_t4::setFrameCompleteCB(void (*pcb)(), bool fCallAlsoHalfDone)
|
// void RA8875_t4::setFrameCompleteCB(void (*pcb)(), bool fCallAlsoHalfDone)
|
||||||
|
|
||||||
|
@ -49,7 +49,6 @@ private:
|
|||||||
// These are the old style RA8875 calls -- replace them ***
|
// These are the old style RA8875 calls -- replace them ***
|
||||||
void writeCommand(const uint8_t d);
|
void writeCommand(const uint8_t d);
|
||||||
void writeData16(uint16_t data);
|
void writeData16(uint16_t data);
|
||||||
void waitTransmitComplete(void);
|
|
||||||
|
|
||||||
void _writeData(uint8_t data);
|
void _writeData(uint8_t data);
|
||||||
void _writeRegister(const uint8_t reg, uint8_t val);
|
void _writeRegister(const uint8_t reg, uint8_t val);
|
||||||
@ -91,7 +90,6 @@ private:
|
|||||||
uint32_t _spi_fcr_save;
|
uint32_t _spi_fcr_save;
|
||||||
uint8_t *_pfbtft;
|
uint8_t *_pfbtft;
|
||||||
volatile uint8_t _dma_state;
|
volatile uint8_t _dma_state;
|
||||||
uint8_t pending_rx_count;
|
|
||||||
uint32_t _spi_tcr_current;
|
uint32_t _spi_tcr_current;
|
||||||
volatile uint32_t _dma_frame_count;
|
volatile uint32_t _dma_frame_count;
|
||||||
volatile uint16_t _dma_sub_frame_count;
|
volatile uint16_t _dma_sub_frame_count;
|
||||||
|
@ -80,7 +80,7 @@ TeensyDisplay::~TeensyDisplay()
|
|||||||
|
|
||||||
void TeensyDisplay::flush()
|
void TeensyDisplay::flush()
|
||||||
{
|
{
|
||||||
// Nothing to flush, b/c there's no DMA in this driver and we draw it all in real-time. (Eww.)
|
tft.updateScreenAsync(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TeensyDisplay::redraw()
|
void TeensyDisplay::redraw()
|
||||||
@ -114,7 +114,10 @@ void TeensyDisplay::blit()
|
|||||||
// Start updates, if they're not running already
|
// Start updates, if they're not running already
|
||||||
// if (!tft.asyncUpdateActive())
|
// if (!tft.asyncUpdateActive())
|
||||||
// tft.updateScreenAsync(true);
|
// tft.updateScreenAsync(true);
|
||||||
tft.updateScreenAsync(false);
|
// DEBUGGING: not refreshing every time so I can see the machine boot
|
||||||
|
static uint32_t ctr = 0;
|
||||||
|
if (((ctr++) & 0x0F) == 0)
|
||||||
|
tft.updateScreenAsync(false);
|
||||||
|
|
||||||
// draw overlay, if any, occasionally
|
// draw overlay, if any, occasionally
|
||||||
{
|
{
|
||||||
@ -209,12 +212,12 @@ void TeensyDisplay::clrScr(uint8_t coloridx)
|
|||||||
if (coloridx == c_black) {
|
if (coloridx == c_black) {
|
||||||
tft.fillWindow();
|
tft.fillWindow();
|
||||||
} else if (coloridx == c_white) {
|
} else if (coloridx == c_white) {
|
||||||
tft.fillWindow();
|
tft.fillWindow(loresPixelColors[c_white]);
|
||||||
} else {
|
} else {
|
||||||
uint16_t color16 = loresPixelColors[c_black];
|
uint16_t color16 = loresPixelColors[c_black];
|
||||||
if (coloridx < 16)
|
if (coloridx < 16)
|
||||||
color16 = loresPixelColors[coloridx];
|
color16 = loresPixelColors[coloridx];
|
||||||
tft.fillWindow();
|
tft.fillWindow(color16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user