Tengo los siguientes artículos:
ATMEGA328P-PU
-
POLOLU - PGM03A (Programador) enlace
Hasta ahora, he podido escribir la salida en los pines de datos. Ahora quiero conectar un sensor, pero necesito ver la salida del sensor en mi computadora.
Estoy tratando de hacer que el microcontrolador escriba el carácter 'K' en el pin TX y, por lo que entendí, debería poder conectarme a / dev / ttyACM0 utilizando putty o pantalla desde mi computadora Linux y veo la salida, pero cuando ejecuto los siguientes comandos, no obtengo salida, también probé ttyACM1, ttyACM2 pero todavía nada:
putty /dev/ttyACM0 -serial 9600
O
screen /dev/ttyACM0
Código:
#define F_CPU 1600000UL
#define BAUD 9600
#define BRC ((F_CPU/16/BAUD) - 1)
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
int main( void )
{
UBRR0H = (BRC >> 8);
UBRR0L = BRC;
UCSR0B = ( 1 << TXEN0 );
UCSR0C = ( 1 << UCSZ01 ) | ( 1 << UCSZ00 );
while( 1 )
{
UDR0 = 'K';
_delay_ms(1000);
}
return 0;
}
Makefile:
CC=/usr/bin/avr-gcc
MEGA=328p
CFLAGS=-g -Os -Wall -mcall-prologues -mmcu=atmega$(MEGA)
OBJ2HEX=/usr/bin/avr-objcopy
PROG=/usr/bin/avrdude
TARGET=serial
program : $(TARGET).hex
$(PROG) -c avrispv2 -p m$(MEGA) -P /dev/ttyACM0 -e
$(PROG) -c avrispv2 -p m$(MEGA) -P /dev/ttyACM0 -U flash:w:$(TARGET).hex
%.obj : %.o
$(CC) $(CFLAGS) $< -o $@
%.hex : %.obj
$(OBJ2HEX) -R .eeprom -O ihex $< $@
clean :
rm -f *.hex *.obj *.o
Cuando ejecuto el microcontrolador, veo parpadear el LED de TX, así que supongo que el microcontrolador está enviando los datos, pero no lo estoy leyendo correctamente en el lado de la computadora. ¿Alguna sugerencia?