AnsweredAssumed Answered

ADV7441a Timing without input connected

Question asked by babs76 on May 11, 2011
Latest reply on May 12, 2011 by babs76

Hello,

 

I'm using an ADV7441a with a TI DM6467 Davinci processor in NTSC mode. The Video Port Interface takes interrupts based on the EAV signal embedded in the BT.656 video stream. I noticed that if I boot without an input connected to the ADV7441a, the VPIF on the DaVinci is not getting interrupts based on the EAV signal. As soon as I connect the input, interrupts occur and will occur from that point forward with or without an input connected. This is also true even if I've programmed the ADV7441a to free run with the blue screen. As soon as I connect up an input, I get the actual blue screen. I've also noticed that blanking timing between lines is shorter (8 us) before the input is connected and about 10 us after it is connected. It seems that connecting the input to the ADV7441A is affecting the initial timing and then interrupts begin based on the EAV signal.

 

My question is this:

 

Why does having an input connected affect the timing output of the ADV7441a, even in free-run / blue screen mode? This seems to be something with the ADV7441a and not the DM6467. I don't have this issue when I'm running the ADV7441a in 720p. There is blue screen at boot-up if no signal is connected and interrupts occur.

 

I think I may not have something programmed properly. Ideally, I'd like interrupts based on the EAV codes whether there is an input connected or not.

 

Here is how I've programmed it for NTSC:

 

#define ADV7441A_REG_INPUT_CONTROL          0x00
#define ADV7441A_REG_OUTPUT_CONTROL         0x03
#define ADV7441A_REG_PRIMARY_MODE           0x05
#define ADV7441A_REG_VIDEO_STANDARD         0x06
#define ADV7441A_REG_VERT_SCALE_VALUE_1     0x1D
#define ADV7441A_REG_CP_OUTPUT_SELECTION    0x6B
#define ADV7441A_REG_DEFAULT_Y_VALUE        0x0C
#define ADV7441A_REG_CP_DEF_COL_1           0xBF

 

{   // NTSC @ 30 Hz
        .name                   = "NTSC-30",
        .input_control          = 0x5E,
        .output_control         = 0x0C,
        .primary_mode           = 0x00,
        .video_standard         = 0x02,
        .vert_scale_value_1     = 0x40,
        .cp_output_selection    = 0xC2,
        .default_y_value        = 0x37,
        .cp_def_col_1           = 0x13,
    },

 

err |= adv7441a_write_reg(sd, ADV7441A_REG_PRIMARY_MODE,
                     tvpformats->primary_mode);

err |= adv7441a_write_reg(sd, ADV7441A_REG_VIDEO_STANDARD,
                     tvpformats->video_standard);

err |= adv7441a_write_reg(sd, ADV7441A_REG_OUTPUT_CONTROL,
                     tvpformats->output_control);

err |= adv7441a_write_reg(sd, ADV7441A_REG_VERT_SCALE_VALUE_1,
                     tvpformats->vert_scale_value_1);

err |= adv7441a_write_reg(sd, ADV7441A_REG_DEFAULT_Y_VALUE,
                     tvpformats->default_y_value);

err |= adv7441a_write_reg(sd, ADV7441A_REG_CP_DEF_COL_1,
                     tvpformats->cp_def_col_1);

err = adv7441a_write_reg(sd, ADV7441A_REG_INPUT_CONTROL,
                     tvpformats->input_control);


err |= adv7441a_write_reg(sd, ADV7441A_REG_CP_OUTPUT_SELECTION,
                     tvpformats->cp_output_selection);

err |= adv7441a_write_reg(sd, 0x31,0x1A);
err |= adv7441a_write_reg(sd, 0x32,0x81);
err |= adv7441a_write_reg(sd, 0x33,0x84);
err |= adv7441a_write_reg(sd, 0x34,0x00);
err |= adv7441a_write_reg(sd, 0x35,0x00);
err |= adv7441a_write_reg(sd, 0x36,0x7d);
err |= adv7441a_write_reg(sd, 0x37,0xa1);
err |= adv7441a_write_reg(sd, 0xe5,0x41);
err |= adv7441a_write_reg(sd, 0xe6,0x84);
err |= adv7441a_write_reg(sd, 0xe7,0x06);

Outcomes