博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于NIOS-II的示波器:PART4 系统调试&测试
阅读量:6093 次
发布时间:2019-06-20

本文共 2093 字,大约阅读时间需要 6 分钟。

本文记录了在NIOS II上实现示波器的第四部分。

本文主要包括:修改部分BUG,以及测试

本文所有的硬件以及工程参考来自,重新实现驱动并重构工程。

version 1.0 界面修改&系统调试&测试

界面修改

在示波器0.1版本中已经说明了界面的编写方法,在确定了该版本的基本功能之后,重新设计界面以及按键如下:

其中s0~s5为下排功能选择按键,其中重要的有:

  • 当通道选择为CH1时,输入耦合选择的也是CH1
  • 点按水平控制时,选择通过s8 s9来调节对应通道的水平轴

其中s6~s15用来调节参数

  • s6 s7用来调节触发的level
  • s10 ~ s14则按照左边屏幕上的说明操作

部分功能调整

按键中断陷入死循环BUG

在之前设计的策略中,s6~s15由于是用来调节参数,其在按键起来之前持续作用。于是将案件起来的判断放在了处理函数之中。但是中断结束之时对于按键弹起的操作又有单独判断。

根据不同按键分配不同策略。

即时处理STOP指令

STOP指令的处理放到中断中,而非等待系统更新状态之后,这样能够更精准的响应STOP请求。

if (KEY_DATA == 4) {        //等待按键抬起        while (IORD_ALTERA_AVALON_PIO_DATA(KEY_PORT_BASE) != 0x03);        //切换暂停和启动模式        if (RUN_STOP_FLAG == 0){            RUN_STOP_FLAG = 1;            sprintf((char *) lcd_buffer, "  STOP  ");            display_ascii(322, 16, 0xf800, MENU_FULL_COLOR);        }        else{            RUN_STOP_FLAG = 0;            sprintf((char *) lcd_buffer, "  RUN  ");            display_ascii(332, 16, 0x07e0, MENU_FULL_COLOR);        }    } else {        //正常情况        if (RUN_STOP_FLAG == 0) {            if (KEY_DATA != 0xff) {                //将KEY_DATA传给CON_DATA                CON_DATA = KEY_DATA;                CON_FLAG = 1;                KEY_DATA = 0xff;            }            if (!(CON_DATA>=6 && CON_DATA <= 9)) {                //等待按键抬起                while (IORD_ALTERA_AVALON_PIO_DATA(KEY_PORT_BASE) != 0x03);            }        }    }
调整触发level以及CH1 level时水平轴及时刷新
/* * 函数名:TRIG_CON * 说明    :当输入为1则增加,若输入为1则减少 * 日期:2017-03-27 */void TRIG_CON(unsigned char flag) {    while (IORD_ALTERA_AVALON_PIO_DATA(KEY_PORT_BASE) != 0x03) {        if (flag == 1 && TRIG_DATA < 244)            TRIG_DATA++;        else if (flag == 0 &&TRIG_DATA > 11)            TRIG_DATA--;         //添加此处 能够及时刷新        DISP_TRIG(TRIG_DATA);        //向MEM_CTL模块中写入触发condition        IOWR_ALTERA_AVALON_PIO_DATA(TRIG_DATA_BASE, TRIG_DATA);        TL_LOOP = 0;        delay_ms(150);    }}

增加系统初始化输出

在初始化LCD之后,对系统初始化的结果输出,用于跟踪系统的状态。

其中添加行与列变量,用于一行一行进行显示。

可以将该功能打包成系统输出函数,但后无需此功能,便直接写入到响应部分代码,并打包函数。

Version 1.0 版本测试

这里只给出示例测试,其余图片过大,不好上传。

正弦波测试

函数信号发生器输出

转载于:https://www.cnblogs.com/he11o-liu/p/7503228.html

你可能感兴趣的文章
vuex非父子组件间改值
查看>>
计时器(何雨柔201521123040)
查看>>
JavaScript的Tab切换
查看>>
iOS开发小技巧--富文本字典集合中的Key都是OC中的常量字符串
查看>>
构建之法读书笔记之四
查看>>
JNDI数据源配置
查看>>
【版本控制】Git的学习使用教程
查看>>
@Override注解
查看>>
Facebook或成云领域黑马 冲击亚马逊
查看>>
java设计模式:单例模式
查看>>
【PAT】3-1 二分法求多项式单根
查看>>
linux系统环境代理设置
查看>>
EventToCommand is not found in MVVMLight
查看>>
Ionic+AngularJS 开发的页面在微信公众号下显示不出来原因查究
查看>>
python进阶介绍(进阶1)
查看>>
Linux 典型应用之WebServer 安装和配置
查看>>
动态Script标签 解决跨域问题
查看>>
第二次作业:分布式版本控制系统Git的安装与使用
查看>>
算法--排序--分治与快速排序
查看>>
tomcat无法正确解析请求参数
查看>>