#include <avr/io.h>
#include <stdio.h>
#include <util/setbaud.h>
void uart_init (void)
{
UBRR0H = UBRRH_VALUE;
UBRR0L = UBRRL_VALUE;
#if USE_2X
UCSR0A |= _BV(U2X0);
#else
UCSR0A &= ~(_BV(U2X0));
#endif
UCSR0C = _BV(UCSZ01) | _BV(UCSZ00); /* 8-bit data */
UCSR0B = _BV(RXEN0) | _BV(TXEN0); /* Enable RX and TX */
}
int uart_putchar (char c, FILE *stream)
{
loop_until_bit_is_set(UCSR0A, UDRE0); /* Wait until data register empty. */
UDR0 = c;
return 0;
}
FILE uart_output = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
int main ()
{
uart_init();
stdout = &uart_output;
}
I2luY2x1ZGUgPGF2ci9pby5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCiNpbmNsdWRlIDx1dGlsL3NldGJhdWQuaD4KCnZvaWQgdWFydF9pbml0ICh2b2lkKQp7CiAgICBVQlJSMEggPSBVQlJSSF9WQUxVRTsKICAgIFVCUlIwTCA9IFVCUlJMX1ZBTFVFOwojaWYgVVNFXzJYCiAgICBVQ1NSMEEgfD0gX0JWKFUyWDApOwojZWxzZQogICAgVUNTUjBBICY9IH4oX0JWKFUyWDApKTsKI2VuZGlmCiAgICBVQ1NSMEMgPSBfQlYoVUNTWjAxKSB8IF9CVihVQ1NaMDApOyAvKiA4LWJpdCBkYXRhICovIAogICAgVUNTUjBCID0gX0JWKFJYRU4wKSB8IF9CVihUWEVOMCk7ICAgLyogRW5hYmxlIFJYIGFuZCBUWCAqLwp9CgppbnQgdWFydF9wdXRjaGFyIChjaGFyIGMsIEZJTEUgKnN0cmVhbSkKewogICAgbG9vcF91bnRpbF9iaXRfaXNfc2V0KFVDU1IwQSwgVURSRTApOyAvKiBXYWl0IHVudGlsIGRhdGEgcmVnaXN0ZXIgZW1wdHkuICovCiAgICBVRFIwID0gYzsKICAgIHJldHVybiAwOwp9CgpGSUxFIHVhcnRfb3V0cHV0ID0gRkRFVl9TRVRVUF9TVFJFQU0odWFydF9wdXRjaGFyLCBOVUxMLCBfRkRFVl9TRVRVUF9XUklURSk7CgppbnQgbWFpbiAoKQp7CiAgICB1YXJ0X2luaXQoKTsKICAgIHN0ZG91dCA9ICZ1YXJ0X291dHB1dDsKICAgIAogICAgcHJpbnRmKCJIZWxsb1xuIik7Cn0K