Mi objetivo es programar un solo ATmega328P sentado en una placa de pruebas. Debido a mi ubicación y al efectivo disponible no puedo adquirir un programador AVR ICSP, por lo que (a través de la investigación) descubrí que puedo usar un arduino como programador AVR y decidí usarlo.
El boceto de ArduinoISP se cargó en mi Arduino Uno R3 con éxito y los pines correspondientes se conectaron a mi tablero.
Escribí un programa en C simple en Atmel Studio y lo compilé en un archivo hex de Intel, luego procedí a usar avrdude para cargar el archivo a la μCU. Avrdude reportó un destello exitoso (la verificación también fue exitosa) pero el μCU no parece estar respondiendo.
El programa C simple como se muestra a continuación:
//Define CPU speed to 1 MHz (8 MHz internal with CKDIV8)
#define F_CPU 1000000
#include <avr/io.h>
#include <util/delay.h>
int main(void){
DDRC = 0xFF; //Set all of port C to outputs
while(1){
PORTC = PORTC ^ 0xFF; //Toggle all of port C
_delay_ms(500); //Delay 500ms
}
return 0;
}
Comando utilizado para enviar el flash a Atmega328P:
$ avrdude -c arduino -p m328p -P COM9 -U flash:w:"compiled_file.hex":i
Se conectó un solo LED (con una resistencia de 220 ohmios) desde el suelo hasta el pin PC5. Si mi lógica es correcta, esta luz debe encenderse / apagarse cada 500 ms, pero la luz permanece apagada. El LED ha sido probado y la polaridad de la conexión confirmada (positivo a pin, negativo a tierra).
Como nota al margen, también descubrí que cuando le dije a avrdude que leyera la configuración del fusible en el μCU, todos se registraron como 0x00, lo cual es bastante extraño.
Cualquier ayuda sería muy apreciada.
Actualizar:
A través de un poco de experimentación, descubrí que el comando mencionado anteriormente le decía a avrdude que programara el ATmega328P en el arduino uno en lugar del ATmega328P en el tablero. He reiniciado el ArduinoISP con éxito al Arduino, así que he vuelto al paso uno. ¿Alguien sabe cómo hacer que avrdude escriba al ATmega328P en el tablero?