Rowley CrossWorks和MAXQ2000评估板入

[09-13 17:04:35]   来源:http://www.88dzw.com  控制技术   阅读:8614

文章摘要:然而,因为这些开关是机械结构的,所以单次按下操作可能造成多次0到1的转换。为避免这种情况发生,可以使用已有的主循环和延迟作为功能模块,实现一些简单的去抖操作。 while(1){ for (i = 0; i < 32000; i++) { // just a delay loop } show(counter); if (((PI5 & 0x04) == 0) && (debounce1 == 0)) { inc *= -1; debounce1 = 20; } if (((PI7 & 0x02) == 0) &

Rowley CrossWorks和MAXQ2000评估板入,标签:计算机控制技术,工厂电气控制技术,http://www.88dzw.com

然而,因为这些开关是机械结构的,所以单次按下操作可能造成多次0到1的转换。为避免这种情况发生,可以使用已有的主循环和延迟作为功能模块,实现一些简单的去抖操作。
while(1)
{
  for (i = 0; i < 32000; i++)
  {
   // just a delay loop
  }
  show(counter);

  if (((PI5 & 0x04) == 0) && (debounce1 == 0)) {
   inc *= -1;
   debounce1 = 20;
  }

  if (((PI7 & 0x02) == 0) && (debounce2 == 0)) {
   counter  = 0;
   debounce2 = 20;
  }

  counter += inc;
  if (counter  > 19999) { counter = 0;   }
  if (counter  < 0)   { counter = 19999; }

  if ((debounce1 > 0) && ((PI5 & 0x04) == 0x04)) { debounce1--; }
  if ((debounce2 > 0) && ((PI7 & 0x02) == 0x02)) { debounce2--; }
}
当开关由高变低时,设置一个去抖计数器。开关的高状态必须保持20个主计数器计数周期,才会接受下一次高向低的转换。去抖计数器除提供开关去抖功能外,还保证了按钮一直按下时不会重复功能操作;开关必须松开以重新按下。

使用CrossWorks调试器

因程序已经在MAXQ2000上运行,我们可以检查CrossWorks调试系统的功能。向MAXQ2000加载代码的JTAG接口还支持许多硬件调试功能。包括以下一些示例:
  • 指令单步执行
  • 执行地址断点(可以同时有4个有效断点)
  • 直接读写寄存器
  • 代码和栈存储器浏览
  • 数据存储器浏览和直接编辑
MAXQ2000 (以及其它MAXQ微控制器)在底层支持这些调试性能,可以进行在系统调试,而几乎不会对提供给应用程序的处理器资源产生任何影响。采用了完成该功能的专用JTAG接口,与主机系统通信就不必再使用其它接口(如MAXQ2000上的UART口)。另外,断点机制完全在后台运行,只要调试器不停止MAXQ2000,它将一直全速运行。在MAXQ2000运行时,甚至可以加入、删除或修改断点,完全是后台方式。

CrossWorks使用这些硬件调试功能提供C和汇编级源代码调试,具有完备的调试功能,如设置断点、观察变量和寄存器,以及存储器浏览和编辑模式。要进行程序调试,首先选择Build,接着选择菜单中的Build and Debug。将进行应用程序编译、下载到MAXQ2000评估板,最终在main()函数(见图7)内停止运行。

图7. CrossWorks调试模式
图7. CrossWorks调试模式

在图7中可看到CrossWorks调试器的多项功能。
  • 页面左边有一个黄色箭头表示当前的执行位置。所有可执行位置(不包括注释、空白区和一些括号)由左边的蓝色三角形示出。
  • 局部变量和它们的值也在应用代码的右侧示出。这些值可通过点击数值和输入新值来进行编辑。
屏幕最下方的MAXQ Serial To JTAG标记右边的红灯表示应用程序停止。此时,有多种选择来继续执行。
  • Step Into (F11)执行一行,可以单步执行代码。如果该行含有函数调用,将单步进入该函数,转到该函数的开始位置。
  • Step Over (F10)也是执行一行,如果该行不包括函数调用的话。如果有函数调用,则连续执行该函数(执行该函数,而不是跳过它),并在该函数调用的下一行停止。
  • Step Out (Shift+F11)只能在某一函数(不是最上层函数main())内使用。该功能将连续执行完该函数的其余部分,停在调用该函数行的下一行。
  • Run to Cursor (Control+F10)执行到光标所在位置。光标必须处在可执行代码行上,才能使用该功能。
也可以选择Go (F5),以正常速率运行程序。这时,可正常运行而脱离调试控制。程序运行时,底部的MAXQ Serial To JTAG标志旁的指示灯为绿色,指示应用程序在自由运行,但是必要时调试器可以中断并停止程序运行。有两种主要方法来暂停应用程序运行和重新进行调试控制。
  • Break命令(Control+".")将使应用程序立即停止运行,无论当时处在什么位置。
  • 左键单击任何可执行代码行的蓝色三角标记,可在应用程序的相应位置设置断点。这样蓝色三角形会变成红色圆圈。应用程序运行到断点后会停止运行,并重新进入调试模式。程序停止或运行时可以设置或清除多达4个断点。(注意,因为不同的步进调试功能占用一个断点,如果采用单步调试模式,只能设置3个断点)。

上一页  [1] [2] [3] [4] [5] [6]  下一页


Tag:控制技术计算机控制技术,工厂电气控制技术控制技术

《Rowley CrossWorks和MAXQ2000评估板入》相关文章