OK, I wired up a SAM3S2B power to the power rails, ground to ground, power out to the low power in, etc. Add a crystal. The thing actually works. The programmer sees it. Atmel Studio 6 can compile my program and program the chip. And it works. But it resets itself, or appears to, about every 10 seconds.
The code basically connects a 4x4 matrix, the rows are cathodes and it connects these up. The columns are anodes and it steps through them. So, 16 LEDs and 4 are lit at a time then it moves on after half a second. Very basic test. What could be causing this resetting behavior? Any ideas?
#include <asf.h>
int main (void)
{
board_init();
sysclk_init();
delay_init(sysclk_get_cpu_hz());
gpio_configure_pin(PIO_PB0_IDX, PIO_TYPE_PIO_OUTPUT_1 | PIO_DEFAULT);
gpio_configure_pin(PIO_PB1_IDX, PIO_TYPE_PIO_OUTPUT_1 | PIO_DEFAULT);
gpio_configure_pin(PIO_PB2_IDX, PIO_TYPE_PIO_OUTPUT_1 | PIO_DEFAULT);
gpio_configure_pin(PIO_PB3_IDX, PIO_TYPE_PIO_OUTPUT_1 | PIO_DEFAULT);
gpio_configure_pin(PIO_PA20_IDX, PIO_TYPE_PIO_OUTPUT_1 | PIO_DEFAULT);
gpio_configure_pin(PIO_PA23_IDX, PIO_TYPE_PIO_OUTPUT_1 | PIO_DEFAULT);
gpio_configure_pin(PIO_PA22_IDX, PIO_TYPE_PIO_OUTPUT_1 | PIO_DEFAULT);
gpio_configure_pin(PIO_PA19_IDX, PIO_TYPE_PIO_OUTPUT_1 | PIO_DEFAULT);
gpio_set_pin_low(PIO_PB0_IDX);
gpio_set_pin_low(PIO_PB1_IDX);
gpio_set_pin_low(PIO_PB2_IDX);
gpio_set_pin_low(PIO_PB3_IDX);
int i = 0;
while (1) {
gpio_set_pin_low(PIO_PA20_IDX);
gpio_set_pin_low(PIO_PA23_IDX);
gpio_set_pin_low(PIO_PA22_IDX);
gpio_set_pin_low(PIO_PA19_IDX);
i++;
if (i==4) i=0;
if(i==0)
gpio_set_pin_high(PIO_PA20_IDX);
if(i==1)
gpio_set_pin_high(PIO_PA23_IDX);
if(i==2)
gpio_set_pin_high(PIO_PA22_IDX);
if(i==3)
gpio_set_pin_high(PIO_PA19_IDX);
delay_ms(500);
}
}