Problema con la fuente de alimentación de ATMEGA328P y USART Peripheral

-1

Estoy aprendiendo Atmega328p USART periférico. Escribí un código simple para enviar y recibir datos de una computadora a través de un chip FTDI. En mi código, en realidad uso dos LED para indicar que estoy trabajando. El primer LED que está conectado PINB0 cambiará después de una transmisión BYTE. El segundo LED cambiará si se recibe correctamente 1 BYTE de la computadora. Ahora quemé el código. Y las cosas estaban sucediendo como deberían suceder. El 1er LED está alternando indicando la transmisión de datos. Y el 2do LED no está TOGGLING ya que no conecté el chip FTDI hasta ahora. Luego desenchufé mi usbasp y encendí el microcontrolador con un cargador de celtasa de constante 5v que medí con mi osciloscopio (con un capacitor de 1uf en el riel de alimentación). Ahora sucede algo interesante. El segundo LED está parpadeando de forma aleatoria, lo que indica que el microcontrolador está recibiendo BYTE a través de su pin RX. Pero no he conectado el controlador FTDI hasta ahora y el pin RX está sin conexión. ¿Qué está pasando aquí?

Aquí está mi código:

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define F_CPU 1000000ul
volatile unsigned char ReceivedByte;

int main(void)
{
DDRB |=(1<<PINB0)|(1<<PINB1);
int reg_value=12;
UBRR0L= (unsigned char) reg_value;
UBRR0H= (unsigned char) (reg_value>>8);
UCSR0B |=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0);
UCSR0C |=(1<<USBS0)|(1<<UCSZ00)|(1<<UCSZ01); //2 stopbit,8data bit
sei();
    while (1) 
    {
        while(!(UCSR0A &(1<<UDRE0)) ) //polling
        UDR0='a';
         PORTB ^=(1<<PINB0);
        _delay_ms(500);

    }
}
ISR(USART_RX_vect)
{
    ReceivedByte=UDR0;
    PORTB ^=(1<<PINB1);
}
    
pregunta Zarzisur

2 respuestas

1
  

el pin RX está sin conexión.

Un pin flotante puede captar fácilmente el ruido de todo tipo de fuentes. Solo me preocuparía si recibes datos mientras el pin está alto o bajo.

Solo para agregar: que parece inactivo en una condición y que recibir en otra puede ser solo una cuestión de nivel de ruido o nivel de CC al que entra el ruido.

    
respondido por el Oldfart
0

He descubierto el problema. Es una tontería que no haya puesto una coma después de la encuesta. Ahora me pregunto por qué sucedió.

    
respondido por el Zarzisur

Lea otras preguntas en las etiquetas