您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 此程序为何进不了中断
本帖共有1279个阅读者
发表帖子 发表投票 回复主题
此程序为何进不了中断
laozhoujzl(论坛新手)
laozhoujzl
头衔:社区公民
帮派:无帮无派
帖数:12
金钱:250
积分:24
注册时间:2013/3/20
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
此程序为何进不了中断

此程序为BF609从摄像头读入至sdram中

/********主函数********/

InitEPPI2DMA();
InitEPPI2();

EnableEPPI2_DMA();

/****子程序里***/

void InitEPPI2DMA(void)
{
*pREG_DMA31_ADDRSTART = (void *)CmosBuffer1;

*pREG_DMA31_XCNT = IMAGE_WIDTH / 2;
*pREG_DMA31_XMOD = 0x4;
*pREG_DMA31_YCNT = IMAGE_HEIGHT;
*pREG_DMA31_YMOD = 0x4;

*pREG_DMA31_CFG = ENUM_DMA_CFG_WRITE |
       ENUM_DMA_CFG_MSIZE04 |
       ENUM_DMA_CFG_PSIZE04 |
       ENUM_DMA_CFG_ADDR2D |
       ENUM_DMA_CFG_SYNC |
       ENUM_DMA_CFG_STOP |
       BITM_DMA_CFG_INT;
      //ENUM_DMA_CFG_AUTO;
ssync();
}

void InitEPPI2()
{
*pREG_EPPI2_CTL=0;
*pREG_EPPI2_CTL = ENUM_EPPI_CTL_RXMODE |
       ENUM_EPPI_CTL_PACK_EN|
       ENUM_EPPI_CTL_DLEN08 |
       ENUM_EPPI_CTL_NON656 |
       ENUM_EPPI_CTL_SYNC2
       ;

ssync();
    *pREG_EPPI2_LINE = IMAGE_WIDTH*2;
    ssync();
*pREG_EPPI2_FRAME = IMAGE_HEIGHT;
ssync();
}

void EnableEPPI2_DMA(void)
{
    *pREG_DMA31_CFG |= ENUM_DMA_CFG_EN;
    ssync();
    *pREG_EPPI2_CTL |= ENUM_EPPI_CTL_EN;
    ssync();
}

void InitEPPI2Int(void)
{
ADI_INT_STATUS status;
   status = adi_int_InstallHandler((uint32_t)INTR_EPPI2_CH0_DMA ,adi_adrp_ctl_dma31callback,(void*)0,true);
   adi_int_EnableInt(INTR_EPPI2_CH0_DMA,true);

}

void adi_adrp_ctl_dma31callback(uint32_t iid, void* handlerArg)
{
uint16_t val = (uint16_t)0;
  val = *pREG_DMA31_STAT;
  *pREG_DMA31_STAT |= (uint16_t)(val & 0xffffffff);/* Write 1 to clear interrupt */
  val = *pREG_DMA31_STAT;
  *pREG_DMA31_STAT |= (uint16_t)(val & 0xffffffff);/* Write 1 to clear interrupt */
// adi_int_EnableInt(INTR_EPPI2_CH0_DMA,false);

  if (Frame0Flag == true)
   {
   Frame0Flag = false;
   *pREG_DMA31_ADDRSTART = CmosBuffer1;
   }
  else
      {
    Frame0Flag = true;
    *pREG_DMA31_ADDRSTART = CmosBuffer2;

      }
  EnableDMA35();
  EnableDMA37();
  EnablePixc();
  printf("dma31\n");
// adi_int_EnableInt(INTR_EPPI2_CH0_DMA,true);

  //adi_int_EnableInt(INTR_PIXC0_CH2_DMA,true);
}


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/3/22 15:26:27
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你测量你的摄像头同步信号,以及时钟是否正常,如果正常,打开相应的DMA寄存器,查看DMA采集计数器以及错误和完成标志,如果没有计数,就看你PPI的时序配置。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/3/23 11:54:47
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154549 Call, 1 Queries, Processed in 0.015625 second(s),