cores: Now duplicate the global structure
[simavr] / simavr / cores / sim_megax4.h
index b2a892d..030aebb 100644 (file)
@@ -61,7 +61,7 @@ struct mcu_t {
 #error SIM_MMCU is not declared
 #endif
 
-struct mcu_t SIM_CORENAME = {
+const struct mcu_t SIM_CORENAME = {
        .core = {
                .mmcu = SIM_MMCU,
                DEFAULT_CORE(4),
@@ -121,6 +121,8 @@ struct mcu_t SIM_CORENAME = {
 
                .txen = AVR_IO_REGBIT(UCSR0B, TXEN0),
                .rxen = AVR_IO_REGBIT(UCSR0B, RXEN0),
+               .ucsz = AVR_IO_REGBITS(UCSR0C, UCSZ00, 0x3), // 2 bits
+               .ucsz2 = AVR_IO_REGBIT(UCSR0B, UCSZ02),         // 1 bits
 
                .r_ucsra = UCSR0A,
                .r_ucsrb = UCSR0B,
@@ -150,6 +152,8 @@ struct mcu_t SIM_CORENAME = {
 
                .txen = AVR_IO_REGBIT(UCSR1B, TXEN1),
                .rxen = AVR_IO_REGBIT(UCSR1B, RXEN1),
+               .ucsz = AVR_IO_REGBITS(UCSR1C, UCSZ10, 0x3), // 2 bits
+               .ucsz2 = AVR_IO_REGBIT(UCSR1B, UCSZ12),         // 1 bits
 
                .r_ucsra = UCSR1A,
                .r_ucsrb = UCSR1B,
@@ -272,6 +276,9 @@ struct mcu_t SIM_CORENAME = {
                                        AVR_IO_REGBIT(TCCR1B, WGM12), AVR_IO_REGBIT(TCCR1B, WGM13) },
                .wgm_op = {
                        [0] = AVR_TIMER_WGM_NORMAL16(),
+                       [1] = AVR_TIMER_WGM_FCPWM8(),
+                       [2] = AVR_TIMER_WGM_FCPWM9(),
+                       [3] = AVR_TIMER_WGM_FCPWM10(),
                        [4] = AVR_TIMER_WGM_CTC(),
                        [5] = AVR_TIMER_WGM_FASTPWM8(),
                        [6] = AVR_TIMER_WGM_FASTPWM9(),
@@ -410,7 +417,7 @@ struct mcu_t SIM_CORENAME = {
 
                .twi = {
                        .enable = AVR_IO_REGBIT(TWCR, TWIE),
-                       .raised = AVR_IO_REGBIT(TWSR, TWINT),
+                       .raised = AVR_IO_REGBIT(TWCR, TWINT),
                        .vector = TWI_vect,
                },
        },