Add environment builds for mega2560 6/3 and 8/1 channel configurations. Add these builds to unit tests

This commit is contained in:
Josh Stewart 2023-10-11 08:21:47 +11:00
parent f657fc6293
commit 4cf7141b0b
6 changed files with 32 additions and 16 deletions

View File

@ -35,7 +35,7 @@ jobs:
pip install --upgrade platformio pip install --upgrade platformio
- name: Build test atmel - name: Build test atmel
run: platformio run -e megaatmega2560 -e megaatmega2561 run: platformio run -e megaatmega2560 -e megaatmega2560-6-3 -e megaatmega2560-8-1 -e megaatmega2561
- name: Build test teensy - name: Build test teensy
run: platformio run -e teensy35 -e teensy36 -e teensy41 run: platformio run -e teensy35 -e teensy36 -e teensy41

View File

@ -20,15 +20,19 @@ test_build_src = yes
debug_tool = simavr debug_tool = simavr
test_ignore = test_table3d_native test_ignore = test_table3d_native
;This environment is the same as the above, however compiles for 6 channels of fuel and 3 channels of ignition
[env:megaatmega2560-6-3]
extends = env:megaatmega2560
build_flags = -DUSE_LIBDIVIDE -O3 -ffast-math -fshort-enums -funroll-loops -Wall -Wextra -std=c99 -DINJ_CHANNELS=6 -DIGN_CHANNELS=3
;As the above, however compiles for 8 channels of fuel and only a single ignition channel
[env:megaatmega2560-8-1]
extends = env:megaatmega2560
build_flags = -DUSE_LIBDIVIDE -O3 -ffast-math -fshort-enums -funroll-loops -Wall -Wextra -std=c99 -DINJ_CHANNELS=8 -DIGN_CHANNELS=1
[env:megaatmega2561] [env:megaatmega2561]
platform=atmelavr extends = env:megaatmega2560
board=ATmega2561 board=ATmega2561
framework=arduino
build_unflags = -Os
build_flags = -DUSE_LIBDIVIDE -O3 -ffast-math -Wall -Wextra -std=c99
lib_deps = EEPROM, Time
test_build_src = yes
test_ignore = test_table3d_native
[env:teensy35] [env:teensy35]
;platform=teensy ;platform=teensy

View File

