Board logo

标题: 基于NIOS-II的示波器:PART4 系统调试&测试(1)) [打印本页]

作者: look_w    时间: 2017-10-20 21:45     标题: 基于NIOS-II的示波器:PART4 系统调试&测试(1))

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

其中s0~s5为下排功能选择按键,其中重要的有:
其中s6~s15用来调节参数
部分功能调整按键中断陷入死循环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之后,对系统初始化的结果输出,用于跟踪系统的状态。

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




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0