diff --git a/atusb/fw/Makefile b/atusb/fw/Makefile index c1c68d7..4cc749c 100644 --- a/atusb/fw/Makefile +++ b/atusb/fw/Makefile @@ -1,5 +1,5 @@ # -# Makefile - Makefile of the ATUSB firmware +# Makefile - Makefile of the ATUSB firmware # # Written 2010-2011, 2013 by Werner Almesberger # Copyright 2010-2011, 2013 by Werner Almesberger @@ -13,11 +13,16 @@ SHELL = /bin/bash NAME = atusb +DEBUG = false CFLAGS = -g -mmcu=$(CHIP) -DBOOT_ADDR=$(BOOT_ADDR) \ -Wall -Wextra -Wshadow -Werror -Wno-unused-parameter \ -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes +ifeq ($(DEBUG),true) +CFLAGS += -DDEBUG +endif + ifeq ($(NAME),rzusb) CHIP=at90usb1287 CFLAGS += -DRZUSB -DAT86RF230 @@ -46,6 +51,9 @@ OBJS = atusb.o board.o board_app.o sernum.o spi.o descr.o ep0.o \ BOOT_OBJS = boot.o board.o sernum.o spi.o flash.o dfu.o \ dfu_common.o usb.o boot-atu2.o +ifeq ($(DEBUG),true) +OBJS += uart.o +endif ifeq ($(NAME),rzusb) OBJS += board_rzusb.o diff --git a/atusb/fw/atusb.c b/atusb/fw/atusb.c index 1f65d53..28faf40 100644 --- a/atusb/fw/atusb.c +++ b/atusb/fw/atusb.c @@ -24,6 +24,10 @@ #include "spi.h" #include "atusb/ep0.h" +#ifdef DEBUG +#include "uart.h" +#endif + int main(void) { @@ -35,6 +39,13 @@ int main(void) /* now we should be at 8 MHz */ +#ifdef DEBUG + uart_init(); + static FILE atben_stdout = FDEV_SETUP_STREAM(uart_write_char, NULL, + _FDEV_SETUP_WRITE); + stdout = &atben_stdout; +#endif + usb_init(); ep0_init(); #ifdef ATUSB diff --git a/atusb/fw/ep0.c b/atusb/fw/ep0.c index 2b92f6d..674f9de 100644 --- a/atusb/fw/ep0.c +++ b/atusb/fw/ep0.c @@ -45,8 +45,15 @@ #define HW_TYPE HW_TYPE_RZUSB #endif +#ifdef DEBUG +#include "uart.h" +#include +#define debug(FORMAT,args...) printf(FORMAT,##args) +#define error(FORMAT,args...) printf(FORMAT,##args) +#else #define debug(...) #define error(...) +#endif static const uint8_t id[] = { EP0ATUSB_MAJOR, EP0ATUSB_MINOR, HW_TYPE }; diff --git a/atusb/fw/uart.c b/atusb/fw/uart.c new file mode 100644 index 0000000..44bec27 --- /dev/null +++ b/atusb/fw/uart.c @@ -0,0 +1,64 @@ +/* + * fw/uart.h - Functions needed for debugging over uart + * + * Code adapted from http://www.roboternetz.de/wissen/index.php/UART_mit_avr-gcc + * and http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial + * + * Published under the Creative Commons Share-Alike licence + * https://creativecommons.org/licenses/by-sa/2.0/de/ + * + * S. Salewski 2007 + * + * Adapted by + * Josef Filzmaier 2017 + */ + +#include +#include "uart.h" + +#define USART_BAUD 38400UL +#define F_CPU 8000000UL + +#define Wait_USART_Ready() while (!(UCSR1A & (1< + +void uart_init(void); +int uart_write_char(char c, FILE* stream); +void uart_new_line(void); + +#endif /* UART_H_ */