#include "avr_mcu_section.h"
AVR_MCU(F_CPU, "atmega88");
+/*
+ * This small section tells simavr to generate a VCD trace dump with changes to these
+ * registers.
+ * Opening it with gtkwave will show you the data being pumped out into the data register
+ * UDR0, and the UDRE0 bit being set, then cleared
+ */
+const struct avr_mmcu_vcd_trace_t _mytrace[] _MMCU_ = {
+ { AVR_MCU_VCD_SYMBOL("UDR0"), .what = (void*)&UDR0, },
+ { AVR_MCU_VCD_SYMBOL("UDRE0"), .mask = (1 << UDRE0), .what = (void*)&UCSR0A, },
+};
+
+
/* declare this in a .eeprom ELF section */
uint32_t value EEMEM = 0xdeadbeef;
static int uart_putchar(char c, FILE *stream) {
- if (c == '\n')
- uart_putchar('\r', stream);
- loop_until_bit_is_set(UCSR0A, UDRE0);
- UDR0 = c;
- return 0;
+ if (c == '\n')
+ uart_putchar('\r', stream);
+ loop_until_bit_is_set(UCSR0A, UDRE0);
+ UDR0 = c;
+ return 0;
}
static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,