Port uart driver to atmega32
This commit is contained in:
parent
799870e1f1
commit
00a8c7546f
@ -4,7 +4,8 @@
|
|||||||
#define BAUD_PRESCALE (((F_CPU/(BAUDRATE*8UL)))-1)
|
#define BAUD_PRESCALE (((F_CPU/(BAUDRATE*8UL)))-1)
|
||||||
|
|
||||||
void __attribute__ ((naked)) __attribute__ ((section (".init5"))) uart_init() {
|
void __attribute__ ((naked)) __attribute__ ((section (".init5"))) uart_init() {
|
||||||
UCSR0A = (1<<U2X0);
|
UCSRA = (1<<U2X);
|
||||||
UCSR0C = (1<<UCSZ00) | (1<<UCSZ01); // 8N1
|
UCSRC = (1<<UCSZ0) | (1<<UCSZ1); // 8N1
|
||||||
UBRR0 = BAUD_PRESCALE;
|
UBRRH = (BAUD_PRESCALE>>8);
|
||||||
|
UBRRL = BAUD_PRESCALE;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,55 @@
|
|||||||
|
#ifndef U2X
|
||||||
|
#define U2X U2X0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef UCSZ0
|
||||||
|
#define UCSZ0 UCSZ00
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef UCSZ1
|
||||||
|
#define UCSZ1 UCSZ01
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef TXEN
|
||||||
|
#define TXEN TXEN0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RXEN
|
||||||
|
#define RXEN RXEN0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RXCIE
|
||||||
|
#define RXCIE RXCIE0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef UDRE
|
||||||
|
#define UDRE UDRE0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef UCSRA
|
||||||
|
#define UCSRA UCSR0A
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef UCSRB
|
||||||
|
#define UCSRB UCSR0B
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef UCSRC
|
||||||
|
#define UCSRC UCSR0C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef UBRRH
|
||||||
|
#define UBRRH UBRR0H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef UBRRL
|
||||||
|
#define UBRRL UBRR0L
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef UDR
|
||||||
|
#define UDR UDR0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef USART_RX_vect
|
||||||
|
#define USART_RX_vect USART_RXC_vect
|
||||||
|
#endif
|
@ -4,7 +4,7 @@
|
|||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
|
|
||||||
void __attribute__ ((naked)) __attribute__ ((section (".init6"))) uart_rx_init() {
|
void __attribute__ ((naked)) __attribute__ ((section (".init6"))) uart_rx_init() {
|
||||||
UCSR0B |= (1<<RXEN0) | (1<<RXCIE0);
|
UCSRB |= (1<<RXEN) | (1<<RXCIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -13,5 +13,5 @@ void __attribute__ ((naked)) __attribute__ ((section (".init8"))) uart_rx_sei()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ISR(USART_RX_vect) {
|
ISR(USART_RX_vect) {
|
||||||
uart_process(UDR0);
|
uart_process(UDR);
|
||||||
}
|
}
|
||||||
|
@ -4,10 +4,10 @@
|
|||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
|
|
||||||
void __attribute__ ((naked)) __attribute__ ((section (".init6"))) uart_tx_init() {
|
void __attribute__ ((naked)) __attribute__ ((section (".init6"))) uart_tx_init() {
|
||||||
UCSR0B |= (1<<TXEN0);
|
UCSRB |= (1<<TXEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
void uart_putc(unsigned char c) {
|
void uart_putc(unsigned char c) {
|
||||||
while( ( UCSR0A & ( 1 << UDRE0 ) ) == 0 ) {}
|
while( ( UCSRA & ( 1 << UDRE ) ) == 0 ) {}
|
||||||
UDR0 = c;
|
UDR = c;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user