Cuando programo mi AT90USBKEY2 con dfu-programmer, los retrasos son incorrectos hasta que reinicio la placa al desenchufarla.
#include <avr/io.h>
#include <util/delay.h>
int main(void) {
DDRD = 0xF0;
while(1) {
PORTD |= 0xF0;
_delay_ms(100);
PORTD &= 0x0F;
_delay_ms(100);
}
}
Un programa simple. F_CPU
se define en el makefile.
Makefile No estoy orgulloso de hacer estos pasos:
avr-gcc -Wall -Os -DF_CPU=1000000 -mmcu=at90usb1287 -c blink.c -o blink.o
avr-gcc -Wall -Os -DF_CPU=1000000 -mmcu=at90usb1287 -o blink.elf blink.o
avr-objcopy -j .text -j .data -O ihex blink.elf blink.hex
dfu-programmer at90usb1287 erase
dfu-programmer at90usb1287 flash blink.hex
dfu-programmer at90usb1287 reset
El pin 6 del puerto D muestra esto: 15.6msdealto,63.2debajo.
Despuésderebotarpoder,ycadavezqueseiniciadespuésdeeso
TambiénprobéunpinenelpuertoAquenoestávinculadoaunLEDintegrado,losmismosresultados.
avrdude:safemode:FusesOK(E:F3,H:99,L:5E)
¿Estoy haciendo algo claramente mal, o simplemente se acepta que tengo que desconectar el tablero después de la programación?
Parece que esto podría ser un problema donde el botón de reinicio / dfu-programmer reset
no lo reinicia correctamente.
Todavía no sé cómo funciona, se actualizará cuando sepa más.
Aunque rebotar la cosa después de la programación no es lo peor.