查看: 3781|回复: 0

[其他] MC56F8366 与OV7620数据采集 中断

[复制链接]

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
7
最后登录
1970-1-1
发表于 2012-5-18 14:22:50 | 显示全部楼层 |阅读模式
我用8366的两个外部中断采集数据,但是始终没有采集到
我也不太清楚问题出在哪?菜鸟一枚,没办法。现在贴出代码。望大神指导一二
#include
#include
#include "IO_Map.h"
//-----------函数声明-----------------//


<span style="font-size: large;"><span style="font-family: 隶书;">
void IRQA_Interrupt(void);
void IRQB_Interrupt(void);
void pllInitialization(void);
void GPIO_Init(void);
void Interrupt_Init(void);
void PWM_Init(void);
unsigned int val0=6750,val1;
unsigned char Image_Data[ROW][COLUMN];
unsigned char Point_C, VSYN_C=0, flag, m = 0,n=0,ready,count,row=0;
 
/***************************************************
** 函数名称: PLL_Init
** 功能描述: 时钟初始化函数
** 说明:
****************************************************/
void pllInitialization(void)
{
  setReg(PLLCR, 0x81);      //使能PLL
  setReg16(PLLDB,315);       //设置时钟预分频
  while(!getRegBit(PLLSR, LCK0)){}   //等待PLL配置完成
  setReg(PLLCR, 0x82);      //设置时钟源后分频
  
}
/**************************************************
** 函数名称: IRQ
** 功能描述: 中断初始化函数
** 说明:
****************************************************/
void Interrupt_Init(void)
{
    asm(bfset #0x300,SR);
  setRegBitGroup(INTC_IPR2,IRQA_IPL,3);    //行中断优先级为2
    setRegBit(INTC_ICTL,IRQA_EDG);           //行中断口下降沿触发
    setRegBitGroup(INTC_IPR2,IRQB_IPL,3);    //场中断优先级为2
    setRegBit(INTC_ICTL,IRQB_EDG);           //场中断下降沿触发
}
/**************************************************
** 函数名称: GPIO
** 功能描述: 普通IO口初始化函数
** 说明:
****************************************************/
void GPIO_Init(void)
{
  GPIO_F_PER=0x0000;                      //配置GPIO_F低8位为通用I/O口     
     GPIO_F_DDR=0x0000;                      //设置GPIO_F低8位为输入模式
  GPIO_F_PUR=0xffff;
}
/**************************************************
** 函数名称: PWMA
** 功能描述: 舵机电机PWM初始化函数
** 说明:
****************************************************/
void PWM_Init(void)
{
 setReg16(PWMA_PMICCR, 0);                  //配置内部校准控制器   
 setReg16(PWMA_PMCTL, 0);                   //配置PWM控制寄存器
 setReg16(PWMA_PMFCTL, 5);                  //配置错误控制寄存器
 setReg16(PWMA_PMDISMAP1, 0);               //配置失效映射寄存器
 setReg16(PWMA_PMDISMAP2, 0);              
 setReg16(PWMA_PMOUT, 0);                //关闭输出
 setReg16(PWMA_PMCCR, 0x0100);              //配置通道控制寄存器,PWMA1占空比为零
 setReg16(PWMA_PMCFG, 0x0e);                //使用中心对齐,独立PWM模式
 setReg16(PWMA_PWMVAL1,250);                //设置PWMA0的占空比为20%
 setReg16(PWMA_PWMCM, 563);                //装载计数器模数寄存器10KHz 
 setReg16Bits(PWMA_PMCTL, 0xC3);     //配置PWM控制寄存器,自动重装载 
 setReg16(PWMA_PMOUT, 0x8000);           //使能输出 

//设置舵机工作方式
 setReg16(PWMB_PMICCR, 0);                  //配置内部校准控制器   
 setReg16(PWMB_PMCTL, 0);                   //配置PWM控制寄存器
 setReg16(PWMB_PMFCTL, 5);                  //配置错误控制寄存器
 setReg16(PWMB_PMDISMAP1, 0);               //配置失效映射寄存器
 setReg16(PWMB_PMDISMAP2, 0);              
 setReg16(PWMB_PMOUT, 0);                //关闭输出
 setReg16(PWMB_PMCCR,0);                    //配置通道控制寄存器
 setReg16(PWMB_PMCFG, 0x0e);                //使用中心对齐,独立PWM模式
 setReg16(PWMB_PWMVAL0,6750);             //设置PWMB0的高电平时间为1.5ms
 setReg16(PWMB_PWMCM, 32000);            //装载计数器模数寄存器 
 setReg16Bits(PWMB_PMCTL, 0xC3);     //配置PWM控制寄存器,自动重装载 
 setReg16(PWMB_PMOUT, 0x8000);           //使能输出 
}


//---------------------中断定义---------------------
#pragma interrupt alignsp
/**************************************************
** 函数名称: 中断处理函数
** 功能描述: 行中断处理函数
** 输    入: 无
** 输    出: 无
** 说明: 
***************************************************/
void IRQB_Interrupt(void)                 
{

 unsigned char i;
 int x;
 count++;
 if((row>47)||(flag
我知道答案 目前已有0人回答
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-28 11:49 , Processed in 0.082462 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表