Soy nuevo en avr (8bit uc) y recientemente tuve un problema con la comunicación en serie (uart) con la PC. El microcontrolador no responde en el terminal de masilla, donde debería devolver lo que haya enviado.
Gracias por su respuesta a todos.
Lo siento por el código corrupto, no tenía idea de lo que estaba haciendo ya que soy un novato en este código de intercambio en el intercambio de pila.
El nuevo código se adjunta a continuación, por favor sugiérelo
#define F_CPU 16000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
volatile char data;
void USARTInit(uint16_t ubrr_value) {
UBRRL = ubrr_value;
UBRRH = (ubrr_value >> 8);
UCSRC = (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1);
UCSRB = (1 << RXEN) | (1 << TXEN);
}
void USARTWriteChar(char data) {
while (!(UCSRA & (1 << UDRE)))
{ }
//Now write the data to USART buffer
UDR = data;
}
void main() {
sei();
UCSRB |= (1 << RXCIE);
USARTInit(51);
while (1) {
if (data == 'a') {
USARTWriteChar(data);
}
}
}
ISR(USARTRXC_vect) {
data = UDR;
}
así que aquí foo solo representa mis datos = 'a', desafortunadamente avr no responde a mis entradas. cuando escribo "a".