|
1 | | -#ifndef AVR2560_H |
2 | | -#define AVR2560_H |
| 1 | +#pragma once |
3 | 2 |
|
4 | | -#include "globals.h" |
5 | | -#if defined(CORE_AVR) |
| 3 | +/** DO NOT INCLUDE DIRECTLY - should be included via board_definition.h */ |
| 4 | + |
| 5 | +#define CORE_AVR |
6 | 6 |
|
7 | 7 | #include <avr/interrupt.h> |
8 | 8 | #include <avr/io.h> |
|
11 | 11 | *********************************************************************************************************** |
12 | 12 | * General |
13 | 13 | */ |
14 | | - #define COMPARE_TYPE uint16_t |
15 | | - #define SERIAL_BUFFER_SIZE (256+7+1) //Size of the serial buffer used by new comms protocol. The largest single packet is the O2 calibration which is 256 bytes + 7 bytes of overhead |
16 | | - #define FPU_MAX_SIZE 0 //Size of the FPU buffer. 0 means no FPU. |
17 | | - #ifdef USE_SPI_EEPROM |
18 | | - #define EEPROM_LIB_H "src/SPIAsEEPROM/SPIAsEEPROM.h" |
19 | | - typedef uint16_t eeprom_address_t; |
20 | | - #else |
21 | | - #define EEPROM_LIB_H <EEPROM.h> |
22 | | - typedef int eeprom_address_t; |
23 | | - #endif |
24 | | - #ifdef PLATFORMIO |
25 | | - #define RTC_LIB_H <TimeLib.h> |
26 | | - #else |
27 | | - #define RTC_LIB_H <Time.h> |
28 | | - #endif |
29 | | - void initBoard(void); |
30 | | - uint16_t freeRam(void); |
31 | | - void doSystemReset(void); |
32 | | - void jumpToBootloader(void); |
33 | | - uint8_t getSystemTemp(); |
34 | | - |
35 | | - #define pinIsReserved(pin) ( ((pin) == 0) ) //Forbidden pins like USB on other boards |
| 14 | +#define BOARD_MAX_DIGITAL_PINS 54 //digital pins +1 |
| 15 | +#define BOARD_MAX_IO_PINS 70 //digital pins + analog channels + 1 |
| 16 | +#define BOARD_MAX_ADC_PINS 15 //Number of analog pins |
| 17 | +#ifndef LED_BUILTIN |
| 18 | + #define LED_BUILTIN 13 |
| 19 | +#endif |
| 20 | + |
| 21 | +#ifndef INJ_CHANNELS |
| 22 | + #define INJ_CHANNELS 4 |
| 23 | +#endif |
| 24 | +#ifndef IGN_CHANNELS |
| 25 | + #define IGN_CHANNELS 5 |
| 26 | +#endif |
| 27 | + |
| 28 | +#define COMPARE_TYPE uint16_t |
| 29 | +#define SERIAL_BUFFER_SIZE (256+7+1) //Size of the serial buffer used by new comms protocol. The largest single packet is the O2 calibration which is 256 bytes + 7 bytes of overhead |
| 30 | +#define FPU_MAX_SIZE 0 //Size of the FPU buffer. 0 means no FPU. |
| 31 | +#ifdef USE_SPI_EEPROM |
| 32 | + #define EEPROM_LIB_H "src/SPIAsEEPROM/SPIAsEEPROM.h" |
| 33 | + typedef uint16_t eeprom_address_t; |
| 34 | +#else |
| 35 | + #define EEPROM_LIB_H <EEPROM.h> |
| 36 | + typedef int eeprom_address_t; |
| 37 | +#endif |
| 38 | +#ifdef PLATFORMIO |
| 39 | + #define RTC_LIB_H <TimeLib.h> |
| 40 | +#else |
| 41 | + #define RTC_LIB_H <Time.h> |
| 42 | +#endif |
| 43 | + |
| 44 | +#define pinIsReserved(pin) ( ((pin) == 0) ) //Forbidden pins like USB on other boards |
36 | 45 |
|
37 | 46 | /* |
38 | 47 | *********************************************************************************************************** |
39 | 48 | * Schedules |
40 | 49 | */ |
41 | 50 | //Refer to svn.savannah.nongnu.org/viewvc/trunk/avr-libc/include/avr/iomxx0_1.h?root=avr-libc&view=markup |
42 | | - #define FUEL1_COUNTER TCNT3 |
43 | | - #define FUEL2_COUNTER TCNT3 |
44 | | - #define FUEL3_COUNTER TCNT3 |
45 | | - #define FUEL4_COUNTER TCNT4 |
46 | | - #define FUEL5_COUNTER TCNT4 |
47 | | - #define FUEL6_COUNTER TCNT4 //Replaces ignition 4 |
48 | | - #define FUEL7_COUNTER TCNT5 //Replaces ignition 3 |
49 | | - #define FUEL8_COUNTER TCNT5 //Replaces ignition 2 |
50 | | - |
51 | | - #define IGN1_COUNTER TCNT5 |
52 | | - #define IGN2_COUNTER TCNT5 |
53 | | - #define IGN3_COUNTER TCNT5 |
54 | | - #define IGN4_COUNTER TCNT4 |
55 | | - #define IGN5_COUNTER TCNT4 |
56 | | - #define IGN6_COUNTER TCNT4 //Replaces injector 4 |
57 | | - #define IGN7_COUNTER TCNT3 //Replaces injector 3 |
58 | | - #define IGN8_COUNTER TCNT3 //Replaces injector 2 |
59 | | - |
60 | | - #define FUEL1_COMPARE OCR3A |
61 | | - #define FUEL2_COMPARE OCR3B |
62 | | - #define FUEL3_COMPARE OCR3C |
63 | | - #define FUEL4_COMPARE OCR4B //Replaces ignition 6 |
64 | | - #define FUEL5_COMPARE OCR4C //Replaces ignition 5 |
65 | | - #define FUEL6_COMPARE OCR4A //Replaces ignition 4 |
66 | | - #define FUEL7_COMPARE OCR5C //Replaces ignition 3 |
67 | | - #define FUEL8_COMPARE OCR5B //Replaces ignition 2 |
68 | | - |
69 | | - #define IGN1_COMPARE OCR5A |
70 | | - #define IGN2_COMPARE OCR5B |
71 | | - #define IGN3_COMPARE OCR5C |
72 | | - #define IGN4_COMPARE OCR4A //Replaces injector 6 |
73 | | - #define IGN5_COMPARE OCR4C //Replaces injector 5 |
74 | | - #define IGN6_COMPARE OCR4B //Replaces injector 4 |
75 | | - #define IGN7_COMPARE OCR3C //Replaces injector 3 |
76 | | - #define IGN8_COMPARE OCR3B //Replaces injector 2 |
77 | | - |
78 | | - //Note that the interrupt flag is reset BEFORE the interrupt is enabled |
| 51 | +#define FUEL1_COUNTER TCNT3 |
| 52 | +#define FUEL2_COUNTER TCNT3 |
| 53 | +#define FUEL3_COUNTER TCNT3 |
| 54 | +#define FUEL4_COUNTER TCNT4 |
| 55 | +#define FUEL5_COUNTER TCNT4 |
| 56 | +#define FUEL6_COUNTER TCNT4 //Replaces ignition 4 |
| 57 | +#define FUEL7_COUNTER TCNT5 //Replaces ignition 3 |
| 58 | +#define FUEL8_COUNTER TCNT5 //Replaces ignition 2 |
| 59 | + |
| 60 | +#define IGN1_COUNTER TCNT5 |
| 61 | +#define IGN2_COUNTER TCNT5 |
| 62 | +#define IGN3_COUNTER TCNT5 |
| 63 | +#define IGN4_COUNTER TCNT4 |
| 64 | +#define IGN5_COUNTER TCNT4 |
| 65 | +#define IGN6_COUNTER TCNT4 //Replaces injector 4 |
| 66 | +#define IGN7_COUNTER TCNT3 //Replaces injector 3 |
| 67 | +#define IGN8_COUNTER TCNT3 //Replaces injector 2 |
| 68 | + |
| 69 | +#define FUEL1_COMPARE OCR3A |
| 70 | +#define FUEL2_COMPARE OCR3B |
| 71 | +#define FUEL3_COMPARE OCR3C |
| 72 | +#define FUEL4_COMPARE OCR4B //Replaces ignition 6 |
| 73 | +#define FUEL5_COMPARE OCR4C //Replaces ignition 5 |
| 74 | +#define FUEL6_COMPARE OCR4A //Replaces ignition 4 |
| 75 | +#define FUEL7_COMPARE OCR5C //Replaces ignition 3 |
| 76 | +#define FUEL8_COMPARE OCR5B //Replaces ignition 2 |
| 77 | + |
| 78 | +#define IGN1_COMPARE OCR5A |
| 79 | +#define IGN2_COMPARE OCR5B |
| 80 | +#define IGN3_COMPARE OCR5C |
| 81 | +#define IGN4_COMPARE OCR4A //Replaces injector 6 |
| 82 | +#define IGN5_COMPARE OCR4C //Replaces injector 5 |
| 83 | +#define IGN6_COMPARE OCR4B //Replaces injector 4 |
| 84 | +#define IGN7_COMPARE OCR3C //Replaces injector 3 |
| 85 | +#define IGN8_COMPARE OCR3B //Replaces injector 2 |
| 86 | + |
| 87 | +//Note that the interrupt flag is reset BEFORE the interrupt is enabled |
79 | 88 | static inline void FUEL1_TIMER_ENABLE(void) { TIFR3 |= (1<<OCF3A) ; TIMSK3 |= (1 << OCIE3A); } //Turn on the A compare unit (ie turn on the interrupt) |
80 | 89 | static inline void FUEL2_TIMER_ENABLE(void) { TIFR3 |= (1<<OCF3B); TIMSK3 |= (1 << OCIE3B); } //Turn on the B compare unit (ie turn on the interrupt) |
81 | 90 | static inline void FUEL3_TIMER_ENABLE(void) { TIFR3 |= (1<<OCF3C); TIMSK3 |= (1 << OCIE3C); } //Turn on the C compare unit (ie turn on the interrupt) |
@@ -113,38 +122,35 @@ static inline void IGN6_TIMER_DISABLE(void) { TIMSK4 &= ~(1 << OCIE4B); } //Repl |
113 | 122 | static inline void IGN7_TIMER_DISABLE(void) { TIMSK3 &= ~(1 << OCIE3C); } //Replaces injector 3 |
114 | 123 | static inline void IGN8_TIMER_DISABLE(void) { TIMSK3 &= ~(1 << OCIE3B); } //Replaces injector 2 |
115 | 124 |
|
116 | | - #define MAX_TIMER_PERIOD 262140UL //The longest period of time (in uS) that the timer can permit (IN this case it is 65535 * 4, as each timer tick is 4uS) |
117 | | - #define uS_TO_TIMER_COMPARE(uS1) ((uS1) >> 2) //Converts a given number of uS into the required number of timer ticks until that time has passed |
| 125 | +#define MAX_TIMER_PERIOD 262140UL //The longest period of time (in uS) that the timer can permit (IN this case it is 65535 * 4, as each timer tick is 4uS) |
| 126 | +#define uS_TO_TIMER_COMPARE(uS1) ((uS1) >> 2) //Converts a given number of uS into the required number of timer ticks until that time has passed |
118 | 127 |
|
119 | 128 | /* |
120 | 129 | *********************************************************************************************************** |
121 | 130 | * Auxiliaries |
122 | 131 | */ |
123 | | - #define ENABLE_BOOST_TIMER() TIMSK1 |= (1 << OCIE1A) |
124 | | - #define DISABLE_BOOST_TIMER() TIMSK1 &= ~(1 << OCIE1A) |
125 | | - #define ENABLE_VVT_TIMER() TIMSK1 |= (1 << OCIE1B) |
126 | | - #define DISABLE_VVT_TIMER() TIMSK1 &= ~(1 << OCIE1B) |
| 132 | +#define ENABLE_BOOST_TIMER() TIMSK1 |= (1 << OCIE1A) |
| 133 | +#define DISABLE_BOOST_TIMER() TIMSK1 &= ~(1 << OCIE1A) |
| 134 | +#define ENABLE_VVT_TIMER() TIMSK1 |= (1 << OCIE1B) |
| 135 | +#define DISABLE_VVT_TIMER() TIMSK1 &= ~(1 << OCIE1B) |
127 | 136 |
|
128 | | - #define BOOST_TIMER_COMPARE OCR1A |
129 | | - #define BOOST_TIMER_COUNTER TCNT1 |
130 | | - #define VVT_TIMER_COMPARE OCR1B |
131 | | - #define VVT_TIMER_COUNTER TCNT1 |
| 137 | +#define BOOST_TIMER_COMPARE OCR1A |
| 138 | +#define BOOST_TIMER_COUNTER TCNT1 |
| 139 | +#define VVT_TIMER_COMPARE OCR1B |
| 140 | +#define VVT_TIMER_COUNTER TCNT1 |
132 | 141 |
|
133 | 142 | /* |
134 | 143 | *********************************************************************************************************** |
135 | 144 | * Idle |
136 | 145 | */ |
137 | | - #define IDLE_COUNTER TCNT1 |
138 | | - #define IDLE_COMPARE OCR1C |
| 146 | +#define IDLE_COUNTER TCNT1 |
| 147 | +#define IDLE_COMPARE OCR1C |
139 | 148 |
|
140 | | - #define IDLE_TIMER_ENABLE() TIMSK1 |= (1 << OCIE1C) |
141 | | - #define IDLE_TIMER_DISABLE() TIMSK1 &= ~(1 << OCIE1C) |
| 149 | +#define IDLE_TIMER_ENABLE() TIMSK1 |= (1 << OCIE1C) |
| 150 | +#define IDLE_TIMER_DISABLE() TIMSK1 &= ~(1 << OCIE1C) |
142 | 151 |
|
143 | 152 | /* |
144 | 153 | *********************************************************************************************************** |
145 | 154 | * CAN / Second serial |
146 | 155 | */ |
147 | 156 | #define SECONDARY_SERIAL_T HardwareSerial |
148 | | - |
149 | | -#endif //CORE_AVR |
150 | | -#endif //AVR2560_H |
|
0 commit comments