misc: Point to correct simavr include dirs
[simavr] / simavr / sim / avr_eeprom.h
index 89678fe..ae301af 100644 (file)
 #ifndef __AVR_EEPROM_H__
 #define __AVR_EEPROM_H__
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #include "sim_avr.h"
 
 typedef struct avr_eeprom_t {
@@ -42,9 +46,6 @@ typedef struct avr_eeprom_t {
        avr_regbit_t    eere;   // eeprom read enable
        
        avr_int_vector_t ready; // EERIE vector
-
-       uint32_t                eempe_clear_timer;
-       uint32_t                ready_raise_timer;
 } avr_eeprom_t;
 
 void avr_eeprom_init(avr_t * avr, avr_eeprom_t * port);
@@ -81,4 +82,50 @@ typedef struct avr_eeprom_desc_t {
                },\
        }
 
+/*
+ * no EEPM registers in atmega128
+ */
+#define AVR_EEPROM_DECLARE_NOEEPM(_vector)             \
+       .eeprom = {\
+               .size = E2END+1,\
+               .r_eearh = EEARH,\
+               .r_eearl = EEARL,\
+               .r_eedr = EEDR,\
+               .r_eecr = EECR,\
+               .eepm = { },            \
+               .eempe = AVR_IO_REGBIT(EECR, EEMWE),\
+               .eepe = AVR_IO_REGBIT(EECR, EEWE),\
+               .eere = AVR_IO_REGBIT(EECR, EERE),\
+               .ready = {\
+                       .enable = AVR_IO_REGBIT(EECR, EERIE),\
+                       .vector = _vector,\
+               },\
+       }
+
+
+/*
+ * macro definition without a high address bit register,
+ * which is not implemented in some tiny AVRs.
+ */
+
+#define AVR_EEPROM_DECLARE_8BIT(_vector) \
+       .eeprom = {\
+               .size = E2END+1,\
+               .r_eearl = EEARL,\
+               .r_eedr = EEDR,\
+               .r_eecr = EECR,\
+               .eepm = { AVR_IO_REGBIT(EECR, EEPM0), AVR_IO_REGBIT(EECR, EEPM1) },\
+               .eempe = AVR_IO_REGBIT(EECR, EEMPE),\
+               .eepe = AVR_IO_REGBIT(EECR, EEPE),\
+               .eere = AVR_IO_REGBIT(EECR, EERE),\
+               .ready = {\
+                       .enable = AVR_IO_REGBIT(EECR, EERIE),\
+                       .vector = _vector,\
+               },\
+       }
+
+#ifdef __cplusplus
+};
+#endif
+
 #endif /* __AVR_EEPROM_H__ */