TI中文支持网
TI专业的中文技术问题搜集分享网站

AM335X linux使用DMtimer制作定时器驱动,中断频率无法改变

您好:

在AM335X的linux3.2内核中 使用dmtimer 写一个定时器驱动,无论如何更改

    omap_dm_timer_set_load(timer, 0, 0xFFFFFFFF-500);
    omap_dm_timer_write_counter(timer, 0xFFFFFFFF-500); 这2个函数中的设定值 范围从(0xFFFFFFFF-500)到(0xFFFFFFFF – 0x0000FFFF)输出的GPIO都会看到一个390kHz的波形。

如果设定为(0XFFFFFFFFT-0xFFFF0000)则在示波器下无法看到波形

问题1:

如何修改CPU配置寄存器能够使得定时器正常工作?

问题2

通过omap_dm_timer_get_fclk()和clk_get_rate 能够得到rate为24000000,获取到的rate是否为系统时钟频率?

非常感谢~~

设定代码在驱动的init函数总,代码如下

timer = omap_dm_timer_request_specific(7);    //得到定时器7

    irq =  omap_dm_timer_get_irq(timer);        //得到中断号
    ret = request_irq(irq,mytimer_interrupt, IRQF_DISABLED | IRQF_TIMER , "heat_timer_init",NULL);//注册中断
    omap_dm_timer_set_load(timer, 0, 0xFFFFFFFF-500);
    omap_dm_timer_write_counter(timer, 0xFFFFFFFF-500);

    /* Enable overflow interrupt */
    omap_dm_timer_set_int_enable(timer, OMAP_TIMER_INT_OVERFLOW);
    /*
     * Set counter value to overflow counter after
     * one tick and start timer.
     */
    //omap_dm_timer_set_load_start(timer, 0, load);
    // start the timer!
    omap_dm_timer_start(timer);
    // stop the timer!
    //omap_dm_timer_stop(timer);

jack 2:

您好:

在AM335X的linux3.2内核中 使用dmtimer 写一个定时器驱动,无论如何更改

    omap_dm_timer_set_load(timer, 0, 0xFFFFFFFF-500);    omap_dm_timer_write_counter(timer, 0xFFFFFFFF-500); 这2个函数中的设定值 范围从(0xFFFFFFFF-500)到(0xFFFFFFFF – 0x0000FFFF)输出的GPIO都会看到一个390kHz的波形。

如果设定为(0XFFFFFFFFT-0xFFFF0000)则在示波器下无法看到波形

问题1:

如何修改CPU配置寄存器能够使得定时器正常工作?

问题2

通过omap_dm_timer_get_fclk()和clk_get_rate 能够得到rate为24000000,获取到的rate是否为系统时钟频率?

非常感谢~~

设定代码在驱动的init函数总,代码如下

timer = omap_dm_timer_request_specific(7);    //得到定时器7

    irq =  omap_dm_timer_get_irq(timer);        //得到中断号    ret = request_irq(irq,mytimer_interrupt, IRQF_DISABLED | IRQF_TIMER , "heat_timer_init",NULL);//注册中断    omap_dm_timer_set_load(timer, 0, 0xFFFFFFFF-500);    omap_dm_timer_write_counter(timer, 0xFFFFFFFF-500);

    /* Enable overflow interrupt */    omap_dm_timer_set_int_enable(timer, OMAP_TIMER_INT_OVERFLOW);    /*     * Set counter value to overflow counter after     * one tick and start timer.     */    //omap_dm_timer_set_load_start(timer, 0, load);    // start the timer!    omap_dm_timer_start(timer);    // stop the timer!    //omap_dm_timer_stop(timer);

Denny%20Yang99373:

回复 jack 2:

建议把TIMER的寄存器DUMP下来分析一下

赞(0)
未经允许不得转载:TI中文支持网 » AM335X linux使用DMtimer制作定时器驱动,中断频率无法改变
分享到: 更多 (0)