• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 版主,开发板的PWM0测试控制不了占空比!!! 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 57992
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2011-11-01
最后登录: 2015-04-13
楼主  发表于: 2013-04-10 10:51

 版主,开发板的PWM0测试控制不了占空比!!!

为何使用PWM0没有波形输出?
头文件中没有关于寄存器TCON,TCNTB,TCMPB,TCFG1,TCFG0的虚拟地址的映射,
是跟S3C2410_VA_TIMER一致吗?

static void pwm_set_freq(unsigned long freq)
{
        unsigned long tcon;
        unsigned long tcnt;
        unsigned long tcfg1;
        unsigned long tcfg0;
        struct clk *clk_p;
        unsigned long pclk;
        tcon = __raw_readl(S3C2410_TCON);
        tcfg1 = __raw_readl(S3C2410_TCFG1);
        tcfg0 = __raw_readl(S3C2410_TCFG0);
        //prescaler = 50
        tcfg0 &= ~255;
        tcfg0 |= (50 - 1);
        //mux = 1/16
        tcfg1 &= ~15;
        tcfg1 |= 4;
        __raw_writel(tcfg1, S3C2410_TCFG1);
        __raw_writel(tcfg0, S3C2410_TCFG0);
        clk_p = clk_get(NULL, "pclk");
        pclk  = clk_get_rate(clk_p);
        tcnt  = (pclk/50/16)/freq;
        printk("PCLK = %lu, tcnt = %lu\n", pclk, tcnt);
        __raw_writel(tcnt, S3C2410_TCNTB(0));
        __raw_writel(tcnt/2, S3C2410_TCMPB(0));
        tcon &= ~0x1f;
        tcon |= 0xb;            //disable deadzone, auto-reload, inv-off, update TCNTB0&TCMPB0, start timer 0
        __raw_writel(tcon, S3C2410_TCON);
  tcon &= ~2;                     //clear manual update bit
        __raw_writel(tcon, S3C2410_TCON);
}
[ 此帖被xililena在2013-04-10 19:14重新编辑 ]
级别: 侠客
UID: 57992
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2011-11-01
最后登录: 2015-04-13
1楼  发表于: 2013-04-10 11:29
使用的是Tiny210V2,没有关于S5PV210_TCON等的定义,驱动中只有S3C2410_TCON的,最终映射到S3C2410_VA_TIMER,是和210一样的映射吗?
级别: 侠客
UID: 57992
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2011-11-01
最后登录: 2015-04-13
2楼  发表于: 2013-04-10 14:31
版主,急急急!!!!!!!!!!!!!!!!!!!
级别: 侠客
UID: 57992
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2011-11-01
最后登录: 2015-04-13
3楼  发表于: 2013-04-10 14:32
打电话说只解决操作问题,叫我发帖,帖发了没人回。邮件发了没人回。
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
4楼  发表于: 2013-04-10 16:45
蜂鸣器使用的就是PWM0,测试蜂鸣器见手册说明,linux, android, wince6均有实现。

另外,我们不对用户自己的程序提供支持,发贴论坛可以和其他网友交流讨论。
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
5楼  发表于: 2013-04-10 17:07
1) Linux-3.0.8中,没有定义S3C2410_VA_TIMER,在arch/arm/plat-samsung/include/plat/map-base.h 中定义了 S3C_VA_TIMER;
2) 寄存器定义是在 arch/arm/plat-samsung/include/plat/regs-timer.h
3) PWM0 已经被蜂鸣器使用,驱动是 drivers/char/mini210_pwm.c
4) 一般不建议直接操作寄存器,可使用内核已有的操作PWM的接口,具体可查看 arch/arm/plat-samsung/pwm.c,如何使用则可以参考蜂鸣器驱动
5) 另外还需要配置相应的GPIO,如果GPIO是input/output,则一定不会有波形输出
级别: 侠客
UID: 57992
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2011-11-01
最后登录: 2015-04-13
6楼  发表于: 2013-04-10 17:36
911gt3,你确定他这个映射是对的。我读取每个寄存器的值,都是读取失败。
unsigned long data = __raw_readl(S3C2410_TCNTB(0));
        printk("TCNTB0 data1 = %lu\n", data);
        data = __raw_readl(S3C2410_TCNTB(0));
        printk("TCNTB0 data2 = %lu\n", data);
        data = __raw_readl(S3C2410_TCMPB(0));
        printk("TCMPB0 data = %lu\n", data);
        data = __raw_readl(S3C2410_TCON);
        printk("TCON data = %lu\n", data);
        data = __raw_readl(S3C2410_TCFG1);
        printk("TCFG1 data = %lu\n", data);
        data = __raw_readl(S3C2410_TCFG0);
        printk("TCFG0 data = %lu\n", data);

读到的值:
[   78.214761] TCNTB0 data1 = 0
[   78.214787] TCNTB0 data2 = 0
[   78.214812] TCMPB0 data = 0
[   78.214836] TCON data = 0
[   78.214860] TCFG1 data = 0
[   78.214883] TCFG0 data = 0
级别: 侠客
UID: 57992
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2011-11-01
最后登录: 2015-04-13
7楼  发表于: 2013-04-10 17:38
版主,我现在就是测试的你的PWM0。不能控制占空比。你确定你的mini210_pwm.c中的程序能正确控制占空比?我现在测试只能简单的打开和关闭背光。
级别: 侠客
UID: 57992
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2011-11-01
最后登录: 2015-04-13
8楼  发表于: 2013-04-10 17:42
能否解释下,为什么读取寄存器的值,全是0?
级别: 侠客
UID: 57992
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2011-11-01
最后登录: 2015-04-13
9楼  发表于: 2013-04-10 18:54
测过开发板的PWM0控制蜂鸣器,永远都是一个叫声。一直响。控制不了占空比!!!
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go