Estoy usando ATMEGA328P-PU y Pololu PGM03A (programador de hardware USB). Tenía un código muy simple que enviaba un valor de 8 bits a mi computadora:
#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 8000000UL
#define BAUD 9600
int main( void )
{
// BAUD RATE (bits per second)
UBRR0L = ( ( F_CPU / 8 / BAUD ) - 1 ); // 01100111
// CONFIGURATION REGISTERS
UCSR0B = 0b00001000; // enable transmitter (TXEN0)
UCSR0C = 0b00000110; // set data frame size (8-bit)
while( 1 )
{
UDR0 = 0b11110000;
_delay_ms(20);
}
return 0;
}
Puedo leer los datos con el siguiente comando:
xxd -c 2 -b /dev/ttyACM2
De vez en cuando sucede algo muy extraño: sin ningún cambio en el código, de repente aparece ceros:
00019d40: 00000000 00000000 ..
00019d42: 00000000 00000000 ..
00019d44: 00000000 00000000 ..
00019d46: 00000000 00000000 ..
00019d48: 00000000 00000000 ..
00019d4a: 00000000 00000000 ..
00019d4c: 00000000 00000000 ..
00019d4e: 00000000 00000000 ..
00019d50: 00000000 00000000 ..
00019d52: 00000000 00000000 ..
00019d54: 00000000 00000000 ..
00019d56: 00000000 00000000 ..
00019d58: 00000000 00000000 ..
00019d5a: 00000000 00000000 ..
00019d5c: 00000000 00000000 ..
00019d5e: 00000000 00000000 ..
00019d60: 00000000 00000000 ..
00019d62: 00000000 00000000 ..
00019d64: 00000000 00000000 ..
00019d66: 00000000 00000000 ..
00019d68: 00000000 00000000 ..
00019d6a: 00000000 00000000 ..
00019d6c: 00000000 00000000 ..
00019d6e: 00000000 00000000 ..
00019d70: 00000000 00000000 ..
00019d72: 00000000 00000000 ..
00019d74: 00000000 00000000 ..
Pero debería haber 1111000 . Me di cuenta de que:
- Esto sucede después de reiniciar
- Los puertos USB de conmutación no tienen efecto
- La conmutación del microcontrolador produce el mismo problema. Incluso cuando intenté escribir un código simple que simplemente hace que la luz parpadee hacia un microcontrolador en blanco, puedo ver el parpadeo del LED, pero todavía tengo 00000000 en el puerto serie, pero no debería haber comunicación alguna.
- Normalmente, los datos se envían a una velocidad bastante lenta (cuando se envían los datos correctos), pero ahora la salida es muy rápida (cuando se envía la 00000000)
¿Algún consejo sobre lo que está pasando? Gracias!