[求助] 求助KEIL MDK 逻辑分析仪的使用,仿真M3的PWM

youyi_xie   2011-11-7 10:39 楼主

求助KEIL MDK 逻辑分析仪的使用,仿真M3的PWM

 是不是symbol 里面POARTA 右边的地址没有啊?!

 

  • QQ截图未命名.jpg
  • QQ截图未命名1.jpg
  • QQ截图未命名2.jpg

回复评论 (12)

And Mask:为1 表示输出 PA1
为2,Shift Right为1,表示输出 PA2
点赞  2011-11-7 10:50

回复 沙发 Study_Stellaris 的帖子

这个我知道啊!上面没有波形,不知道是不是我设置的有问题!
点赞  2011-11-7 12:03
那你就要检查一下你的程序,看看哪两个 GPIO 输出波形。
点赞  2011-11-7 12:06

回复 4楼 Study_Stellaris 的帖子

谢谢楼上的热心解答,单步运行到下面这个函数单片机就进入异常中断了!
HWREG(ulGen + PWM_O_X_CTL) = ((HWREG(ulGen + PWM_O_X_CTL) &
                                   ~(PWM_X_CTL_MODE | PWM_X_CTL_DEBUG |
                                     PWM_X_CTL_LATCH | PWM_X_CTL_MINFLTPER |
                                     PWM_X_CTL_FLTSRC | PWM_X_CTL_DBFALLUPD_M |
                                     PWM_X_CTL_DBRISEUPD_M |
                                     PWM_X_CTL_DBCTLUPD_M |
                                     PWM_X_CTL_GENBUPD_M |
                                     PWM_X_CTL_GENAUPD_M |
                                     PWM_X_CTL_LOADUPD | PWM_X_CTL_CMPAUPD |
                                     PWM_X_CTL_CMPBUPD)) | ulConfig);
点赞  2011-11-7 14:54

回复 5楼 youyi_xie 的帖子

这个是 PWMConfigure 里边的。
检查一下,是不是 API 参数哪里不对啊。最好把程序贴出来看看。
点赞  2011-11-7 16:03

回复 6楼 Study_Stellaris 的帖子

ulGen + PWM_O_X_CTL 出来地址是0x40028080  memory map 里面这一段没有执行读写
0x40020000 - 0x40020FFF read write
0x40024000 - 0x40027FFF read write
0x40030000 - 0x40033FFF read write
0x40038000 - 0x40038FFF read write
0x4003C000 - 0x4003CFFF read write
0x400FE000 - 0x400FFFFF read write
0xE0000000 - 0xE0000FFF read write
0xE000E000 - 0xE000EFFF read write,怎么把一段加进入啊?!
点赞  2011-11-7 16:21

回复 7楼 youyi_xie 的帖子

用的是哪颗片子,选对 Device 之后,Keil 不是自己已经把该添加的都添加进去了吗?
我用过,可以查看 PWM 啊。
点赞  2011-11-7 16:41

回复 8楼 Study_Stellaris 的帖子

#include        //LM3S2601

#define pwm0  GPIO_PIN_0

void init(void );

int main()
{
       
        unsigned int x=1000;

        init();
        while(1)
        {
                        PWMPulseWidthSet(PWM_BASE,PWM_OUT_0,x);
                        SysCtlDelay(1000000);
                        x=x+100;
                        if(x>6000)
                        x=1000;
        }       
}

void init()
{
        SysCtlLDOSet(SYSCTL_LDO_2_75V);                 //系统内核工作电压2.75V
    SysCtlClockSet(SYSCTL_SYSDIV_8 |                 //系统8分频 系统频率=200/8=25MHz
                       SYSCTL_USE_PLL |                  //使用锁相环PLL
                                   SYSCTL_OSC_MAIN |                 //使用主振荡器时钟
                   SYSCTL_XTAL_8MHZ);                //系统晶振频率8MHz                                   
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);      //enable the GPIOH   PH0->CCP6,
        SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);                  //enable the PWM
        SysCtlPWMClockSet(SYSCTL_PWMDIV_1 );                          //set clk of pwm

        GPIOPinTypePWM(GPIO_PORTH_BASE,pwm0);                          //  select the PWM GPIOs

        PWMGenConfigure(PWM_BASE,PWM_GEN_3 ,PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC );           //configure

        PWMGenPeriodSet(PWM_BASE,PWM_GEN_3,6000);                 //pwm period set
        PWMPulseWidthSet(PWM_BASE,PWM_OUT_6,3000);

    PWMOutputState(PWM_BASE, PWM_OUT_6_BIT,true );        // select the pwm and run
        PWMGenEnable(PWM_BASE,PWM_GEN_0);                                                                                                           //pwm out
}
晕死了!是不是我装的keil有问题啊,仿真的时候运行到PWMGenConfigure就报错!
*** error 65: access violation at 0x40028100 : no 'read' permission
*** error 65: access violation at 0x40028100 : no 'write' permission
点赞  2011-11-7 17:04

回复 9楼 youyi_xie 的帖子

PWMGenEnable(PWM_BASE,PWM_GEN_0); //pwm out 这个地方应该是 PWMGenEnable(PWM_BASE,PWM_GEN_3); //pwm out

LM3S2601 不带 PWM Module啊。

[ 本帖最后由 Study_Stellaris 于 2011-11-7 17:41 编辑 ]
点赞  2011-11-7 17:23

回复 10楼 Study_Stellaris 的帖子

唉!晕
结贴吧!
我看那个PDF上面写着
1.4.2 电机控制外设
为了加强电机控制,LM3S2601控制器包含脉宽调制(PWM)输出。
1.4.2.1 PWM
脉宽调制是一种对模拟信号电平进行数字编码的强大技术。 使用高分辨率计数器来产生方波,并且
通过调整方波的占空比来对模拟信号进行编码。 典型的应用包括开关电源和电机控制。
在LM3S2601上,PWM 运动控制功能可通过以下实现:
26 四月 11, 2008
广州周立功单片机发展有限公司 www.zlgmcu.com
结构概述
■ 使用CCP管脚的通用定时器的运动控制特性
CCP管脚(见187页)
通用定时器模块的CCP(捕获比较PWM)管脚可由软件编程来支持简单的PWM模式,在该模式中
PWM信号的输出反相可由软件编程控制。
刚下了一个Cotex-M3的选型手册上面LM3S2601是0个PWM !!!

谢谢Study_Stellaris的耐心解答!谢谢!
点赞  2011-11-7 21:50

回复 11楼 youyi_xie 的帖子

LM3S2601 应该是不包含 PWM 模块。
不过可以通过 Timer 的 CCP 引脚输出 PWM 波形。
只不过这个应该是不带死区控制的。
点赞  2011-11-8 20:22
用MKD仿真PWM,就不能再看PORTx.X,这看的是管脚,
应该看TIMx->CCRX,应该看这一类的寄存器,添加方法与添加引脚寄存器的方法是相同 的;
比如你要看TIM2的CH2输出的PWM波形;
那么就应该添加“TIM3->CCR2”
这时候应该特别注意的是“Display Type”里面应该选择“Analog”
点赞  2013-8-3 23:23
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复