ioport: Restore PIN to PORT values when DDR is set to output
[simavr] / tests / atmega88_example.c
index fd15e94..75194b7 100644 (file)
 #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,