NOS II - Timer定时器

news2024/11/8 22:44:14

NOS II-Time定时器

简单回忆NIOS II中定时器的使用。

一、定时器的框图

image-20240610180740613

二、定时器寄存器的描述

定时器的寄存器都是16bit的,

偏移量寄存器名称R/W15bit4bit3bit2bit1bit0bit
0Status - 状态寄存器R/W - 可读可写*****runTO
1Control - 控制寄存器R/W***stopstartcontITO
2PeriodL - 周期低16位R/W超时周期-1(位15…0)
3PeriodH - 周期高16位R/W超时周期-1(位31…16)
4SnapL - 快照低16bitR/W计时快照(位15…0)
5SnapH - 快照高16bitR/W计时快照(位31…16)

1、状态寄存器

0bit : TO,这一位表示计时器寄到定时的时间时,这一位就会被置1。

1bit : run,如果为1这表示正在计数,只要在计数,这位就是1,否则为0

2、控制寄存器

0bit :ITO表示是否允许中断,一般都是要允许中断的;

1bit:cont表示是连续的那个单词,表示是否工作在连续工作模式,还是单次工作模式.。即如果置为1,计数完一轮之后再计数第二轮,一直循环计数

2bit:start位,如果这位被置为1,则表示启动定时器;

3bit:stop位,如果是1这表示定时器IP停止工作;

3、周期寄存器

用于配置要计数多久

4、快照寄存器

用于查看当前计数到哪里了

三、中断操作

只要内部计数器减到且控制寄存器对的ITO位设置位1,定时器内核就会产生IRO。用户要用以下的任意一种方式应答IRQ:

  • 清除状态寄存器的TO位,等待下一个超时事件的发生;
  • 通过将控制寄存器的ITO位清0来禁止中断

四、定时器内核的配置选项

image-20240610184835964

五、定时器的软件编程

定时器内核提供硬件对的寄存器访问和HAL层的API函数:

定义内核的寄存器映射并提供硬件设备访问宏定义:
altera_avalon_timer_regs.h
实现了HAL系统库的定时器设备驱动程序:
altera_avalon_time.h
altera_avalon_timer_sc.c
altera_avalon_timer_ts.c
altera_avalon_timer_vars.v

定时器TIMER0的简单应用,配置步骤:

//	定时器的初始化
	alt_ic_isr_register(TIMER0_IRQ_INTERRUPT_CONTROLLER_ID, TIMER0_IRQ, TIMER0_Interrupts, NULL, 0);//	Timer0中断函数注册,TIMER0_Interrupts是中断服务函数,即计数到时需要执行的任务,用户自己编写
	IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER0_BASE, 0);//配置控制寄存器		停止Timer0。TIMER0_BASE是定时器的地址
	IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER0_BASE, 0);//配置状态寄存器		清中断标志
	IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER0_BASE, (2500000 >> 16));//配置周期寄存器的高16bit,nios的时钟50MHz,周期是20ns,要计时50ms=50000000ns,50_000_000ns/20ns=2500000次,50MHz的时钟需要计数到250000次才能计数到50ms
	IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER0_BASE, (2500000 & 0xFFFF));//配置周期寄存器的低16bit	定时时间为50ms
	
//	启动定时器
	IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER0_BASE, 0x07);//	启动Timer0定时器

对注册中断函数alt_ic_isr_register()的参数进行简单的介绍:

  • TIMER0_IRQ_INTERRUPT_CONTROLLER_ID:是中断控制器标号,从system.h中复制。arm系统中一般有个中断控制器来管理中断,比如串口中断,定时中断等;
  • TIMER0_IRQ:硬件中断号,从system.h中复制
  • TIMER0_Interrupts:中断服务函数
  • NULL:这位参数是指向与设备驱动实例相关的数据结构体
  • 0:flag标志位,保留使用,一般我们置为0就可以;
--晓凡 2024610日于武汉书 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1808983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VSFT匿名用户访问-设置

1、先备份配置档 cp -av /etc/vsftpd/vsftpd.conf{,_bak} 2、编辑配置档,修改以下参数 vim /etc/vsftpd/ vsftpd.conf anonymous_enableYES -----允许匿名用户访问 anon_upload_enableYES -----允许匿名用户上传 anon_mkdir_write_enableYES …

汇编语言作业(五)

目录 一、实验目的 二、实验内容 三、实验步骤以及结果 四、实验结果与分析 五、 实验总结 一、实验目的 1.熟悉掌握汇编语言的程序结构,能正确书写数据段、代码段等 2,利用debug功能,查看寄存器(CS,IP,AX,DS..)及数据段的…

办公风云颜值背后的职场正能量

办公风云:颜值背后的职场正能量当我们提到职场,脑海中浮现的往往是严肃的面孔、忙碌的身影和堆积如山的文件。但在这个看似单调的舞台上,总有一些人,用他们的颜值和才华,为我们上演了一场场别开生面的“大戏”。今天&a…

