|
2 | 2 | #include "Comparator.h" |
3 | 3 | #include "Arduino.h" |
4 | 4 | /* |
5 | | -PIN | DA/DB AC0 | DA/DB AC1 | DA/DB AC2 | DD AC0 | EA AC0 | EA AC1 | Mega AC0 | |
6 | | --------|-----------|-----------|-----------|----------|----------|----------|----------| |
7 | | -IN P0# | PIN_PD2 | PIN_PD2 | PIN_PD2 | PIN_PD2* | PIN_PD2 | PIN_PD2 | PIN_PD2 | |
8 | | -IN P1 | PIN_PE0* | PIN_PD3 | PIN_PD4 | n/a | PIN_PE0* | PIN_PD3 | PIN_PD4 | |
9 | | -IN P2 | PIN_PE2* | PIN_PD4 | PIN_PE1* | n/a | PIN_PE2* | PIN_PD4 | PIN_PD6 | |
10 | | -IN P3# | PIN_PD6 | PIN_PD6 | PIN_PD6 | PIN_PD6 | PIN_PD6 | PIN_PD6 | PIN_PD1 | |
11 | | -IN P4= | n/a | n/a | n/a | PIN_PC3! | PIN_PC3 | PIN_PC3 | n/a | |
12 | | -IN N0 | PIN_PD3 | PIN_PD5 | PIN_PD7 | PIN_PD3* | PIN_PD3 | PIN_PD5 | PIN_PD3 | |
13 | | -IN N1# | PIN_PD0* | PIN_PD0* | PIN_PD0* | n/a | PIN_PD0 | PIN_PD0 | PIN_PD5 | |
14 | | -IN N2# | PIN_PD7 | PIN_PD7 | PIN_PD7 | PIN_PD7 | PIN_PD7 | PIN_PD7 | PIN_PD7 | |
15 | | -IN N3= | n/a | n/a | n/a | PIN_PC2! | PIN_PC2 | PIN_PC2 | n/a | |
16 | | -OUT | PIN_PA7 | PIN_PA7 | PIN_PA7 | PIN_PA7* | PIN_PA7 | PIN_PA7 | PIN_PA7 | |
17 | | -AltOUT | PIN_PC6* | PIN_PC6* | PIN_PC6* | n/a | PIN_PC6* | PIN_PC6* | n/a | |
| 5 | +PIN | DA/DB AC0 | DA/DB AC1 | DA/DB AC2 | DD AC0 | EA AC0 | EA AC1 | Mega AC0 | EB AC0 | EB AC1 | DU AC0 | |
| 6 | +-------|-----------|-----------|-----------|----------|----------|----------|----------|---------|---------|---------| |
| 7 | +IN P0# | PIN_PD2 | PIN_PD2 | PIN_PD2 | PIN_PD2* | PIN_PD2 | PIN_PD2 | PIN_PD2 | PIN_PD2 | PIN_PD2 | PIN_p | |
| 8 | +IN P1 | PIN_PE0* | PIN_PD3 | PIN_PD4 | n/a | PIN_PE0* | PIN_PD3 | PIN_PD4 | n/a | PIN_PD3 | n/a | |
| 9 | +IN P2 | PIN_PE2* | PIN_PD4 | PIN_PE1* | n/a | PIN_PE2* | PIN_PD4 | PIN_PD6 | n/a | PIN_PD4 | n/a | |
| 10 | +IN P3# | PIN_PD6 | PIN_PD6 | PIN_PD6 | PIN_PD6 | PIN_PD6 | PIN_PD6 | PIN_PD1 | PIN_PD6 | PIN_PD6 | PIN_PD6 | |
| 11 | +IN P4= | n/a | n/a | n/a | PIN_PC3! | PIN_PC3 | PIN_PC3 | n/a | PIN_PC3 | PIN_PC3 | PIN_PC3 | |
| 12 | +IN P5 | n/a | n/a | n/a | n/a | n/a | n/a | n/a | PIN_PD4 | PIN_PA6 | n/a | |
| 13 | +IN P6 | n/a | n/a | n/a | n/a | n/a | n/a | n/a | PIN_PD5 | PIN_PA7 | n/a | |
| 14 | +IN N0 | PIN_PD3 | PIN_PD5 | PIN_PD7 | PIN_PD3* | PIN_PD3 | PIN_PD5 | PIN_PD3 | PIN_PD3 | PIN_PD5 | PIN_PD5 | |
| 15 | +IN N1# | PIN_PD0* | PIN_PD0* | PIN_PD0* | n/a | PIN_PD0 | PIN_PD0 | PIN_PD5 | PIN_PD0 | PIN_PD0 | PIN_PD0 | |
| 16 | +IN N2# | PIN_PD7 | PIN_PD7 | PIN_PD7 | PIN_PD7 | PIN_PD7 | PIN_PD7 | PIN_PD7 | PIN_PD7 | PIN_PD7 | PIN_PD7 | |
| 17 | +IN N3= | n/a | n/a | n/a | PIN_PC2! | PIN_PC2 | PIN_PC2 | n/a | PIN_PC2 | PIN_PC2 | n/a | |
| 18 | +OUT | PIN_PA7 | PIN_PA7 | PIN_PA7 | PIN_PA7* | PIN_PA7 | PIN_PA7 | PIN_PA7 | PIN_PA7 | PIN_PA7 | PIN_PA7 | |
| 19 | +AltOUT | PIN_PC6* | PIN_PC6* | PIN_PC6* | n/a | PIN_PC6* | PIN_PC6* | n/a | n/a | n/a | n/a | |
18 | 20 | */ |
19 | 21 | #if (defined(ANALOG_COMP_PINS_DA_DB)) |
20 | 22 | /* P0, P1, P2, P3, N0, N1, N2 */ |
@@ -71,6 +73,11 @@ AltOUT | PIN_PC6* | PIN_PC6* | PIN_PC6* | n/a | PIN_PC6* | PIN_PC6* | |
71 | 73 | #if defined(AC1_AC_vect) |
72 | 74 | AnalogComparator Comparator1(1, AC1, PORTD.PIN2CTRL, PORTD.PIN3CTRL, PORTD.PIN4CTRL, PORTD.PIN6CTRL, PORTC.PIN3CTRL,/* EA-series has no MVIO */ PORTD.PIN5CTRL, PORTD.PIN0CTRL, PORTD.PIN7CTRL, PORTC.PIN2CTRL); |
73 | 75 | #endif |
| 76 | +#elif defined(ANALOG_COMP_PINS_EB) |
| 77 | + /* EB: 2 ACs: P0, P1, P2, P3, P4, P5, P6, N0, N1, N2, N3 */ |
| 78 | + AnalogComparator Comparator0(0, AC0, PORTD.PIN2CTRL, AC_NULL_REG, AC_NULL_REG, PORTD.PIN6CTRL, PORTC.PIN3CTRL, PORTD.PIN4CTRL, PORTD.PIN5CTRL, PORTD.PIN3CTRL, PORTD.PIN0CTRL, PORTD.PIN7CTRL, PORTC.PIN2CTRL); |
| 79 | + AnalogComparator Comparator1(1, AC1, PORTD.PIN2CTRL, PORTD.PIN3CTRL, PORTD.PIN4CTRL, PORTD.PIN6CTRL, PORTC.PIN3CTRL, PORTA.PIN6CTRL, PORTA.PIN7CTRL, PORTD.PIN5CTRL, PORTD.PIN0CTRL, PORTD.PIN7CTRL, PORTC.PIN2CTRL); |
| 80 | + #endif |
74 | 81 | #elif defined(ANALOG_COMP_PINS_MEGA) |
75 | 82 | /* mega0:1 AC P0, P1, P2, P3, N0, N1, N2*/ |
76 | 83 | #if defined(AC0_AC_vect) |
@@ -107,7 +114,7 @@ AltOUT | PIN_PC6* | PIN_PC6* | PIN_PC6* | n/a | PIN_PC6* | PIN_PC6* | |
107 | 114 | /* other golden 1-series: 3 AC P0, P1 (AC1 on 24 only), P2, P3, N0, N1*/ |
108 | 115 | AnalogComparator Comparator0(0, AC0, PORTA.PIN7CTRL, PORTB.PIN5CTRL, PORTB.PIN1CTRL, PORTA.PIN6CTRL, PORTA.PIN6CTRL, PORTB.PIN4CTRL); |
109 | 116 | AnalogComparator Comparator1(1, AC1, PORTA.PIN7CTRL, PORTB.PIN6CTRL, PORTB.PIN0CTRL, PORTA.PIN4CTRL, PORTA.PIN5CTRL, PORTB.PIN7CTRL); |
110 | | - AnalogComparator Comparator2(2, AC2, PORTA.PIN6CTRL, PORTB.PIN0CTRL, PORTB.PIN5CTRL, PORTA.PIN7CTRL, PORTA.PIN7CTRL, PORTB.PIN6CTRL); |
| 117 | + AnalogComparator Comparator2(2, AC2, PORTA.PIN6CTRL, PORTB.PIN0CTRL, PORTB.PIN5CTRL, PORTB.PIN7CTRL, PORTA.PIN7CTRL, PORTB.PIN6CTRL); |
111 | 118 |
|
112 | 119 | #elif defined(ANALOG_COMP_PINS_TINY_TWO_14) |
113 | 120 | /* 14-pin 2-series: 1 AC P0, P2, N0, N2*/ |
@@ -198,6 +205,35 @@ AnalogComparator::AnalogComparator( |
198 | 205 | IN1_N(in1_n), |
199 | 206 | IN2_N(in2_n), |
200 | 207 | IN3_N(in3_n) { } |
| 208 | +#elif defined(ANALOG_COMP_PINS_EB) /*9 inputs P0, P1, P2, P3, P4, N0, N1, N2, N3 */ |
| 209 | +AnalogComparator::AnalogComparator( |
| 210 | + const uint8_t comp_number, |
| 211 | + AC_t& ac, |
| 212 | + register8_t& in0_p, |
| 213 | + register8_t& in1_p, |
| 214 | + register8_t& in2_p, |
| 215 | + register8_t& in3_p, |
| 216 | + register8_t& in4_p, |
| 217 | + register8_t& in5_p, |
| 218 | + register8_t& in6_p, |
| 219 | + register8_t& in0_n, |
| 220 | + register8_t& in1_n, |
| 221 | + register8_t& in2_n, |
| 222 | + register8_t& in3_n |
| 223 | + ) |
| 224 | + : comparator_number(comp_number), |
| 225 | + AC(ac), |
| 226 | + IN0_P(in0_p), |
| 227 | + IN1_P(in1_p), |
| 228 | + IN2_P(in2_p), |
| 229 | + IN3_P(in3_p), |
| 230 | + IN4_P(in4_p), |
| 231 | + IN3_P(in5_p), |
| 232 | + IN4_P(in6_p), |
| 233 | + IN0_N(in0_n), |
| 234 | + IN1_N(in1_n), |
| 235 | + IN2_N(in2_n), |
| 236 | + IN3_N(in3_n) { } |
201 | 237 | /* Start of tinyAVR */ |
202 | 238 | #elif defined(ANALOG_COMP_PINS_TINY_FEW) |
203 | 239 | AnalogComparator::AnalogComparator( |
@@ -484,6 +520,31 @@ void AnalogComparator::init() { |
484 | 520 | } else if (input_n == comparator::in_n::in3) { |
485 | 521 | IN3_N = PORT_ISC_INPUT_DISABLE_gc; |
486 | 522 | } |
| 523 | + #elif defined(ANALOG_COMP_PINS_EB) |
| 524 | + if (input_p == comparator::in_p::in0) { |
| 525 | + IN0_P = PORT_ISC_INPUT_DISABLE_gc; |
| 526 | + } else if (input_p == comparator::in_p::in1) { |
| 527 | + IN1_P = PORT_ISC_INPUT_DISABLE_gc; |
| 528 | + } else if (input_p == comparator::in_p::in2) { |
| 529 | + IN2_P = PORT_ISC_INPUT_DISABLE_gc; |
| 530 | + } else if (input_p == comparator::in_p::in3) { |
| 531 | + IN3_P = PORT_ISC_INPUT_DISABLE_gc; |
| 532 | + } else if (input_p == comparator::in_p::in4) { |
| 533 | + IN4_P = PORT_ISC_INPUT_DISABLE_gc; |
| 534 | + } else if (input_p == comparator::in_p::in5) { |
| 535 | + IN5_P = PORT_ISC_INPUT_DISABLE_gc; |
| 536 | + } else if (input_p == comparator::in_p::in6) { |
| 537 | + IN6_P = PORT_ISC_INPUT_DISABLE_gc; |
| 538 | + } |
| 539 | + if (input_n == comparator::in_n::in0) { |
| 540 | + IN0_N = PORT_ISC_INPUT_DISABLE_gc; |
| 541 | + } else if (input_n == comparator::in_n::in1) { |
| 542 | + IN1_N = PORT_ISC_INPUT_DISABLE_gc; |
| 543 | + } else if (input_n == comparator::in_n::in2) { |
| 544 | + IN2_N = PORT_ISC_INPUT_DISABLE_gc; |
| 545 | + } else if (input_n == comparator::in_n::in3) { |
| 546 | + IN3_N = PORT_ISC_INPUT_DISABLE_gc; |
| 547 | + } |
487 | 548 | #endif |
488 | 549 | #else /* tinyAVR */ |
489 | 550 | if (input_p == comparator::in_p::in0) { |
@@ -607,6 +668,31 @@ void AnalogComparator::stop(bool restorepins) { |
607 | 668 | } else if (input_n == comparator::in_n::in3) { |
608 | 669 | IN3_N = 0; |
609 | 670 | } |
| 671 | + #elif defined(ANALOG_COMP_PINS_EB) |
| 672 | + if (input_p == comparator::in_p::in0) { |
| 673 | + IN0_P = 0; |
| 674 | + } else if (input_p == comparator::in_p::in1) { |
| 675 | + IN1_P = 0; |
| 676 | + } else if (input_p == comparator::in_p::in2) { |
| 677 | + IN2_P = 0; |
| 678 | + } else if (input_p == comparator::in_p::in3) { |
| 679 | + IN3_P = 0; |
| 680 | + } else if (input_p == comparator::in_p::in4) { |
| 681 | + IN4_P = 0; |
| 682 | + } else if (input_p == comparator::in_p::in3) { |
| 683 | + IN5_P = 0; |
| 684 | + } else if (input_p == comparator::in_p::in4) { |
| 685 | + IN6_P = 0; |
| 686 | + } |
| 687 | + if (input_n == comparator::in_n::in0) { |
| 688 | + IN0_N = 0; |
| 689 | + } else if (input_n == comparator::in_n::in1) { |
| 690 | + IN1_N = 0; |
| 691 | + } else if (input_n == comparator::in_n::in2) { |
| 692 | + IN2_N = 0; |
| 693 | + } else if (input_n == comparator::in_n::in3) { |
| 694 | + IN3_N = 0; |
| 695 | + } |
610 | 696 | #endif |
611 | 697 | #else /* tinyAVR */ |
612 | 698 | if (input_p == comparator::in_p::in0) { |
|
0 commit comments