主题 : 请教2440 TIMER2 3 4设置倍频冲突的问题?多谢了 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 6147
精华: 0
发帖: 91
金钱: 640 两
威望: 241 点
综合积分: 182 分
注册时间: 2009-05-21
最后登录: 2011-06-23
楼主  发表于: 2010-07-24 01:00

 请教2440 TIMER2 3 4设置倍频冲突的问题?多谢了

各位好

我驱动中需要用到TIMER1 TIMER2 TIMER3 ,我对TIMER2 和TIMER3 的TCFG0改了倍频值,由于TIMER2 3 4共用一个倍频,现在将2 3改了,
timer4也被改了,timer4是用到系统时钟的,现在我上层的定时器应用程序隔5秒才运行一次(本来是1秒一次),请教,如何单独设置TIMER2 TIMER3,保持
TIMER4不变呢? 还是我对寄存器理解错了,倍频值可以对单个TIMER进行更改,更改后,只要启动TCON,更新即可,这样类推,对2 3 更改,只要不改变TCON的TIMER4
设置就可以了?谢谢大家了

下面是内核中对TIMER4进行的设置,是不是像以下做就可以了吗?
复制代码
  1. tcnt--;
  2.     printk("timer tcon=%08lx, tcnt %04lx, tcfg %08lx,%08lx, usec %08lx\n",
  3.            tcon, tcnt, tcfg0, tcfg1, timer_usec_ticks);
  4.     /* check to see if timer is within 16bit range... */
  5.     if (tcnt > 0xffff) {
  6.         panic("setup_timer: HZ is too small, cannot configure timer!");
  7.         return;
  8.     }
  9.     __raw_writel(tcfg1, S3C2410_TCFG1);
  10.     __raw_writel(tcfg0, S3C2410_TCFG0);
  11.     timer_startval = tcnt;
  12.     __raw_writel(tcnt, S3C2410_TCNTB(4));
  13.     /* ensure timer is stopped... */
  14.     tcon &= ~(7<<20);
  15.     tcon |= S3C2410_TCON_T4RELOAD;
  16.     tcon |= S3C2410_TCON_T4MANUALUPD;
  17.     __raw_writel(tcon, S3C2410_TCON);
  18.     __raw_writel(tcnt, S3C2410_TCNTB(4));
  19.     __raw_writel(tcnt, S3C2410_TCMPB(4));
  20.     /* start the timer running */
  21.     tcon |= S3C2410_TCON_T4START;
  22.     tcon &= ~S3C2410_TCON_T4MANUALUPD;
  23.     __raw_writel(tcon, S3C2410_TCON);
级别: 侠客
UID: 6147
精华: 0
发帖: 91
金钱: 640 两
威望: 241 点
综合积分: 182 分
注册时间: 2009-05-21
最后登录: 2011-06-23
1楼  发表于: 2010-07-24 17:45
上午看了下,老版2.4内核中是可以这样的,不过还没具体看是如何操作的
级别: 侠客
UID: 6147
精华: 0
发帖: 91
金钱: 640 两
威望: 241 点
综合积分: 182 分
注册时间: 2009-05-21
最后登录: 2011-06-23
2楼  发表于: 2010-07-25 20:58
各位,请帮下忙
级别: 侠客
UID: 6147
精华: 0
发帖: 91
金钱: 640 两
威望: 241 点
综合积分: 182 分
注册时间: 2009-05-21
最后登录: 2011-06-23
3楼  发表于: 2010-07-26 14:30
我在plat-s3c/timer.c中加上了
TCFG0  = (TCFG0_DZONE(0) | TCFG0_PRE1(PRESCALE) | TCFG0_PRE0(0));  
TCFG1  &= ~(0xf<<16);    
但是timer4的系统定时器还是5秒 == 1秒???
级别: 侠客
UID: 6147
精华: 0
发帖: 91
金钱: 640 两
威望: 241 点
综合积分: 182 分
注册时间: 2009-05-21
最后登录: 2011-06-23
4楼  发表于: 2010-07-26 16:20
已解决了,哎,原来是bootloader中没有添加对TIMER4系统时钟进行设置,

将其改为TCNTB4 = PCLK/(16*2*100) 即可
级别: 侠客
UID: 6147
精华: 0
发帖: 91
金钱: 640 两
威望: 241 点
综合积分: 182 分
注册时间: 2009-05-21
最后登录: 2011-06-23
5楼  发表于: 2010-07-26 21:42
哎,还是没注意,将bootloader中TIMER4设置了以后,打印机用到的TIMER2和TIMER3又不行了,哎,版主帮忙看下呀