mirror of
https://github.com/Kugelschieber/arduino-c.git
synced 2026-01-18 11:00:26 +00:00
Moved arduino specific C files and started working on PWM.
This commit is contained in:
40
ard/serial.c
Normal file
40
ard/serial.c
Normal file
@@ -0,0 +1,40 @@
|
||||
#include "serial.h"
|
||||
#include <avr/io.h>
|
||||
|
||||
void serial_init(unsigned int baud){
|
||||
unsigned long baud_prescale = ((16000000UL/(baud*16UL)))-1;
|
||||
|
||||
// enable transmitter and receiver
|
||||
UCSR0B |= (1<<RXEN0)|(1<<TXEN0);
|
||||
|
||||
// set frame format (8 data bits, 2 stop bits)
|
||||
UCSR0C |= (1<<UCSZ00)|(1<<UCSZ01);
|
||||
|
||||
// set baudrate (16 bit)
|
||||
UBRR0H = baud_prescale>>8;
|
||||
UBRR0L = baud_prescale;
|
||||
}
|
||||
|
||||
void serial_write(char* data, unsigned int n){
|
||||
unsigned int i;
|
||||
|
||||
for(i = 0; i < n; i++){
|
||||
// wait for empty tx buffer
|
||||
while(!(UCSR0A&(1<<UDRE0)));
|
||||
|
||||
// write to tx register
|
||||
UDR0 = data[i];
|
||||
}
|
||||
}
|
||||
|
||||
void serial_read(char* data, unsigned int n){
|
||||
unsigned int i;
|
||||
|
||||
for(i = 0; i < n; i++){
|
||||
// wait until data is available in rx buffer
|
||||
while(!(UCSR0A&(1<<RXC0)));
|
||||
|
||||
// store in data array
|
||||
data[i] = UDR0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user