我正在尝试使用AVR Dragon和AVR Studio 6调试ATmega88。该程序是用C ++编写的。每次我尝试调试程序时,都会显示一个消息框
“开始调试”:“AVR Dragon上的ISP(00A2000006C63)不支持调试。设备只能编程。使用Start Without Debugging来避免此消息。”`
我认为Dragon支持通过ISP进行调试,因为我可以在AVR Studio 4中调试用汇编语言编写的程序。该程序是:
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRC = 0xFF;
PORTC = (0 << PC4);
while(1)
{
PORTC = (1 << PC4);
_delay_ms(1000);
PORTC = (0 << PC4);
_delay_ms(1000);
}
return 0;
}
但这应该不是问题。该计划本身就可以解决。
答案 0 :(得分:2)
您可以使用debugWIRE使用Dragon进行调试。这使用电源,接地和复位线。通常ISP和debugWIRE都是物理连接,因为它们位于同一个连接器上。您必须告诉软件使用ISP退出并开始使用debugWIRE。这样做本身并不够聪明。
答案 1 :(得分:2)
要使用Dragon和AVR Studio 6进行调试,您需要一个支持debugWIRE的电路。裸体ATmega会做或修改(自动切换/禁用)Arduino也可以。
然后,在项目的设置(不是解决方案)中,您需要将Tool-Selected调试器更改为AVR Dragon和Tool - Interface to debugWIRE。 后者是花了我一些时间才能找到的,只要那个设置为ISP,你就永远无法调试。
完成这些更改后,您将在尝试启动调试会话时遇到启用debugWIRE(按是)的问题,之后您需要重新启动电路并按OK。
在debugWIRE模式下,当ISP被禁用时,您无法更改其上的任何设置。 要退出debugWIRE模式,您需要处于调试模式(所以如果你停止它就再次启动它),然后选择Debug - Disable debugWIRE并关闭,它将恢复为ISP模式。
答案 2 :(得分:1)
您可以在AVR Studio的模拟器中调试程序,但从未使用ISP调试硬件。如果要使用AVR Dragon调试应用程序,则必须使用JTAG。
此外,您的程序是用C语言编写的,而不是C ++,并且无法按预期工作。要设置PORTC
中的位,你正在做正确的事,但要清除它你必须做
PORTC &= ~(1 << PC4); // Clear PC4, keep all the others
将使用and
和PORTC
执行逻辑11110111
操作
编辑:实际上,您还应该设置
PORTC |= (1 << PC4); // Set PC4, keep all the others
否则你只会覆盖整个端口