【CS.OS】堆管理算法:不同的堆分配和管理算法

1000.5.CS.OS.1.3-基础-内存管理-堆管理算法-Created: 2024-06-09.Sunday10:41 文章目录 1 内存分配算法概述1.1 首次适应(First-Fit)1.2 最佳适应(Best-Fit) 2 伙伴系统(Buddy System) 3 总结References …

PlantSimulation导入cad图作为背景

PlantSimulation导入cad图作为背景 首先要整理cad文件,正常的工艺规划总图中存在较多杂乱文件,这些信息是不需要的,如果直接导入,会非常卡。 1、打开cad软件,使用layon命令打开所有的隐藏图层,删除不需要…

品品香·山东航空老白茶文化主题专属航班香上云端

6月6日,品品香山东航空“浓情过端午,白茶品品香”老白茶文化主题专属航班SC8819济南遥墙-成都天府顺利起飞,携中国老白茶标杆——晒白…

Spring Boot整合Redis实现发布/订阅功能

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

目标检测算法YOLOv9简介

YOLOv9由Chien-Yao Wang等人于2024年提出,论文名为:《YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information》,论文见:https://arxiv.org/pdf/2402.13616 ;源码见: https://github.com/W…

U-Mail:企业邮箱系统安全解决方案

在数字化浪潮的推动下,互联网技术正日新月异,企业的信息通信需求亦随之升华。作为企业沟通的重要媒介,企业邮箱已被广泛应用,然而随着其应用范围的不断扩展,也给企业带来了一系列挑战: 一、统一身份认证管…

MySQL-数据处理函数

026-distinct去重 select job from emp;加个 distinct 就行了 select distinct job from emp;注意:这个去重只是将显示的结果去重,原表数据不会被更改。 select 永远不会改变原数据 select distinct deptno, job from emp order by deptno asc;027-数…

Kubernetes入门-大简介

目录 何为微服务 何为云原生 何为编排器 “Kubernetes”这个名字来自希腊语,意思是“舵手”舵手是一个航海/航行术语,指掌舵的人从本质上说,Kubernetes是云原生微服务(cloud-native microservice)应用的编排器(orchestrator) 何为微服务 …

【C++类和对象中篇】(构造函数和析构函数)

🎁个人主页:我们的五年 🔍系列专栏:C课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 🍩1.默认成员函数的概念: 🍩2.构造函数: 2.1特性&…

刚刚❗️德勤2025校招暑期实习测评笔试SHL测评题库已发(答案)

📣德勤 2024暑期实习测评已发,正在申请的小伙伴看过来哦👀 ㊙️本次暑期实习优先考虑2025年本科及以上学历的毕业生,此次只有“审计及鉴定”“税务与商务咨询”两个部门开放了岗位~ ⚠️测评注意事项: &#x1f44…

字节面试:CPU100% 如何处理?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的线上问题的场景题: 1.CPU100%,你是怎么处理的&…

写给大数据开发的,要给领导汇报什么?

上篇:写给大数据开发,如何去掌握数据分析 就像说经济学家不炒股一样,有些数据开发不喜欢讲数据📊,就很离谱…自己不讲数据,不相信数据,别人也不敢用了~ 所以找上级汇报&#xff0…

【上海大学计算机组成原理实验报告】七、程序转移机制

一、实验目的 学习实现程序转移的硬件机制。 掌握堆栈寄存器的使用。 二、实验原理 根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当LDPC有效时,如果此时DUBS上的值就是转移的目标地址,则此目标地址被打入PC&am…

LabVIEW电池测试系统

1. 背景 随着电动汽车、可再生能源等领域的迅速发展,电池作为能源储存和释放的核心组件,其性能评估变得尤为重要。电池的充放电性能、容量、循环寿命等参数直接影响着设备的工作性能和使用寿命。因此,设计一套全面、准确的电池测试系统对于提…

王学岗鸿蒙开发(北向)——————(十)子组件修改父组件的内容与 动画

子组件修改父组件的内容 使用类似Android的回调,父组件传递给子组件一个函数 import { MyComment } from ./component/MyComment import { MyContent } from ./component/MyComtent import { MyTitleComponent } from ./component/MyTitleComponentEntry Componen…

安卓逆向经典案例——XX牛

安卓逆向经典案例——XX牛 按钮绑定方式 1.抓包 2.查看界面元素,找到控件id 通过抓包,发现点击登录后,才会出现Encrpt加密信息,所以我们通过控件找到对应id:btn_login 按钮绑定方法——第四种 public class LoginA…

把文件从一台linux机器上传到另一台linux机器上

文章目录 1,第一种情况1.1 先测试2台机器是否可以互相通信1.2 对整个文件夹里面的所有内容进行传输的命令1.3 检查结果 2,第二种情况2.1,单个文件传输的命令 1,第一种情况 我这里有2台linux机器, 机器A:19…