尝试使用AVR Dragon调试ATmega88时出错

时间:2012-08-18 13:47:07

标签: avr atmega

我正在尝试使用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;
}

但这应该不是问题。该计划本身就可以解决。

3 个答案:

答案 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

将使用andPORTC执行逻辑11110111操作

编辑:实际上,您还应该设置

PORTC |= (1 << PC4); // Set PC4, keep all the others

否则你只会覆盖整个端口