void max7456ReInit(void) { uint8_t srdata = 0; static bool firstInit = true; __spiBusTransactionBegin(busdev); switch (videoSignalCfg) { case VIDEO_SYSTEM_PAL: videoSignalReg = VIDEO_MODE_PAL | OSD_ENABLE; break; case VIDEO_SYSTEM_NTSC: videoSignalReg = VIDEO_MODE_NTSC | OSD_ENABLE; break; case VIDEO_SYSTEM_AUTO: srdata = max7456Send(MAX7456ADD_STAT, 0x00); if (VIN_IS_NTSC(srdata)) { videoSignalReg = VIDEO_MODE_NTSC | OSD_ENABLE; } else if (VIN_IS_PAL(srdata)) { videoSignalReg = VIDEO_MODE_PAL | OSD_ENABLE; } else { // No valid input signal, fallback to default (XXX NTSC for now) videoSignalReg = VIDEO_MODE_NTSC | OSD_ENABLE; } break; } if (videoSignalReg & VIDEO_MODE_PAL) { //PAL maxScreenSize = VIDEO_BUFFER_CHARS_PAL; } else { // NTSC maxScreenSize = VIDEO_BUFFER_CHARS_NTSC; } // Set all rows to same charactor black/white level max7456Brightness(0, 2); // Re-enable MAX7456 (last function call disables it) __spiBusTransactionBegin(busdev); // Make sure the Max7456 is enabled max7456Send(MAX7456ADD_VM0, videoSignalReg); max7456Send(MAX7456ADD_HOS, hosRegValue); max7456Send(MAX7456ADD_VOS, vosRegValue); max7456Send(MAX7456ADD_DMM, displayMemoryModeReg | CLEAR_DISPLAY); __spiBusTransactionEnd(busdev); // Clear shadow to force redraw all screen in non-dma mode. memset(shadowBuffer, 0, maxScreenSize); if (firstInit) { max7456DrawScreenSlow(); firstInit = false; } }
void max7456ReInit(void) { uint8_t maxScreenRows; uint8_t srdata = 0; uint16_t x; static bool firstInit = true; ENABLE_MAX7456; switch(videoSignalCfg) { case VIDEO_SYSTEM_PAL: videoSignalReg = VIDEO_MODE_PAL | OSD_ENABLE; break; case VIDEO_SYSTEM_NTSC: videoSignalReg = VIDEO_MODE_NTSC | OSD_ENABLE; break; case VIDEO_SYSTEM_AUTO: srdata = max7456Send(MAX7456ADD_STAT, 0x00); if (VIN_IS_NTSC(srdata)) { videoSignalReg = VIDEO_MODE_NTSC | OSD_ENABLE; } else if (VIN_IS_PAL(srdata)) { videoSignalReg = VIDEO_MODE_PAL | OSD_ENABLE; } else { // No valid input signal, fallback to default (XXX NTSC for now) videoSignalReg = VIDEO_MODE_NTSC | OSD_ENABLE; } break; } if (videoSignalReg & VIDEO_MODE_PAL) { //PAL maxScreenSize = VIDEO_BUFFER_CHARS_PAL; maxScreenRows = VIDEO_LINES_PAL; } else { // NTSC maxScreenSize = VIDEO_BUFFER_CHARS_NTSC; maxScreenRows = VIDEO_LINES_NTSC; } // Set all rows to same charactor black/white level. for(x = 0; x < maxScreenRows; x++) { max7456Send(MAX7456ADD_RB0 + x, BWBRIGHTNESS); } // Make sure the Max7456 is enabled max7456Send(MAX7456ADD_VM0, videoSignalReg); max7456Send(MAX7456ADD_HOS, hosRegValue); max7456Send(MAX7456ADD_VOS, vosRegValue); max7456Send(MAX7456ADD_DMM, CLEAR_DISPLAY); DISABLE_MAX7456; // Clear shadow to force redraw all screen in non-dma mode. memset(shadowBuffer, 0, maxScreenSize); if (firstInit) { max7456RefreshAll(); firstInit = false; } }