@ -674,7 +674,7 @@ void sendValues(uint16_t offset, uint16_t packetLength, byte cmd, Stream &target
#if defined(secondarySerial_AVAILABLE) #if defined(secondarySerial_AVAILABLE)
if (&targetPort == &secondarySerial) if (&targetPort == &secondarySerial)
{ {
//CAN serial //Using Secondary serial, check if selected protocol requires the echo back of the command
if( (configPage9.secondarySerialProtocol == SECONDARY_SERIAL_PROTO_GENERIC_FIXED) || (configPage9.secondarySerialProtocol == SECONDARY_SERIAL_PROTO_GENERIC_INI) || (configPage9.secondarySerialProtocol == SECONDARY_SERIAL_PROTO_REALDASH)) if( (configPage9.secondarySerialProtocol == SECONDARY_SERIAL_PROTO_GENERIC_FIXED) || (configPage9.secondarySerialProtocol == SECONDARY_SERIAL_PROTO_GENERIC_INI) || (configPage9.secondarySerialProtocol == SECONDARY_SERIAL_PROTO_REALDASH))
{ {
if (cmd == 0x30) if (cmd == 0x30)

View File

@ -34,13 +34,17 @@
#define BOARD_MAX_DIGITAL_PINS 54 //digital pins +1 #define BOARD_MAX_DIGITAL_PINS 54 //digital pins +1
#define BOARD_MAX_IO_PINS 70 //digital pins + analog channels + 1 #define BOARD_MAX_IO_PINS 70 //digital pins + analog channels + 1
#define BOARD_MAX_ADC_PINS 15 //Number of analog pins #define BOARD_MAX_ADC_PINS 15 //Number of analog pins
#ifndef LED_BUILTIN #ifndef LED_BUILTIN
#define LED_BUILTIN 13 #define LED_BUILTIN 13
#endif #endif
#define CORE_AVR #define CORE_AVR
#define BOARD_H "board_avr2560.h" #define BOARD_H "board_avr2560.h"
#define INJ_CHANNELS 4 #ifndef INJ_CHANNELS
#define IGN_CHANNELS 5 #define INJ_CHANNELS 4
#endif
#ifndef IGN_CHANNELS
#define IGN_CHANNELS 5
#endif
#if defined(__AVR_ATmega2561__) #if defined(__AVR_ATmega2561__)
//This is a workaround to avoid having to change all the references to higher ADC channels. We simply define the channels (Which don't exist on the 2561) as being the same as A0-A7 //This is a workaround to avoid having to change all the references to higher ADC channels. We simply define the channels (Which don't exist on the 2561) as being the same as A0-A7

View File

@ -3665,11 +3665,11 @@ void changeHalfToFullSync(void)
fuelSchedule6.pStartFunction = openInjector6; fuelSchedule6.pStartFunction = openInjector6;
fuelSchedule6.pEndFunction = closeInjector6; fuelSchedule6.pEndFunction = closeInjector6;
#endif #endif
#if INJ_CHANNELS >= 6 #if INJ_CHANNELS >= 7
fuelSchedule7.pStartFunction = openInjector7; fuelSchedule7.pStartFunction = openInjector7;
fuelSchedule7.pEndFunction = closeInjector7; fuelSchedule7.pEndFunction = closeInjector7;
#endif #endif
#if INJ_CHANNELS >= 6 #if INJ_CHANNELS >= 8
fuelSchedule8.pStartFunction = openInjector8; fuelSchedule8.pStartFunction = openInjector8;
fuelSchedule8.pEndFunction = closeInjector8; fuelSchedule8.pEndFunction = closeInjector8;
#endif #endif

View File

@ -995,6 +995,7 @@ void ignitionSchedule1Interrupt(void) //Most ARM chips can simply call a functio
ignitionScheduleISR(ignitionSchedule1); ignitionScheduleISR(ignitionSchedule1);
} }
#if IGN_CHANNELS >= 2
#if defined(CORE_AVR) //AVR chips use the ISR for this #if defined(CORE_AVR) //AVR chips use the ISR for this
ISR(TIMER5_COMPB_vect) //cppcheck-suppress misra-c2012-8.2 ISR(TIMER5_COMPB_vect) //cppcheck-suppress misra-c2012-8.2
#else #else
@ -1003,7 +1004,9 @@ void ignitionSchedule2Interrupt(void) //Most ARM chips can simply call a functio
{ {
ignitionScheduleISR(ignitionSchedule2); ignitionScheduleISR(ignitionSchedule2);
} }
#endif
#if IGN_CHANNELS >= 3
#if defined(CORE_AVR) //AVR chips use the ISR for this #if defined(CORE_AVR) //AVR chips use the ISR for this
ISR(TIMER5_COMPC_vect) //cppcheck-suppress misra-c2012-8.2 ISR(TIMER5_COMPC_vect) //cppcheck-suppress misra-c2012-8.2
#else #else
@ -1012,7 +1015,9 @@ void ignitionSchedule3Interrupt(void) //Most ARM chips can simply call a functio
{ {
ignitionScheduleISR(ignitionSchedule3); ignitionScheduleISR(ignitionSchedule3);
} }
#endif
#if IGN_CHANNELS >= 4
#if defined(CORE_AVR) //AVR chips use the ISR for this #if defined(CORE_AVR) //AVR chips use the ISR for this
ISR(TIMER4_COMPA_vect) //cppcheck-suppress misra-c2012-8.2 ISR(TIMER4_COMPA_vect) //cppcheck-suppress misra-c2012-8.2
#else #else
@ -1021,7 +1026,9 @@ void ignitionSchedule4Interrupt(void) //Most ARM chips can simply call a functio
{ {
ignitionScheduleISR(ignitionSchedule4); ignitionScheduleISR(ignitionSchedule4);
} }
#endif
#if IGN_CHANNELS >= 5
#if defined(CORE_AVR) //AVR chips use the ISR for this #if defined(CORE_AVR) //AVR chips use the ISR for this
ISR(TIMER4_COMPC_vect) //cppcheck-suppress misra-c2012-8.2 ISR(TIMER4_COMPC_vect) //cppcheck-suppress misra-c2012-8.2
#else #else
@ -1030,6 +1037,7 @@ void ignitionSchedule5Interrupt(void) //Most ARM chips can simply call a functio
{ {
ignitionScheduleISR(ignitionSchedule5); ignitionScheduleISR(ignitionSchedule5);
} }
#endif
#if IGN_CHANNELS >= 6 #if IGN_CHANNELS >= 6
#if defined(CORE_AVR) //AVR chips use the ISR for this #if defined(CORE_AVR) //AVR chips use the ISR for this