Construí este circuito ATMega328PB .
Funcionaa3.3vdesdeunabateríade1.5vusando
Usando USBTinyISP, configuro los fusibles: FF bajo (para 8MHz), D8 alto (Vector de reinicio de arranque habilitado), FD ext.
Usando VisualStudio y vMicro plug-in compilé un programa para UNO. vMicro creó un archivo HEX de mi programa CON un cargador de arranque que cargué a través del ISP y funciona bien (parpadea el LED).
Mi objetivo final es hacer un gestor de arranque personalizado de 8MHz pero como pasos intermedios Estoy tratando de obtener un signo de vida en serie utilizando FT231X FTDI, y luego subir un boceto sobre él.
Corté el puente 5v en FT231X y conecté el puente 3.3v en su lugar. Luego conectado (sin batería):
ATmega328 FT321X
--------- ------
Vcc Vcc
GND GND
GND CTS
RST DTR (over 0.1uF)
RxD TX
TxD RX
Dado que el registro UBRR predeterminado del cargador de arranque UNO está configurado para 16MHz, lo inicializo manualmente e intento insertar datos en serie.
#define myubbr (8000000/16/9600-1)
void setup()
{
pinMode(6, OUTPUT);
// Init serial
UBRR0H = (unsigned char)(myubbr >> 8);
UBRR0L = (unsigned char)myubbr;
UCSR0A = 0;//Disable U2X mode
UCSR0B = (1 << TXEN0);//Enable transmitter
UCSR0C = (3 << UCSZ00);//N81
}
void loop()
{
digitalWrite(6, HIGH);
delay(100);
digitalWrite(6, LOW);
delay(100);
char * str = "Hello World";
while (*str) {
while (!(UCSR0A & (1 << UDRE0)));
UDR0 = *str++; //send the data
}
}
En la PC ejecuto: avrdude -v -p m328p -c arduino -PCOM8 -b 9600 Avrdude reconoce el puerto de comunicación correcto pero da:
avrdude: stk500_getsync (): no está sincronizado: resp = 0x00
Los LED de RX y TX en el FT231X nunca parpadean.
Ni siquiera sé si el problema es HW o SW. Qué estoy haciendo mal. ¿Qué más puedo probar?