基于NIOS-II的示波器:PART4 系统调试&测试(1))
- UID
- 1066743
|
基于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之后,对系统初始化的结果输出,用于跟踪系统的状态。
其中添加行与列变量,用于一行一行进行显示。
可以将该功能打包成系统输出函数,但后无需此功能,便直接写入到响应部分代码,并打包函数。 |
|
|
|
|
|