意得法论坛 - nios ii 定时器的问题 - Power By Team Board 标题: nios ii 定时器的问题     [打印本页]
来自: 意得法论坛 - CPLD/FPGA综合论坛
链接: http://www.wetech-ic.com/bbs/teams//Thread.asp?tid=160

作者: john     时间: 2009-11-30 18:10:26     标题: nios ii 定时器的问题

我用sopc builder 搭建了一个跑马灯的硬件系统,里边添加了定时器,可定时器的定时方面有点问题,哪位大哥帮忙分析一下,这是怎么回事?我在nios下的变成如下:

#include "system.h"
#include "sys/alt_irq.h"
#include "alt_types.h"
#include "altera_avalon_pio_regs.h"
#include "altera_avalon_timer_regs.h"

#define TIMER_0_BASE 0x00005000
#define LED_BASE  0x00005020

 alt_u8 n=0;
 
static void timer_overflow(void* context, alt_u32 id)
{
        IOWR(TIMER_0_BASE,0,0);//清to标志
        if (*(alt_u8 *)context & 0x80)
        {
            *(alt_u8 *)context = 0x01;
        }
        else
        {
            *(alt_u8 *)context = *(alt_u8 *)context << 1;
        }
        IOWR(LED_BASE,0,*(alt_u8 *)context);     
    return;
}
int main(void)
{
   alt_u8 led = 0x01;
   IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER_0_BASE,0xFFFF);
   IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_0_BASE,0x0FFF);
   IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_0_BASE, 0x07);//启动定时器
   alt_irq_register( TIMER_0_IRQ, (void*)&led, timer_overflow);//注册定时器
   while(1);
}

我添加的定时器默认是100ms中断一次,可我在这个程序里设置了定时器的初始值,差不多是5s多一点,可我下到板子上它还是按照100ms中断一次,请问这是怎么回事?



作者: jacob     时间: 2009-11-30 18:13:52     标题: RE: nios ii 定时器的问题

程序没问题,是在sopc_builder里添加定时器组件时将定时器设置为不可写,所以设的初值才没作用。。。。



Powered by Team Board