Made USART working (even with internal RC osc. ;-)
[mirrors/Programs.git] / avr / usart / main.c
CommitLineData
2f5d151f
H
1#include <avr/io.h>
2#define F_CPU 1000000UL //1MHz default internal RC oscillator setting
413d122c
H
3//#include <avr/iotn2313.h>
4//#include <avr/interrupt.h>
2f5d151f
H
5//util/delay.h and util/setbaud.h
6
7#define USART_BAUDRATE 9600
8#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
9
413d122c
H
10#define LED PD5
11
2f5d151f
H
12int main (void)
13{
413d122c
H
14 DDRD |= (1 << LED);
15
2f5d151f
H
16 char ReceivedByte;
17
18 UCSRB |= (1 << RXEN) | (1 << TXEN); // Turn on the transmission and reception circuitry
19 //UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // Use 8-bit character sizes (not in attiny2313?)
413d122c
H
20 UCSRC |= (1 << UCSZ0) | (1 << UCSZ1);
21 //Hint: stty -F /dev/ttyUSB1 9600 sc7
2f5d151f
H
22
23 UBRRH = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register
24 UBRRL = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register
25
26 for (;;) // Loop forever
27 {
28 while ((UCSRA & (1 << RXC)) == 0) {}; // Do nothing until data have been received and is ready to be read from UDR
29 ReceivedByte = UDR; // Fetch the received byte value into the variable "ByteReceived"
30
413d122c
H
31 PORTD ^= (1 << LED); //Toggle LED after each received byte
32
2f5d151f
H
33 while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is ready for more data to be written to it
34 UDR = ReceivedByte; // Echo back the received byte back to the computer
35 }
36}
37
This page took 0.14834 seconds and 4 git commands to generate.