首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于NIOS-II的示波器:PART4 系统调试&测试(1))

基于NIOS-II的示波器:PART4 系统调试&测试(1))

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);            }        }    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
调整触发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);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
增加系统初始化输出在初始化LCD之后,对系统初始化的结果输出,用于跟踪系统的状态。

其中添加行与列变量,用于一行一行进行显示。
可以将该功能打包成系统输出函数,但后无需此功能,便直接写入到响应部分代码,并打包函数。
返回列表