#include "avr_timer.h"
#include "avr_spi.h"
#include "avr_usb.h"
+#include "avr_acomp.h"
void usb162_init(struct avr_t * avr);
void usb162_reset(struct avr_t * avr);
avr_timer_t timer0,timer1;
avr_spi_t spi;
avr_usb_t usb;
+ avr_acomp_t acomp;
} mcu_usb162 = {
.core = {
.mmcu = "at90usb162",
.usb_com_vect=USB_COM_vect,
.usb_gen_vect=USB_GEN_vect,
},
+ .acomp = {
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANALOG_COMP_vect,
+ }
+ }
};
static avr_t * make()
avr_timer_init(avr, &mcu->timer1);
avr_spi_init(avr, &mcu->spi);
avr_usb_init(avr, &mcu->usb);
+ avr_acomp_init(avr, &mcu->acomp);
}
void usb162_reset(struct avr_t * avr)
#include "avr_timer.h"
#include "avr_spi.h"
#include "avr_twi.h"
+#include "avr_acomp.h"
void m128_init(struct avr_t * avr);
void m128_reset(struct avr_t * avr);
avr_extint_t extint;
avr_ioport_t porta, portb, portc, portd, porte, portf, portg;
avr_uart_t uart0,uart1;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0,timer1,timer2,timer3;
avr_spi_t spi;
AVR_UARTX_DECLARE(0, 0, 0),
AVR_UARTX_DECLARE(1, 0, 0),
+ .acomp = {
+ .mux_inputs = 8,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2) },
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(SFIOR, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANALOG_COMP_vect,
+ }
+ },
+
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
avr_ioport_init(avr, &mcu->portg);
avr_uart_init(avr, &mcu->uart0);
avr_uart_init(avr, &mcu->uart1);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
#include "avr_timer.h"
#include "avr_spi.h"
#include "avr_twi.h"
+#include "avr_acomp.h"
void m1280_init(struct avr_t * avr);
void m1280_reset(struct avr_t * avr);
avr_ioport_t porta, portb, portc, portd, porte, portf, portg, porth, portj, portk, portl;
avr_uart_t uart0,uart1;
avr_uart_t uart2,uart3;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0,timer1,timer2,timer3,timer4,timer5;
avr_spi_t spi;
AVR_UARTX_DECLARE(2, PRR1, PRUSART2),
AVR_UARTX_DECLARE(3, PRR1, PRUSART3),
+ .acomp = {
+ .mux_inputs = 16,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2), AVR_IO_REGBIT(ADCSRB, MUX5) },
+ .pradc = AVR_IO_REGBIT(PRR0, PRADC),
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(ADCSRB, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANALOG_COMP_vect,
+ }
+ },
+
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
avr_uart_init(avr, &mcu->uart1);
avr_uart_init(avr, &mcu->uart2);
avr_uart_init(avr, &mcu->uart3);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
#include "avr_timer.h"
#include "avr_spi.h"
#include "avr_twi.h"
+#include "avr_acomp.h"
void m1281_init(struct avr_t * avr);
void m1281_reset(struct avr_t * avr);
avr_extint_t extint;
avr_ioport_t porta, portb, portc, portd, porte, portf, portg;
avr_uart_t uart0,uart1;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0,timer1,timer2,timer3;
avr_spi_t spi;
AVR_UARTX_DECLARE(0, PRR0, PRUSART0),
AVR_UARTX_DECLARE(1, PRR1, PRUSART1),
+ .acomp = {
+ .mux_inputs = 8,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2) },
+ .pradc = AVR_IO_REGBIT(PRR0, PRADC),
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(ADCSRB, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANALOG_COMP_vect,
+ }
+ },
+
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
avr_ioport_init(avr, &mcu->portg);
avr_uart_init(avr, &mcu->uart0);
avr_uart_init(avr, &mcu->uart1);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
#include "avr_timer.h"
#include "avr_spi.h"
#include "avr_twi.h"
+#include "avr_acomp.h"
void m128rfa1_init(struct avr_t * avr);
void m128rfa1_reset(struct avr_t * avr);
avr_extint_t extint;
avr_ioport_t portb, portd, porte, portf, portg;
avr_uart_t uart0,uart1;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0,timer1,timer2,timer3;
avr_spi_t spi;
AVR_UARTX_DECLARE(0, PRR0, PRUSART0),
AVR_UARTX_DECLARE(1, PRR1, PRUSART1),
+ .acomp = {
+ .mux_inputs = 8,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2), AVR_IO_REGBIT(ADCSRB, MUX5) },
+ .pradc = AVR_IO_REGBIT(PRR0, PRADC),
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(ADCSRB, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANALOG_COMP_vect,
+ }
+ },
+
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
avr_ioport_init(avr, &mcu->portg);
avr_uart_init(avr, &mcu->uart0);
avr_uart_init(avr, &mcu->uart1);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
#include "avr_timer.h"
#include "avr_spi.h"
#include "avr_twi.h"
+#include "avr_acomp.h"
void m128rfr2_init(struct avr_t * avr);
void m128rfr2_reset(struct avr_t * avr);
avr_extint_t extint;
avr_ioport_t portb, portd, porte, portf, portg;
avr_uart_t uart0,uart1;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0,timer1,timer2,timer3;
avr_spi_t spi;
AVR_UARTX_DECLARE(0, PRR0, PRUSART0),
AVR_UARTX_DECLARE(1, PRR1, PRUSART1),
+ .acomp = {
+ .mux_inputs = 8,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2), AVR_IO_REGBIT(ADCSRB, MUX5) },
+ .pradc = AVR_IO_REGBIT(PRR0, PRADC),
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(ADCSRB, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANALOG_COMP_vect,
+ }
+ },
+
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
avr_ioport_init(avr, &mcu->portg);
avr_uart_init(avr, &mcu->uart0);
avr_uart_init(avr, &mcu->uart1);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
#include "avr_timer.h"
#include "avr_spi.h"
#include "avr_twi.h"
+#include "avr_acomp.h"
void m169p_init(struct avr_t * avr);
void m169p_reset(struct avr_t * avr);
avr_extint_t extint;
avr_ioport_t porta, portb, portc, portd, porte, portf, portg;
avr_uart_t uart0;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0,timer1,timer2;
avr_spi_t spi;
AVR_UARTX_DECLARE(0, PRR, PRUSART0),
+ .acomp = {
+ .mux_inputs = 8,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2) },
+ .pradc = AVR_IO_REGBIT(PRR, PRADC),
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(ADCSRB, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANALOG_COMP_vect,
+ }
+ },
+
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
avr_ioport_init(avr, &mcu->portg);
avr_uart_init(avr, &mcu->uart0);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
#include "avr_timer.h"
#include "avr_spi.h"
#include "avr_twi.h"
+#include "avr_acomp.h"
void m2560_init(struct avr_t * avr);
void m2560_reset(struct avr_t * avr);
avr_ioport_t porta, portb, portc, portd, porte, portf, portg, porth, portj, portk, portl;
avr_uart_t uart0,uart1;
avr_uart_t uart2,uart3;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0,timer1,timer2,timer3,timer4,timer5;
avr_spi_t spi;
AVR_UARTX_DECLARE(2, PRR1, PRUSART2),
AVR_UARTX_DECLARE(3, PRR1, PRUSART3),
+ .acomp = {
+ .mux_inputs = 16,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2), AVR_IO_REGBIT(ADCSRB, MUX5) },
+ .pradc = AVR_IO_REGBIT(PRR0, PRADC),
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(ADCSRB, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANALOG_COMP_vect,
+ }
+ },
+
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
avr_ioport_init(avr, &mcu->portc);
avr_ioport_init(avr, &mcu->portd);
avr_uart_init(avr, &mcu->uart);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
#include "avr_timer.h"
#include "avr_spi.h"
#include "avr_twi.h"
+#include "avr_acomp.h"
+
void mx_init(struct avr_t * avr);
void mx_reset(struct avr_t * avr);
avr_extint_t extint;
avr_ioport_t portb, portc, portd;
avr_uart_t uart;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0,timer1,timer2;
avr_spi_t spi;
//no PRUSART, upe=PE, no reg/bit name index, 'C' in RX/TX vector names
AVR_UART_DECLARE(0, 0, PE, , C),
+ .acomp = {
+ .mux_inputs = 8,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2) },
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(SFIOR, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANA_COMP_vect,
+ }
+ },
+
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
avr_ioport_init(avr, &mcu->portd);
avr_uart_init(avr, &mcu->uart0);
avr_uart_init(avr, &mcu->uart1);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
#include "avr_timer.h"
#include "avr_spi.h"
#include "avr_twi.h"
+#include "avr_acomp.h"
void mx4_init(struct avr_t * avr);
void mx4_reset(struct avr_t * avr);
avr_extint_t extint;
avr_ioport_t porta, portb, portc, portd;
avr_uart_t uart0,uart1;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0,timer1,timer2;
avr_timer_t timer3;
AVR_UARTX_DECLARE(0, PRR0, PRUSART0),
AVR_UARTX_DECLARE(1, PRR0, PRUSART1),
+ .acomp = {
+ .mux_inputs = 8,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2) },
+ .pradc = AVR_IO_REGBIT(PRR0, PRADC),
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(ADCSRB, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANALOG_COMP_vect,
+ }
+ },
+
.adc = {
// .disabled = AVR_IO_REGBIT(PRR0,PRADC),
.r_admux = ADMUX,
avr_ioport_init(avr, &mcu->portc);
avr_ioport_init(avr, &mcu->portd);
avr_uart_init(avr, &mcu->uart);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
#include "avr_timer.h"
#include "avr_spi.h"
#include "avr_twi.h"
+#include "avr_acomp.h"
void mx8_init(struct avr_t * avr);
void mx8_reset(struct avr_t * avr);
avr_extint_t extint;
avr_ioport_t portb,portc,portd;
avr_uart_t uart;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0,timer1,timer2;
avr_spi_t spi;
//PRR/PRUSART0, upe=UPE, reg/bit name index=0, no 'C' in RX/TX vector names
AVR_UART_DECLARE(PRR, PRUSART0, UPE, 0, ),
+ .acomp = {
+ .mux_inputs = 8,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2) },
+ .pradc = AVR_IO_REGBIT(PRR, PRADC),
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(ADCSRB, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANALOG_COMP_vect,
+ }
+ },
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
#include "avr_ioport.h"
#include "avr_timer.h"
#include "avr_adc.h"
+#include "avr_acomp.h"
#define _AVR_IO_H_
#define __ASSEMBLER__
avr_extint_t extint;
avr_ioport_t portb;
avr_timer_t timer0;
+ avr_acomp_t acomp;
avr_adc_t adc;
} mcu = {
.core = {
}
}
},
+
+ .acomp = {
+ .mux_inputs = 4,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1) },
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(ADCSRB, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANA_COMP_vect,
+ }
+ },
+
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0),
avr_extint_init(avr, &mcu->extint);
avr_ioport_init(avr, &mcu->portb);
avr_timer_init(avr, &mcu->timer0);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
}
#include "avr_ioport.h"
#include "avr_uart.h"
#include "avr_timer.h"
+#include "avr_acomp.h"
static void init(struct avr_t * avr);
static void reset(struct avr_t * avr);
avr_ioport_t porta, portb, portd;
avr_uart_t uart;
avr_timer_t timer0,timer1;
+ avr_acomp_t acomp;
} mcu = {
.core = {
.mmcu = "attiny2313",
}
}
}
- }
+ },
+
+ .acomp = {
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANA_COMP_vect,
+ }
+ },
+
};
static avr_t * make()
avr_uart_init(avr, &mcu->uart);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
+ avr_acomp_init(avr, &mcu->acomp);
}
static void reset(struct avr_t * avr)
avr_extint_init(avr, &mcu->extint);
avr_ioport_init(avr, &mcu->porta);
avr_ioport_init(avr, &mcu->portb);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
#include "avr_ioport.h"
#include "avr_adc.h"
#include "avr_timer.h"
+#include "avr_acomp.h"
void tx4_init(struct avr_t * avr);
void tx4_reset(struct avr_t * avr);
avr_watchdog_t watchdog;
avr_extint_t extint;
avr_ioport_t porta, portb;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0, timer1;
};
},
.r_pcint = PCMSK1,
},
+ .acomp = {
+ .mux_inputs = 8,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2) },
+ .pradc = AVR_IO_REGBIT(PRR, PRADC),
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(ADCSRB, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .acic = AVR_IO_REGBIT(ACSR, ACIC),
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .timer_name = '1',
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANA_COMP_vect,
+ }
+ },
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
avr_watchdog_init(avr, &mcu->watchdog);
avr_extint_init(avr, &mcu->extint);
avr_ioport_init(avr, &mcu->portb);
+ avr_acomp_init(avr, &mcu->acomp);
avr_adc_init(avr, &mcu->adc);
avr_timer_init(avr, &mcu->timer0);
avr_timer_init(avr, &mcu->timer1);
#include "avr_ioport.h"
#include "avr_adc.h"
#include "avr_timer.h"
+#include "avr_acomp.h"
void tx5_init(struct avr_t * avr);
void tx5_reset(struct avr_t * avr);
avr_watchdog_t watchdog;
avr_extint_t extint;
avr_ioport_t portb;
+ avr_acomp_t acomp;
avr_adc_t adc;
avr_timer_t timer0, timer1;
};
},
.r_pcint = PCMSK,
},
+ .acomp = {
+ .mux_inputs = 4,
+ .mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),
+ AVR_IO_REGBIT(ADMUX, MUX2), AVR_IO_REGBIT(ADMUX, MUX3) },
+ .pradc = AVR_IO_REGBIT(PRR, PRADC),
+ .aden = AVR_IO_REGBIT(ADCSRA, ADEN),
+ .acme = AVR_IO_REGBIT(ADCSRB, ACME),
+
+ .r_acsr = ACSR,
+ .acis = { AVR_IO_REGBIT(ACSR, ACIS0), AVR_IO_REGBIT(ACSR, ACIS1) },
+ .aco = AVR_IO_REGBIT(ACSR, ACO),
+ .acbg = AVR_IO_REGBIT(ACSR, ACBG),
+ .disabled = AVR_IO_REGBIT(ACSR, ACD),
+
+ .ac = {
+ .enable = AVR_IO_REGBIT(ACSR, ACIE),
+ .raised = AVR_IO_REGBIT(ACSR, ACI),
+ .vector = ANA_COMP_vect,
+ }
+ },
.adc = {
.r_admux = ADMUX,
.mux = { AVR_IO_REGBIT(ADMUX, MUX0), AVR_IO_REGBIT(ADMUX, MUX1),