#include "usart.h" #include #include #include #include #include #ifdef USART_READING int USART::bufferReadIndex = 0; int USART::bufferWriteIndex = 0; int USART::incomingBytes = 0; uint8_t USART::buffer[USART_BUFFER_SIZE]; ISR(USART_RX_vect){ USART::fillBuffer(UDR0); } void USART::reset(){ incomingBytes=0; bufferWriteIndex = 0; bufferReadIndex = 0; } int USART::available(){ return incomingBytes; } void USART::fillBuffer(uint8_t byte){ incomingBytes++; buffer[bufferWriteIndex] = byte; bufferWriteIndex++; if(bufferWriteIndex>=USART_BUFFER_SIZE) bufferWriteIndex=0; } uint8_t USART::read(){ while(!available()); uint8_t byte = buffer[bufferReadIndex]; bufferReadIndex++; if(bufferReadIndex>=USART_BUFFER_SIZE) bufferReadIndex = 0; incomingBytes--; return byte; } #endif USART::USART(uint32_t baud_rate) { uint32_t UBRR_VALUE = ((uint32_t) F_CPU) / 8 / baud_rate - 1; UBRR0H = (uint8_t) (UBRR_VALUE >> 8); UBRR0L = (uint8_t) (UBRR_VALUE); #ifdef USART_READING UCSR0B = (1< 0){ send('.'); itoa(value, str, 10); uint8_t d = p - strlen(str); for(uint8_t i=0;i