uint8_t databuf[640*960];
uint8_t buffer[640];
void Video_Frame_Capture(void)
{
*pPPI_FRAME = 960;
*pPPI_COUNT = 1279; //640*960
*pPPI_DELAY = 0;
*pPPI_CONTROL = 0x01AC; //POLS POLC all 0
*pDMA0_START_ADDR = buffer;
*pDMA0_X_COUNT = 640;
*pDMA0_X_MODIFY = 0x1;
*pDMA0_Y_COUNT = 1; //按线采
*pDMA0_Y_MODIFY = 0x1;
*pDMA0_PERIPHERAL_MAP = 0x0;
*pDMA0_CONFIG = WNR | WDSIZE_8| DMA2D | DI_EN;
}
int count = 0;
int i = 0,j = 0;
EX_INTERRUPT_HANDLER(DMA0_PPI_ISR)
{
*pDMA0_IRQ_STATUS = 0x1; //开DMA0通道的中断
CMOS_PPI_Disable();
count++;
for(i = 0; i < 640; i++) //将采到的每一行写入帧图像缓冲区
{
databuf[j] = buffer[i]; //buffer为按行采时的数据缓冲区,databuf为一帧图像的数据缓冲区
j++;
}
if(count = 500) //采到第500行时置高PF13
{
*pPORTFIO_DIR |= PF13;
*pPORTFIO |= PF13;
}
if(count = 960) //一帧图像采集完成 将PF13置低
{
count = 0;
captureFinished = 1; //采集一帧完成标志
*pPORTFIO &= ~PF13;
}
buffer[640] = 0;
Video_Frame_Capture();
}
1、麻烦andy帮我看下这块的程序,中断设置中是否有问题,我后打印输出的图像数据第一帧全为0,后面有数据但是图像不对。。PF13的波形也不对
2、根据help中的SIC表,我按以下设置,TIMER2进不了中断。。这个和上面的程序没有关系
void InitInterrupts(void)
{
*pSIC_IAR4 = 0xfffffff4;
register_handler(ik_ivg12, TIMER2_ISR);
*pSIC_IMASK1 = 0x00000004;
}
「该帖子被 unconscious 在 2014-02-19 11:34:29 编辑过」