watchdog: Fix register naming
[simavr] / simavr / sim / avr_adc.h
index 85f82cf..e1e75d1 100644 (file)
 #ifndef __AVR_ADC_H___
 #define __AVR_ADC_H___
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #include "sim_avr.h"
 
 /*
@@ -41,6 +45,8 @@ enum {
        // input IRQ values. Values are /always/ volts * 1000 (millivolts)
        ADC_IRQ_ADC0 = 0, ADC_IRQ_ADC1, ADC_IRQ_ADC2, ADC_IRQ_ADC3,
        ADC_IRQ_ADC4, ADC_IRQ_ADC5, ADC_IRQ_ADC6, ADC_IRQ_ADC7,
+       ADC_IRQ_ADC8, ADC_IRQ_ADC9, ADC_IRQ_ADC10, ADC_IRQ_ADC11,
+       ADC_IRQ_ADC12, ADC_IRQ_ADC13, ADC_IRQ_ADC14, ADC_IRQ_ADC15,
        ADC_IRQ_TEMP,                   // see the datasheet
        ADC_IRQ_IN_TRIGGER,
        ADC_IRQ_OUT_TRIGGER,    // sends a avr_adc_mux_t
@@ -57,9 +63,10 @@ enum {
        ADC_MUX_NONE = 0,               // Nothing. return 0
        ADC_MUX_NOISE,                  // Nothing. return something random
        ADC_MUX_SINGLE,                 // Normal ADC pin reading
-       ADC_MUX_DIFF,                   // differencial channels (src-diff)
+       ADC_MUX_DIFF,                   // differential channels (src-diff)
        ADC_MUX_TEMP,                   // internal temp sensor
        ADC_MUX_REF,                    // reference voltage (in src * 100)
+       ADC_MUX_VCC4,                   // VCC/4
 };
 typedef struct avr_adc_mux_t {
        unsigned long kind : 3, gain : 8, diff : 8, src : 13;
@@ -78,7 +85,7 @@ typedef struct avr_adc_t {
 
        uint8_t                 r_admux;
        // if the last bit exists in the mux, we are an extended ADC
-       avr_regbit_t    mux[5];
+       avr_regbit_t    mux[6];
        avr_regbit_t    ref[3];         // reference voltages bits
        uint16_t                ref_values[7]; // ADC_VREF_*
 
@@ -104,7 +111,7 @@ typedef struct avr_adc_t {
        /*
         * runtime bits
         */
-       avr_adc_mux_t   muxmode[32];// maximum 5 bits of mux modes
+       avr_adc_mux_t   muxmode[64];// maximum 6 bits of mux modes
        uint16_t                adc_values[8];  // current values on the ADCs
        uint16_t                temp;           // temp sensor reading
        uint8_t                 first;
@@ -135,4 +142,12 @@ void avr_adc_init(avr_t * avr, avr_adc_t * port);
                .kind = ADC_MUX_TEMP, \
        }
 
+#define AVR_ADC_VCC4() { \
+               .kind = ADC_MUX_VCC4, \
+       }
+
+#ifdef __cplusplus
+};
+#endif
+
 #endif /* __AVR_ADC_H___ */