48 #include <avr/interrupt.h>
51 #include "ringbuffer.h"
52 RB_create(debug_buffer,
char, 128);
54 static int debug_putchar(
char c, FILE *stream) {
55 if (RB_full(debug_buffer)) {
58 RB_back(debug_buffer) = c;
59 RB_pushback(debug_buffer);
60 UCSR0B |= (1<<UDRIE0);
65 ISR(USART_UDRE_vect) {
66 if (RB_empty(debug_buffer)) {
67 UCSR0B &= ~(1<<UDRIE0);
69 UDR0 = RB_front(debug_buffer);
70 RB_popfront(debug_buffer);
74 #define debug_init_extra() {\
75 RB_init(debug_buffer);\
79 static int debug_putchar(
char c, FILE *stream) {
81 while(!(UCSR0A & (1<<UDRE0)));
90 #define debug_init_extra() {}
97 static FILE debug_stdout = FDEV_SETUP_STREAM(debug_putchar, NULL, _FDEV_SETUP_WRITE);
103 #include <util/setbaud.h>
108 UCSR0A &= ~(1<<U2X0);
110 UCSR0C |= (1<<UCSZ01)|(1<<UCSZ00);
111 UCSR0B |= (1<<TXEN0);
113 stdout = &debug_stdout;
#define debug_init()
debug initialization
Definition: debug.h:120