|
@@ -59,8 +59,8 @@ Timer get_pwm_timer(const pin_t pin) {
|
59
|
59
|
#ifdef TCCR2
|
60
|
60
|
case TIMER2: {
|
61
|
61
|
Timer timer = {
|
62
|
|
- /*TCCRnQ*/ { &TCCR2, nullptr, nullptr},
|
63
|
|
- /*OCRnQ*/ { (uint16_t*)&OCR2, nullptr, nullptr},
|
|
62
|
+ /*TCCRnQ*/ { &TCCR2, nullptr, nullptr },
|
|
63
|
+ /*OCRnQ*/ { (uint16_t*)&OCR2, nullptr, nullptr },
|
64
|
64
|
/*ICRn*/ nullptr,
|
65
|
65
|
/*n, q*/ 2, 0
|
66
|
66
|
};
|
|
@@ -70,8 +70,8 @@ Timer get_pwm_timer(const pin_t pin) {
|
70
|
70
|
case TIMER2A: break; // protect TIMER2A
|
71
|
71
|
case TIMER2B: {
|
72
|
72
|
Timer timer = {
|
73
|
|
- /*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr},
|
74
|
|
- /*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr},
|
|
73
|
+ /*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr },
|
|
74
|
+ /*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr },
|
75
|
75
|
/*ICRn*/ nullptr,
|
76
|
76
|
/*n, q*/ 2, 1
|
77
|
77
|
};
|
|
@@ -81,8 +81,8 @@ Timer get_pwm_timer(const pin_t pin) {
|
81
|
81
|
case TIMER2B: ++q;
|
82
|
82
|
case TIMER2A: {
|
83
|
83
|
Timer timer = {
|
84
|
|
- /*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr},
|
85
|
|
- /*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr},
|
|
84
|
+ /*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr },
|
|
85
|
+ /*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr },
|
86
|
86
|
/*ICRn*/ nullptr,
|
87
|
87
|
2, q
|
88
|
88
|
};
|
|
@@ -91,13 +91,24 @@ Timer get_pwm_timer(const pin_t pin) {
|
91
|
91
|
#endif
|
92
|
92
|
#endif
|
93
|
93
|
#endif
|
94
|
|
- #ifdef TCCR3A
|
|
94
|
+ #ifdef OCR3C
|
95
|
95
|
case TIMER3C: ++q;
|
96
|
96
|
case TIMER3B: ++q;
|
97
|
97
|
case TIMER3A: {
|
98
|
98
|
Timer timer = {
|
99
|
|
- /*TCCRnQ*/ { &TCCR3A, &TCCR3B, &TCCR3C},
|
100
|
|
- /*OCRnQ*/ { &OCR3A, &OCR3B, &OCR3C},
|
|
99
|
+ /*TCCRnQ*/ { &TCCR3A, &TCCR3B, &TCCR3C },
|
|
100
|
+ /*OCRnQ*/ { &OCR3A, &OCR3B, &OCR3C },
|
|
101
|
+ /*ICRn*/ &ICR3,
|
|
102
|
+ /*n, q*/ 3, q
|
|
103
|
+ };
|
|
104
|
+ return timer;
|
|
105
|
+ }
|
|
106
|
+ #elif defined(OCR3B)
|
|
107
|
+ case TIMER3B: ++q;
|
|
108
|
+ case TIMER3A: {
|
|
109
|
+ Timer timer = {
|
|
110
|
+ /*TCCRnQ*/ { &TCCR3A, &TCCR3B, nullptr },
|
|
111
|
+ /*OCRnQ*/ { &OCR3A, &OCR3B, nullptr },
|
101
|
112
|
/*ICRn*/ &ICR3,
|
102
|
113
|
/*n, q*/ 3, q
|
103
|
114
|
};
|
|
@@ -109,8 +120,8 @@ Timer get_pwm_timer(const pin_t pin) {
|
109
|
120
|
case TIMER4B: ++q;
|
110
|
121
|
case TIMER4A: {
|
111
|
122
|
Timer timer = {
|
112
|
|
- /*TCCRnQ*/ { &TCCR4A, &TCCR4B, &TCCR4C},
|
113
|
|
- /*OCRnQ*/ { &OCR4A, &OCR4B, &OCR4C},
|
|
123
|
+ /*TCCRnQ*/ { &TCCR4A, &TCCR4B, &TCCR4C },
|
|
124
|
+ /*OCRnQ*/ { &OCR4A, &OCR4B, &OCR4C },
|
114
|
125
|
/*ICRn*/ &ICR4,
|
115
|
126
|
/*n, q*/ 4, q
|
116
|
127
|
};
|
|
@@ -122,7 +133,7 @@ Timer get_pwm_timer(const pin_t pin) {
|
122
|
133
|
case TIMER5B: ++q;
|
123
|
134
|
case TIMER5A: {
|
124
|
135
|
Timer timer = {
|
125
|
|
- /*TCCRnQ*/ { &TCCR5A, &TCCR5B, &TCCR5C},
|
|
136
|
+ /*TCCRnQ*/ { &TCCR5A, &TCCR5B, &TCCR5C },
|
126
|
137
|
/*OCRnQ*/ { &OCR5A, &OCR5B, &OCR5C },
|
127
|
138
|
/*ICRn*/ &ICR5,
|
128
|
139
|
/*n, q*/ 5, q
|
|
@@ -132,8 +143,8 @@ Timer get_pwm_timer(const pin_t pin) {
|
132
|
143
|
#endif
|
133
|
144
|
}
|
134
|
145
|
Timer timer = {
|
135
|
|
- /*TCCRnQ*/ { nullptr, nullptr, nullptr},
|
136
|
|
- /*OCRnQ*/ { nullptr, nullptr, nullptr},
|
|
146
|
+ /*TCCRnQ*/ { nullptr, nullptr, nullptr },
|
|
147
|
+ /*OCRnQ*/ { nullptr, nullptr, nullptr },
|
137
|
148
|
/*ICRn*/ nullptr,
|
138
|
149
|
0, 0
|
139
|
150
|
};
|