Ho comprato un AVR Dragon e sono alle prime armi col debug degli AtMega tramite debugWire.
Ho fatto delle prove con Atmel Studio 6 SP1 ed un AtMega48 su un circuito esterno alimentato a parte, ho seguito i collegamenti descritti nella guida, dopo aver impostato il fuse DW riesco a far fermare l'esecuzione sui breakpoint ma si blocca tutto all'istruzione _delay_ms (dentro a __builtin_avr_delay_cycles) e non riesco a fare un semplice debug passo passo di tutte le istruzioni di un semplice blink
- Code: Select all
#define F_CPU 8000000UL // F_CPU tells the compiler that our crystal is an 16Mhz one so it can generate an accurate delay,
// must be declared above delay so delay knows what is the value of F_CPU
#include <util/delay.h> // Contains some delay functions that will generate accurate delays of ms and us
#include <avr/io.h>
int main(void)
{
while(1)
{
//This gives us an infinite loop, there should always be an infinite loop in your code,
// because micro-controllers cant return from main to anywhere and that will give you bad results and unpredicted behaviour
PORTB |= (1<<PB0); // Turn led on, this is the led included in the arduino(digital pin 13)
_delay_ms(1000); // Wait 1 second
PORTB &= ~(1<<PB0); // Turn led off
_delay_ms(1000); // Wait another second
}
}
Non riesco a raggiungere l'istruzione che spegne il led su PB0 se eseguo passo passo il codice mentre se imposto direttamente un breakpoint su tale istruzione si ferma correttamente.
Non so proprio dove sbattere la testa.. sul pin reset c'è un pulsante ed una resistenza di PullUp di 10k.
Ciao e grazie a tutti