📄 adv7183_reset.c
字号:
#include "main.h"
/********************************************************************************/
/***** Reset_ADV7183() *****/
/***** Resets the Video decoder through PF2 *****/
/********************************************************************************/
// specific defines for this module. Not used anywhere else
#define tvp5150_OE_bit 2 // ADV7183 /OE = PF2
#define tvp5150_RESET_bit 13 // ADV7183 /reset = PF13
#define tvp5150_Lock 0x0000ffff // For startup locktime delay
#define tvp5150_Reset_Delay 0x04000000 // For delay after reset
void Reset_tvp5150(void )
{ long delay_time;
// configure OE and RESET flags as output
*pFIO0_DIR |= (1 << tvp5150_OE_bit) | (1 << tvp5150_RESET_bit);
ssync();
// disable outputs
*pFIO0_FLAG_S = (1 << tvp5150_OE_bit); // set bit to disable ADV7183 outputs
ssync();
// generate reset pulse
*pFIO0_FLAG_C = (1 << tvp5150_RESET_bit); // clear bit to reset ADV7183
ssync();
for (delay_time = 0; delay_time < tvp5150_Reset_Delay; delay_time++)
asm("nop;");
*pFIO0_FLAG_S = (1 << tvp5150_RESET_bit); // set bit to re-enable ADV7183
ssync();
for (delay_time = 0; delay_time < tvp5150_Reset_Delay; delay_time++)
asm("nop;");
// now enable outputs
*pFIO0_FLAG_C = (1 << tvp5150_OE_bit); // clear bit to enable ADV7183 outputs
ssync();
for (delay_time = 0; delay_time < tvp5150_Lock; delay_time++)
asm("nop;");
}
bool Init_tvp5150(bool ISPAL)
{
if (!I2C_Init(0x40)) return false;
if (!I2C_Write5150(0x04, 0x00)) return false;
if (!I2C_Write5150(0x7f, 0x07)) return false;
if (!I2C_Write5150(0x00, 0x15)) return false;
if (!I2C_Write5150(0x41, 0x17)) return false;
//if (!I2C_Write5150(0xf1, 0x19)) return false;
if (!I2C_Write5150(0x16, 0x3a)) return false;
//if (!I2C_Write5150(0x04, 0x4e)) return false;
if (!I2C_Write5150(0x04, 0x50)) return false;
if (!I2C_Write5150(0x80, 0x0e)) return false;
if (!I2C_Write5150(0x20, 0x50)) return false;
if (!I2C_Write5150(0x18, 0x52)) return false;
if (!I2C_Write5150(0xed, 0x58)) return false;
if (!I2C_Write5150(0xc5, 0x77)) return false;
if (!I2C_Write5150(0x93, 0x7c)) return false;
if (!I2C_Write5150(0x00, 0x7d)) return false;
if (!I2C_Write5150(0x48, 0xd0)) return false;
if (!I2C_Write5150(0xa0, 0xd5)) return false;
if (!I2C_Write5150(0xea, 0xd7)) return false;
if (!I2C_Write5150(0x3e, 0xe4)) return false;
if (!I2C_Write5150(0x3e, 0xe9)) return false;
if (!I2C_Write5150(0x0f, 0xea)) return false;
if (!I2C_Write5150(0x00, 0x0e)) return false;
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -