diff --git a/PINOUTS.md b/PINOUTS.md index 617c9e5d3..02fbe6aac 100644 --- a/PINOUTS.md +++ b/PINOUTS.md @@ -12,9 +12,9 @@ This wiring can be completely modified by the user. | DOUT5 | DISPLAY DAT | | DOUT6 | DISPLAY CS | | DOUT7 | DISPLAY BEEP | -| DOUT8 | IC74HC595_DATA | -| DOUT9 | IC74HC595_CLK | -| DOUT10 | IC74HC595_LATCH | +| DOUT8 | SHIFT_REGISTER_DATA | +| DOUT9 | SHIFT_REGISTER_CLK | +| DOUT10 | SHIFT_REGISTER_LATCH | | DOUT11 | STEPPER_DIGIPOT_CS | | DOUT12 | STEPPER0_MSTEP1 | | DOUT13 | STEPPER1_MSTEP1 | diff --git a/docs/mcumap_gen.xlsx b/docs/mcumap_gen.xlsx index 4b73af16e..9e3ae089b 100644 Binary files a/docs/mcumap_gen.xlsx and b/docs/mcumap_gen.xlsx differ diff --git a/makefiles/virtual/uCNC-emulator.dev b/makefiles/virtual/uCNC-emulator.dev index f2717d481..54a8cde1c 100644 --- a/makefiles/virtual/uCNC-emulator.dev +++ b/makefiles/virtual/uCNC-emulator.dev @@ -29,7 +29,7 @@ IncludeVersionInfo=0 SupportXPThemes=0 CompilerSet=1 CompilerSettings=000000e0g0000000001000000 -UnitCount=94 +UnitCount=96 [VersionInfo] Major=1 @@ -260,18 +260,8 @@ Priority=1000 OverrideBuildCmd=0 BuildCmd= -[Unit23] -FileName=..\..\uCNC\src\modules\ic74hc595.c -CompileCpp=1 -Folder= -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - [Unit24] -FileName=..\..\uCNC\src\modules\ic74hc595.h +FileName=..\..\uCNC\src\modules\modbus.c CompileCpp=1 Folder= Compile=1 @@ -281,7 +271,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit25] -FileName=..\..\uCNC\src\modules\modbus.c +FileName=..\..\uCNC\src\modules\modbus.h CompileCpp=1 Folder= Compile=1 @@ -291,7 +281,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit26] -FileName=..\..\uCNC\src\modules\modbus.h +FileName=..\..\uCNC\src\modules\pid.c CompileCpp=1 Folder= Compile=1 @@ -301,7 +291,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit27] -FileName=..\..\uCNC\src\modules\pid.c +FileName=..\..\uCNC\src\modules\pid.h CompileCpp=1 Folder= Compile=1 @@ -311,7 +301,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit28] -FileName=..\..\uCNC\src\modules\pid.h +FileName=..\..\uCNC\src\modules\softi2c.c CompileCpp=1 Folder= Compile=1 @@ -321,7 +311,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit29] -FileName=..\..\uCNC\src\modules\softi2c.c +FileName=..\..\uCNC\src\modules\softi2c.h CompileCpp=1 Folder= Compile=1 @@ -331,7 +321,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit30] -FileName=..\..\uCNC\src\modules\softi2c.h +FileName=..\..\uCNC\src\modules\softspi.c CompileCpp=1 Folder= Compile=1 @@ -341,7 +331,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit31] -FileName=..\..\uCNC\src\modules\softspi.c +FileName=..\..\uCNC\src\modules\softspi.h CompileCpp=1 Folder= Compile=1 @@ -351,7 +341,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit32] -FileName=..\..\uCNC\src\modules\softspi.h +FileName=..\..\uCNC\src\modules\softuart.c CompileCpp=1 Folder= Compile=1 @@ -361,7 +351,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit33] -FileName=..\..\uCNC\src\modules\softuart.c +FileName=..\..\uCNC\src\modules\softuart.h CompileCpp=1 Folder= Compile=1 @@ -371,7 +361,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit34] -FileName=..\..\uCNC\src\modules\softuart.h +FileName=..\..\uCNC\src\modules\system_languages.h CompileCpp=1 Folder= Compile=1 @@ -381,7 +371,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit35] -FileName=..\..\uCNC\src\modules\system_languages.h +FileName=..\..\uCNC\src\modules\language\language_en.h CompileCpp=1 Folder= Compile=1 @@ -391,7 +381,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit38] -FileName=..\..\uCNC\src\interface\grbl_interface.h +FileName=..\..\uCNC\src\hal\io_hal.h CompileCpp=1 Folder= Compile=1 @@ -401,7 +391,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit42] -FileName=..\..\uCNC\src\hal\tools\tool_helper.h +FileName=..\..\uCNC\src\hal\tools\tools\laser_ppi.c CompileCpp=1 Folder= Compile=1 @@ -411,7 +401,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit43] -FileName=..\..\uCNC\src\hal\tools\tools\laser_ppi.c +FileName=..\..\uCNC\src\hal\tools\tools\laser_pwm.c CompileCpp=1 Folder= Compile=1 @@ -421,7 +411,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit44] -FileName=..\..\uCNC\src\hal\tools\tools\laser_pwm.c +FileName=..\..\uCNC\src\hal\tools\tools\pen_servo.c CompileCpp=1 Folder= Compile=1 @@ -431,7 +421,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit45] -FileName=..\..\uCNC\src\hal\tools\tools\pen_servo.c +FileName=..\..\uCNC\src\hal\tools\tools\plasma_thc.c CompileCpp=1 Folder= Compile=1 @@ -441,7 +431,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit46] -FileName=..\..\uCNC\src\hal\tools\tools\plasma_thc.c +FileName=..\..\uCNC\src\hal\tools\tools\spindle_besc.c CompileCpp=1 Folder= Compile=1 @@ -451,7 +441,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit47] -FileName=..\..\uCNC\src\hal\tools\tools\spindle_besc.c +FileName=..\..\uCNC\src\hal\tools\tools\spindle_pwm.c CompileCpp=1 Folder= Compile=1 @@ -461,7 +451,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit48] -FileName=..\..\uCNC\src\hal\tools\tools\spindle_pwm.c +FileName=..\..\uCNC\src\hal\tools\tools\spindle_relay.c CompileCpp=1 Folder= Compile=1 @@ -471,7 +461,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit49] -FileName=..\..\uCNC\src\hal\tools\tools\spindle_relay.c +FileName=..\..\uCNC\src\hal\tools\tools\vfd_modbus.c CompileCpp=1 Folder= Compile=1 @@ -481,7 +471,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit50] -FileName=..\..\uCNC\src\hal\tools\tools\vfd_modbus.c +FileName=..\..\uCNC\src\hal\tools\tools\vfd_pwm.c CompileCpp=1 Folder= Compile=1 @@ -491,7 +481,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit51] -FileName=..\..\uCNC\src\hal\tools\tools\vfd_pwm.c +FileName=..\..\uCNC\src\hal\mcus\mcu.c CompileCpp=1 Folder= Compile=1 @@ -501,7 +491,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit52] -FileName=..\..\uCNC\src\hal\mcus\mcu.c +FileName=..\..\uCNC\src\hal\mcus\mcu.h CompileCpp=1 Folder= Compile=1 @@ -511,7 +501,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit53] -FileName=..\..\uCNC\src\hal\mcus\mcu.h +FileName=..\..\uCNC\src\hal\mcus\mcudefs.h CompileCpp=1 Folder= Compile=1 @@ -521,7 +511,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit54] -FileName=..\..\uCNC\src\hal\mcus\mcudefs.h +FileName=..\..\uCNC\src\hal\mcus\mcus.h CompileCpp=1 Folder= Compile=1 @@ -531,7 +521,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit55] -FileName=..\..\uCNC\src\hal\mcus\mcus.h +FileName=..\..\uCNC\src\hal\mcus\virtual\mcumap_virtual.h CompileCpp=1 Folder= Compile=1 @@ -541,7 +531,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit56] -FileName=..\..\uCNC\src\hal\mcus\virtual\mcumap_virtual.h +FileName=..\..\uCNC\src\hal\kinematics\kinematic.c CompileCpp=1 Folder= Compile=1 @@ -551,7 +541,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit57] -FileName=..\..\uCNC\src\hal\kinematics\kinematic.c +FileName=..\..\uCNC\src\hal\kinematics\kinematic.h CompileCpp=1 Folder= Compile=1 @@ -561,7 +551,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit58] -FileName=..\..\uCNC\src\hal\kinematics\kinematic.h +FileName=..\..\uCNC\src\hal\kinematics\kinematic_cartesian.c CompileCpp=1 Folder= Compile=1 @@ -571,7 +561,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit59] -FileName=..\..\uCNC\src\hal\kinematics\kinematic_cartesian.c +FileName=..\..\uCNC\src\hal\kinematics\kinematic_cartesian.h CompileCpp=1 Folder= Compile=1 @@ -581,7 +571,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit60] -FileName=..\..\uCNC\src\hal\kinematics\kinematic_cartesian.h +FileName=..\..\uCNC\src\hal\kinematics\kinematic_corexy.c CompileCpp=1 Folder= Compile=1 @@ -591,7 +581,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit61] -FileName=..\..\uCNC\src\hal\kinematics\kinematic_corexy.c +FileName=..\..\uCNC\src\hal\kinematics\kinematic_corexy.h CompileCpp=1 Folder= Compile=1 @@ -601,7 +591,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit62] -FileName=..\..\uCNC\src\hal\kinematics\kinematic_corexy.h +FileName=..\..\uCNC\src\hal\kinematics\kinematic_delta.c CompileCpp=1 Folder= Compile=1 @@ -611,7 +601,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit63] -FileName=..\..\uCNC\src\hal\kinematics\kinematic_delta.c +FileName=..\..\uCNC\src\hal\kinematics\kinematic_delta.h CompileCpp=1 Folder= Compile=1 @@ -621,7 +611,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit64] -FileName=..\..\uCNC\src\hal\kinematics\kinematic_delta.h +FileName=..\..\uCNC\src\hal\kinematics\kinematic_linear_delta.c CompileCpp=1 Folder= Compile=1 @@ -631,7 +621,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit65] -FileName=..\..\uCNC\src\hal\kinematics\kinematic_linear_delta.c +FileName=..\..\uCNC\src\hal\kinematics\kinematic_linear_delta.h CompileCpp=1 Folder= Compile=1 @@ -641,7 +631,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit66] -FileName=..\..\uCNC\src\hal\kinematics\kinematic_linear_delta.h +FileName=..\..\uCNC\src\hal\kinematics\kinematic_scara.c CompileCpp=1 Folder= Compile=1 @@ -651,7 +641,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit67] -FileName=..\..\uCNC\src\hal\kinematics\kinematic_scara.c +FileName=..\..\uCNC\src\hal\kinematics\kinematic_scara.h CompileCpp=1 Folder= Compile=1 @@ -661,7 +651,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit68] -FileName=..\..\uCNC\src\hal\kinematics\kinematic_scara.h +FileName=..\..\uCNC\src\hal\kinematics\kinematicdefs.h CompileCpp=1 Folder= Compile=1 @@ -671,7 +661,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit69] -FileName=..\..\uCNC\src\hal\kinematics\kinematicdefs.h +FileName=..\..\uCNC\src\hal\kinematics\kinematics.h CompileCpp=1 Folder= Compile=1 @@ -681,7 +671,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit70] -FileName=..\..\uCNC\src\hal\kinematics\kinematics.h +FileName=..\..\uCNC\src\hal\boards\boarddefs.h CompileCpp=1 Folder= Compile=1 @@ -691,7 +681,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit71] -FileName=..\..\uCNC\src\hal\boards\boarddefs.h +FileName=..\..\uCNC\src\core\interpolator.c CompileCpp=1 Folder= Compile=1 @@ -701,7 +691,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit72] -FileName=..\..\uCNC\src\core\interpolator.c +FileName=..\..\uCNC\src\core\interpolator.h CompileCpp=1 Folder= Compile=1 @@ -711,7 +701,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit73] -FileName=..\..\uCNC\src\core\interpolator.h +FileName=..\..\uCNC\src\core\io_control.c CompileCpp=1 Folder= Compile=1 @@ -721,7 +711,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit74] -FileName=..\..\uCNC\src\core\io_control.c +FileName=..\..\uCNC\src\core\io_control.h CompileCpp=1 Folder= Compile=1 @@ -731,7 +721,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit75] -FileName=..\..\uCNC\src\core\io_control.h +FileName=..\..\uCNC\src\core\motion_control.c CompileCpp=1 Folder= Compile=1 @@ -741,7 +731,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit76] -FileName=..\..\uCNC\src\core\motion_control.c +FileName=..\..\uCNC\src\core\motion_control.h CompileCpp=1 Folder= Compile=1 @@ -751,7 +741,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit77] -FileName=..\..\uCNC\src\core\motion_control.h +FileName=..\..\uCNC\src\core\parser.c CompileCpp=1 Folder= Compile=1 @@ -761,7 +751,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit78] -FileName=..\..\uCNC\src\core\parser.c +FileName=..\..\uCNC\src\core\parser.h CompileCpp=1 Folder= Compile=1 @@ -771,7 +761,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit79] -FileName=..\..\uCNC\src\core\parser.h +FileName=..\..\uCNC\src\core\planner.c CompileCpp=1 Folder= Compile=1 @@ -781,7 +771,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit80] -FileName=..\..\uCNC\src\core\planner.c +FileName=..\..\uCNC\src\core\planner.h CompileCpp=1 Folder= Compile=1 @@ -791,7 +781,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit81] -FileName=..\..\uCNC\src\core\planner.h +FileName=..\..\uCNC\src\utils.c CompileCpp=1 Folder= Compile=1 @@ -801,7 +791,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit82] -FileName=..\..\uCNC\src\utils.c +FileName=..\..\uCNC\src\interface\grbl_print.c CompileCpp=1 Folder= Compile=1 @@ -811,7 +801,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit84] -FileName=..\..\uCNC\src\interface\grbl_protocol.c +FileName=..\..\uCNC\src\interface\grbl_settings.c CompileCpp=1 Folder= Compile=1 @@ -821,7 +811,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit85] -FileName=..\..\uCNC\src\interface\grbl_settings.c +FileName=..\..\uCNC\src\interface\grbl_stream.c Folder= Compile=1 Link=1 @@ -831,7 +821,7 @@ BuildCmd= CompileCpp=1 [Unit86] -FileName=..\..\uCNC\src\interface\grbl_stream.c +FileName=..\..\uCNC\src\interface\grbl_print.h CompileCpp=1 Folder= Compile=1 @@ -841,7 +831,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit89] -FileName=..\..\uCNC\src\interface\grbl_settings.h +FileName=..\..\uCNC\src\interface\grbl_stream.h CompileCpp=1 Folder= Compile=1 @@ -851,7 +841,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit90] -FileName=..\..\uCNC\src\interface\grbl_stream.h +FileName=..\..\uCNC\src\interface\serial_compatibility.h CompileCpp=1 Folder= Compile=1 @@ -861,7 +851,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit91] -FileName=..\..\uCNC\src\interface\serial_compatibility.h +FileName=..\..\uCNC\src\modules\file_system.c CompileCpp=1 Folder= Compile=1 @@ -871,7 +861,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit93] -FileName=..\..\uCNC\src\modules\file_system.h +FileName=..\..\uCNC\src\core\parser_expr.c CompileCpp=1 Folder= Compile=1 @@ -881,7 +871,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit96] -FileName=..\..\uCNC\src\modules\m66\parser_m66.c +FileName=..\..\uCNC\src\modules\shift_register.h CompileCpp=1 Folder= Compile=1 @@ -901,7 +891,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit87] -FileName=..\..\uCNC\src\interface\grbl_print.h +FileName=..\..\uCNC\src\interface\grbl_protocol.h CompileCpp=1 Folder= Compile=1 @@ -911,7 +901,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit88] -FileName=..\..\uCNC\src\interface\grbl_protocol.h +FileName=..\..\uCNC\src\interface\grbl_settings.h CompileCpp=1 Folder= Compile=1 @@ -921,7 +911,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit36] -FileName=..\..\uCNC\src\modules\language\language_en.h +FileName=..\..\uCNC\src\interface\defaults.h CompileCpp=1 Folder= Compile=1 @@ -931,7 +921,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit37] -FileName=..\..\uCNC\src\interface\defaults.h +FileName=..\..\uCNC\src\interface\grbl_interface.h CompileCpp=1 Folder= Compile=1 @@ -941,7 +931,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit41] -FileName=..\..\uCNC\src\hal\tools\tool.h +FileName=..\..\uCNC\src\hal\tools\tool_helper.h CompileCpp=1 Folder= Compile=1 @@ -951,7 +941,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit39] -FileName=..\..\uCNC\src\hal\io_hal.h +FileName=..\..\uCNC\src\hal\tools\tool.c CompileCpp=1 Folder= Compile=1 @@ -961,7 +951,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit40] -FileName=..\..\uCNC\src\hal\tools\tool.c +FileName=..\..\uCNC\src\hal\tools\tool.h CompileCpp=1 Folder= Compile=1 @@ -971,7 +961,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit95] -FileName=..\..\uCNC\src\modules\system_menu.h +FileName=..\..\uCNC\src\modules\shift_register.c CompileCpp=1 Folder= Compile=1 @@ -1011,7 +1001,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit83] -FileName=..\..\uCNC\src\interface\grbl_print.c +FileName=..\..\uCNC\src\interface\grbl_protocol.c CompileCpp=1 Folder= Compile=1 @@ -1021,7 +1011,7 @@ OverrideBuildCmd=0 BuildCmd= [Unit92] -FileName=..\..\uCNC\src\modules\file_system.c +FileName=..\..\uCNC\src\modules\file_system.h CompileCpp=1 Folder= Compile=1 @@ -1031,7 +1021,17 @@ OverrideBuildCmd=0 BuildCmd= [Unit94] -FileName=..\..\uCNC\src\core\parser_expr.c +FileName=..\..\uCNC\src\modules\ic74hc165.h +CompileCpp=1 +Folder= +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit23] +FileName=..\..\uCNC\src\modules\ic74hc595.h CompileCpp=1 Folder= Compile=1 diff --git a/uCNC/src/cnc.c b/uCNC/src/cnc.c index d1b45292c..8b492b4cf 100644 --- a/uCNC/src/cnc.c +++ b/uCNC/src/cnc.c @@ -1065,6 +1065,9 @@ static void cnc_io_dotasks(void) { // run internal mcu tasks (USB and communications) mcu_dotasks(); +#if IC74HC595_COUNT > 0 || IC74HC165_COUNT > 0 + shift_register_io_pins(); // update extended IO +#endif mcu_limits_changed_cb(); mcu_controls_changed_cb(); diff --git a/uCNC/src/cnc_hal_config_helper.h b/uCNC/src/cnc_hal_config_helper.h index 725558679..413aff80e 100644 --- a/uCNC/src/cnc_hal_config_helper.h +++ b/uCNC/src/cnc_hal_config_helper.h @@ -54,7 +54,7 @@ extern "C" // final HAL configurations #include "../cnc_hal_config.h" //inicializes the HAL hardcoded connections #include "../cnc_hal_overrides.h" //config override file -#include "modules/ic74hc595.h" // io extender +#include "modules/shift_register.h" // io extender /** * diff --git a/uCNC/src/core/io_control.c b/uCNC/src/core/io_control.c index 00b041698..8ad5a1a23 100644 --- a/uCNC/src/core/io_control.c +++ b/uCNC/src/core/io_control.c @@ -236,6 +236,10 @@ MCU_IO_CALLBACK void mcu_inputs_changed_cb(void) uint8_t inputs = 0; uint8_t diff; +#ifdef IC74HC165_HAS_DINS + shift_register_io_pins(); +#endif + #if (ASSERT_PIN(DIN0) && defined(DIN0_ISR)) if (io_get_input(DIN0)) { @@ -321,6 +325,9 @@ uint8_t io_get_limits(void) { #ifdef DISABLE_ALL_LIMITS return 0; +#endif +#ifdef IC74HC165_HAS_LIMITS + shift_register_io_pins(); #endif uint8_t value = 0; @@ -374,6 +381,9 @@ uint8_t io_get_controls(void) { #ifdef DISABLE_ALL_CONTROLS return 0; +#endif +#ifdef IC74HC165_HAS_CONTROLS + shift_register_io_pins(); #endif uint8_t value = 0; #if ASSERT_PIN(ESTOP) @@ -428,6 +438,9 @@ bool io_get_probe(void) #if !ASSERT_PIN(PROBE) return false; #else +#ifdef IC74HC165_HAS_PROBE + shift_register_io_pins(); +#endif #if ASSERT_PIN(PROBE) bool probe = (io_get_input(PROBE) != 0); return (!g_settings.probe_invert_mask) ? probe : !probe; @@ -527,7 +540,7 @@ void io_set_steps(uint8_t mask) #endif #ifdef IC74HC595_HAS_STEPS - ic74hc595_shift_io_pins(); + shift_register_io_pins(); #endif } @@ -591,7 +604,7 @@ void io_toggle_steps(uint8_t mask) #endif #ifdef IC74HC595_HAS_STEPS - ic74hc595_shift_io_pins(); + shift_register_io_pins(); #endif } @@ -710,7 +723,7 @@ void io_set_dirs(uint8_t mask) #endif #ifdef IC74HC595_HAS_DIRS - ic74hc595_shift_io_pins(); + shift_register_io_pins(); #endif } @@ -802,7 +815,7 @@ void io_enable_steppers(uint8_t mask) #endif #ifdef IC74HC595_HAS_STEPS_EN - ic74hc595_shift_io_pins(); + shift_register_io_pins(); #endif } @@ -985,7 +998,7 @@ MCU_CALLBACK void io_soft_pwm_update(void) #endif #ifdef IC74HC595_HAS_PWMS - ic74hc595_shift_io_pins(); + shift_register_io_pins(); #endif } #endif @@ -1750,13 +1763,38 @@ void io_set_pinvalue(uint8_t pin, uint8_t value) } } -#ifdef IC74HC595_HAS_DOUTS - ic74hc595_shift_io_pins(); -#endif + // this ensures the pin is updated after writing (but might lead to slow or sucessive multiple readings and make firmware slow) + // extended pins (when not updated by an ISR), are updated frequently in the main loop + // for this reason will be assumed that extended pins might not update instantly. + // updating handling must be treated as a per need case like done in softuart/softspi modules + + // #if (IC74HC595_COUNT > 0) + // #if defined(IC74HC165_HAS_PWM) || defined(IC74HC165_HAS_SERVOS) || defined(IC74HC165_HAS_DOUTS) + // if (pin >= PWM_PINS_OFFSET && pin < 100) + // { + // shift_register_io_pins(); + // } + // #endif + // #endif } int16_t io_get_pinvalue(uint8_t pin) { + + // this ensures the pin is updated before reading (but might lead to slow or sucessive multiple readings and make firmware slow) + // extended pins (when not updated by an ISR), are updated frequently in the main loop + // for this reason will be assumed that extended pins might not update instantly + // updating handling must be treated as a per need case like done in softuart/softspi modules + + // #if (IC74HC165_COUNT > 0) + // #if defined(IC74HC165_HAS_LIMITS) || defined(IC74HC165_HAS_CONTROLS) || defined(IC74HC165_HAS_PROBE) + // if (pin >= 100 && pin < ANALOG_PINS_OFFSET) + // { + // shift_register_io_pins(); + // } + // #endif + // #endif + switch (pin) { #if ASSERT_PIN(STEP0) diff --git a/uCNC/src/hal/boards/esp32/boardmap_mks_dlc32.h b/uCNC/src/hal/boards/esp32/boardmap_mks_dlc32.h index 7c882258c..98ea7406f 100644 --- a/uCNC/src/hal/boards/esp32/boardmap_mks_dlc32.h +++ b/uCNC/src/hal/boards/esp32/boardmap_mks_dlc32.h @@ -54,7 +54,7 @@ extern "C" // bitbanging 74hc595 (not used) // uses 3 x 74HS595 // #define IC74HC595_COUNT 1 - // #define IC74HC595_DELAY_CYCLES 0 + // #define SHIFT_REGISTER_DELAY_CYCLES 0 // configure the 74HC595 modules // #define DOUT8_BIT 21 // #define DOUT9_BIT 16 diff --git a/uCNC/src/hal/boards/esp32/boardmap_mks_tinybee.h b/uCNC/src/hal/boards/esp32/boardmap_mks_tinybee.h index 8448ef55f..99ae7b15c 100644 --- a/uCNC/src/hal/boards/esp32/boardmap_mks_tinybee.h +++ b/uCNC/src/hal/boards/esp32/boardmap_mks_tinybee.h @@ -50,7 +50,7 @@ extern "C" // bitbanging 74hc595 (not used) // uses 3 x 74HS595 // #define IC74HC595_COUNT 3 -// #define IC74HC595_DELAY_CYCLES 0 +// #define SHIFT_REGISTER_DELAY_CYCLES 0 // configure the 74HC595 modules // #define DOUT8_BIT 27 // #define DOUT9_BIT 25 diff --git a/uCNC/src/hal/io_hal.h b/uCNC/src/hal/io_hal.h index 697b0f11d..23522d3c7 100644 --- a/uCNC/src/hal/io_hal.h +++ b/uCNC/src/hal/io_hal.h @@ -7,38 +7,25 @@ extern "C" { #endif -/*IO HAL*/ + /*IO HAL*/ + + /*PWM*/ + extern uint8_t g_soft_pwm_res; + extern uint8_t g_io_soft_pwm[16]; + extern uint8_t mcu_softpwm_freq_config(uint16_t freq); + #if ASSERT_PIN_IO(STEP0) #define io1_config_output mcu_config_output(STEP0) #define io1_set_output mcu_set_output(STEP0) #define io1_clear_output mcu_clear_output(STEP0) #define io1_toggle_output mcu_toggle_output(STEP0) #define io1_get_output mcu_get_output(STEP0) -#if !defined(STEP0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io1_config_input mcu_config_input(STEP0) -#else -#define io1_config_input mcu_config_input(STEP0);mcu_config_pullup(STEP0) -#endif -#define io1_config_pullup mcu_config_pullup(STEP0) -#define io1_get_input mcu_get_input(STEP0) #elif ASSERT_PIN_EXTENDED(STEP0) #define io1_config_output -#define io1_set_output ic74hc595_set_pin(STEP0);ic74hc595_shift_io_pins() -#define io1_clear_output ic74hc595_clear_pin(STEP0);ic74hc595_shift_io_pins() -#define io1_toggle_output ic74hc595_toggle_pin(STEP0);ic74hc595_shift_io_pins() +#define io1_set_output ic74hc595_set_pin(STEP0) +#define io1_clear_output ic74hc595_clear_pin(STEP0) +#define io1_toggle_output ic74hc595_toggle_pin(STEP0) #define io1_get_output ic74hc595_get_pin(STEP0) -#define io1_config_input -#define io1_config_pullup -#define io1_get_input 0 -#else -#define io1_config_output -#define io1_set_output -#define io1_clear_output -#define io1_toggle_output -#define io1_get_output 0 -#define io1_config_input -#define io1_config_pullup -#define io1_get_input 0 #endif #if ASSERT_PIN_IO(STEP1) #define io2_config_output mcu_config_output(STEP1) @@ -46,31 +33,12 @@ extern "C" #define io2_clear_output mcu_clear_output(STEP1) #define io2_toggle_output mcu_toggle_output(STEP1) #define io2_get_output mcu_get_output(STEP1) -#if !defined(STEP1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io2_config_input mcu_config_input(STEP1) -#else -#define io2_config_input mcu_config_input(STEP1);mcu_config_pullup(STEP1) -#endif -#define io2_config_pullup mcu_config_pullup(STEP1) -#define io2_get_input mcu_get_input(STEP1) #elif ASSERT_PIN_EXTENDED(STEP1) #define io2_config_output -#define io2_set_output ic74hc595_set_pin(STEP1);ic74hc595_shift_io_pins() -#define io2_clear_output ic74hc595_clear_pin(STEP1);ic74hc595_shift_io_pins() -#define io2_toggle_output ic74hc595_toggle_pin(STEP1);ic74hc595_shift_io_pins() +#define io2_set_output ic74hc595_set_pin(STEP1) +#define io2_clear_output ic74hc595_clear_pin(STEP1) +#define io2_toggle_output ic74hc595_toggle_pin(STEP1) #define io2_get_output ic74hc595_get_pin(STEP1) -#define io2_config_input -#define io2_config_pullup -#define io2_get_input 0 -#else -#define io2_config_output -#define io2_set_output -#define io2_clear_output -#define io2_toggle_output -#define io2_get_output 0 -#define io2_config_input -#define io2_config_pullup -#define io2_get_input 0 #endif #if ASSERT_PIN_IO(STEP2) #define io3_config_output mcu_config_output(STEP2) @@ -78,31 +46,12 @@ extern "C" #define io3_clear_output mcu_clear_output(STEP2) #define io3_toggle_output mcu_toggle_output(STEP2) #define io3_get_output mcu_get_output(STEP2) -#if !defined(STEP2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io3_config_input mcu_config_input(STEP2) -#else -#define io3_config_input mcu_config_input(STEP2);mcu_config_pullup(STEP2) -#endif -#define io3_config_pullup mcu_config_pullup(STEP2) -#define io3_get_input mcu_get_input(STEP2) #elif ASSERT_PIN_EXTENDED(STEP2) #define io3_config_output -#define io3_set_output ic74hc595_set_pin(STEP2);ic74hc595_shift_io_pins() -#define io3_clear_output ic74hc595_clear_pin(STEP2);ic74hc595_shift_io_pins() -#define io3_toggle_output ic74hc595_toggle_pin(STEP2);ic74hc595_shift_io_pins() +#define io3_set_output ic74hc595_set_pin(STEP2) +#define io3_clear_output ic74hc595_clear_pin(STEP2) +#define io3_toggle_output ic74hc595_toggle_pin(STEP2) #define io3_get_output ic74hc595_get_pin(STEP2) -#define io3_config_input -#define io3_config_pullup -#define io3_get_input 0 -#else -#define io3_config_output -#define io3_set_output -#define io3_clear_output -#define io3_toggle_output -#define io3_get_output 0 -#define io3_config_input -#define io3_config_pullup -#define io3_get_input 0 #endif #if ASSERT_PIN_IO(STEP3) #define io4_config_output mcu_config_output(STEP3) @@ -110,31 +59,12 @@ extern "C" #define io4_clear_output mcu_clear_output(STEP3) #define io4_toggle_output mcu_toggle_output(STEP3) #define io4_get_output mcu_get_output(STEP3) -#if !defined(STEP3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io4_config_input mcu_config_input(STEP3) -#else -#define io4_config_input mcu_config_input(STEP3);mcu_config_pullup(STEP3) -#endif -#define io4_config_pullup mcu_config_pullup(STEP3) -#define io4_get_input mcu_get_input(STEP3) #elif ASSERT_PIN_EXTENDED(STEP3) #define io4_config_output -#define io4_set_output ic74hc595_set_pin(STEP3);ic74hc595_shift_io_pins() -#define io4_clear_output ic74hc595_clear_pin(STEP3);ic74hc595_shift_io_pins() -#define io4_toggle_output ic74hc595_toggle_pin(STEP3);ic74hc595_shift_io_pins() +#define io4_set_output ic74hc595_set_pin(STEP3) +#define io4_clear_output ic74hc595_clear_pin(STEP3) +#define io4_toggle_output ic74hc595_toggle_pin(STEP3) #define io4_get_output ic74hc595_get_pin(STEP3) -#define io4_config_input -#define io4_config_pullup -#define io4_get_input 0 -#else -#define io4_config_output -#define io4_set_output -#define io4_clear_output -#define io4_toggle_output -#define io4_get_output 0 -#define io4_config_input -#define io4_config_pullup -#define io4_get_input 0 #endif #if ASSERT_PIN_IO(STEP4) #define io5_config_output mcu_config_output(STEP4) @@ -142,31 +72,12 @@ extern "C" #define io5_clear_output mcu_clear_output(STEP4) #define io5_toggle_output mcu_toggle_output(STEP4) #define io5_get_output mcu_get_output(STEP4) -#if !defined(STEP4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io5_config_input mcu_config_input(STEP4) -#else -#define io5_config_input mcu_config_input(STEP4);mcu_config_pullup(STEP4) -#endif -#define io5_config_pullup mcu_config_pullup(STEP4) -#define io5_get_input mcu_get_input(STEP4) #elif ASSERT_PIN_EXTENDED(STEP4) #define io5_config_output -#define io5_set_output ic74hc595_set_pin(STEP4);ic74hc595_shift_io_pins() -#define io5_clear_output ic74hc595_clear_pin(STEP4);ic74hc595_shift_io_pins() -#define io5_toggle_output ic74hc595_toggle_pin(STEP4);ic74hc595_shift_io_pins() +#define io5_set_output ic74hc595_set_pin(STEP4) +#define io5_clear_output ic74hc595_clear_pin(STEP4) +#define io5_toggle_output ic74hc595_toggle_pin(STEP4) #define io5_get_output ic74hc595_get_pin(STEP4) -#define io5_config_input -#define io5_config_pullup -#define io5_get_input 0 -#else -#define io5_config_output -#define io5_set_output -#define io5_clear_output -#define io5_toggle_output -#define io5_get_output 0 -#define io5_config_input -#define io5_config_pullup -#define io5_get_input 0 #endif #if ASSERT_PIN_IO(STEP5) #define io6_config_output mcu_config_output(STEP5) @@ -174,31 +85,12 @@ extern "C" #define io6_clear_output mcu_clear_output(STEP5) #define io6_toggle_output mcu_toggle_output(STEP5) #define io6_get_output mcu_get_output(STEP5) -#if !defined(STEP5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io6_config_input mcu_config_input(STEP5) -#else -#define io6_config_input mcu_config_input(STEP5);mcu_config_pullup(STEP5) -#endif -#define io6_config_pullup mcu_config_pullup(STEP5) -#define io6_get_input mcu_get_input(STEP5) #elif ASSERT_PIN_EXTENDED(STEP5) #define io6_config_output -#define io6_set_output ic74hc595_set_pin(STEP5);ic74hc595_shift_io_pins() -#define io6_clear_output ic74hc595_clear_pin(STEP5);ic74hc595_shift_io_pins() -#define io6_toggle_output ic74hc595_toggle_pin(STEP5);ic74hc595_shift_io_pins() +#define io6_set_output ic74hc595_set_pin(STEP5) +#define io6_clear_output ic74hc595_clear_pin(STEP5) +#define io6_toggle_output ic74hc595_toggle_pin(STEP5) #define io6_get_output ic74hc595_get_pin(STEP5) -#define io6_config_input -#define io6_config_pullup -#define io6_get_input 0 -#else -#define io6_config_output -#define io6_set_output -#define io6_clear_output -#define io6_toggle_output -#define io6_get_output 0 -#define io6_config_input -#define io6_config_pullup -#define io6_get_input 0 #endif #if ASSERT_PIN_IO(STEP6) #define io7_config_output mcu_config_output(STEP6) @@ -206,31 +98,12 @@ extern "C" #define io7_clear_output mcu_clear_output(STEP6) #define io7_toggle_output mcu_toggle_output(STEP6) #define io7_get_output mcu_get_output(STEP6) -#if !defined(STEP6_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io7_config_input mcu_config_input(STEP6) -#else -#define io7_config_input mcu_config_input(STEP6);mcu_config_pullup(STEP6) -#endif -#define io7_config_pullup mcu_config_pullup(STEP6) -#define io7_get_input mcu_get_input(STEP6) #elif ASSERT_PIN_EXTENDED(STEP6) #define io7_config_output -#define io7_set_output ic74hc595_set_pin(STEP6);ic74hc595_shift_io_pins() -#define io7_clear_output ic74hc595_clear_pin(STEP6);ic74hc595_shift_io_pins() -#define io7_toggle_output ic74hc595_toggle_pin(STEP6);ic74hc595_shift_io_pins() +#define io7_set_output ic74hc595_set_pin(STEP6) +#define io7_clear_output ic74hc595_clear_pin(STEP6) +#define io7_toggle_output ic74hc595_toggle_pin(STEP6) #define io7_get_output ic74hc595_get_pin(STEP6) -#define io7_config_input -#define io7_config_pullup -#define io7_get_input 0 -#else -#define io7_config_output -#define io7_set_output -#define io7_clear_output -#define io7_toggle_output -#define io7_get_output 0 -#define io7_config_input -#define io7_config_pullup -#define io7_get_input 0 #endif #if ASSERT_PIN_IO(STEP7) #define io8_config_output mcu_config_output(STEP7) @@ -238,31 +111,12 @@ extern "C" #define io8_clear_output mcu_clear_output(STEP7) #define io8_toggle_output mcu_toggle_output(STEP7) #define io8_get_output mcu_get_output(STEP7) -#if !defined(STEP7_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io8_config_input mcu_config_input(STEP7) -#else -#define io8_config_input mcu_config_input(STEP7);mcu_config_pullup(STEP7) -#endif -#define io8_config_pullup mcu_config_pullup(STEP7) -#define io8_get_input mcu_get_input(STEP7) #elif ASSERT_PIN_EXTENDED(STEP7) #define io8_config_output -#define io8_set_output ic74hc595_set_pin(STEP7);ic74hc595_shift_io_pins() -#define io8_clear_output ic74hc595_clear_pin(STEP7);ic74hc595_shift_io_pins() -#define io8_toggle_output ic74hc595_toggle_pin(STEP7);ic74hc595_shift_io_pins() +#define io8_set_output ic74hc595_set_pin(STEP7) +#define io8_clear_output ic74hc595_clear_pin(STEP7) +#define io8_toggle_output ic74hc595_toggle_pin(STEP7) #define io8_get_output ic74hc595_get_pin(STEP7) -#define io8_config_input -#define io8_config_pullup -#define io8_get_input 0 -#else -#define io8_config_output -#define io8_set_output -#define io8_clear_output -#define io8_toggle_output -#define io8_get_output 0 -#define io8_config_input -#define io8_config_pullup -#define io8_get_input 0 #endif #if ASSERT_PIN_IO(DIR0) #define io9_config_output mcu_config_output(DIR0) @@ -270,31 +124,12 @@ extern "C" #define io9_clear_output mcu_clear_output(DIR0) #define io9_toggle_output mcu_toggle_output(DIR0) #define io9_get_output mcu_get_output(DIR0) -#if !defined(DIR0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io9_config_input mcu_config_input(DIR0) -#else -#define io9_config_input mcu_config_input(DIR0);mcu_config_pullup(DIR0) -#endif -#define io9_config_pullup mcu_config_pullup(DIR0) -#define io9_get_input mcu_get_input(DIR0) #elif ASSERT_PIN_EXTENDED(DIR0) #define io9_config_output -#define io9_set_output ic74hc595_set_pin(DIR0);ic74hc595_shift_io_pins() -#define io9_clear_output ic74hc595_clear_pin(DIR0);ic74hc595_shift_io_pins() -#define io9_toggle_output ic74hc595_toggle_pin(DIR0);ic74hc595_shift_io_pins() +#define io9_set_output ic74hc595_set_pin(DIR0) +#define io9_clear_output ic74hc595_clear_pin(DIR0) +#define io9_toggle_output ic74hc595_toggle_pin(DIR0) #define io9_get_output ic74hc595_get_pin(DIR0) -#define io9_config_input -#define io9_config_pullup -#define io9_get_input 0 -#else -#define io9_config_output -#define io9_set_output -#define io9_clear_output -#define io9_toggle_output -#define io9_get_output 0 -#define io9_config_input -#define io9_config_pullup -#define io9_get_input 0 #endif #if ASSERT_PIN_IO(DIR1) #define io10_config_output mcu_config_output(DIR1) @@ -302,31 +137,12 @@ extern "C" #define io10_clear_output mcu_clear_output(DIR1) #define io10_toggle_output mcu_toggle_output(DIR1) #define io10_get_output mcu_get_output(DIR1) -#if !defined(DIR1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io10_config_input mcu_config_input(DIR1) -#else -#define io10_config_input mcu_config_input(DIR1);mcu_config_pullup(DIR1) -#endif -#define io10_config_pullup mcu_config_pullup(DIR1) -#define io10_get_input mcu_get_input(DIR1) #elif ASSERT_PIN_EXTENDED(DIR1) #define io10_config_output -#define io10_set_output ic74hc595_set_pin(DIR1);ic74hc595_shift_io_pins() -#define io10_clear_output ic74hc595_clear_pin(DIR1);ic74hc595_shift_io_pins() -#define io10_toggle_output ic74hc595_toggle_pin(DIR1);ic74hc595_shift_io_pins() +#define io10_set_output ic74hc595_set_pin(DIR1) +#define io10_clear_output ic74hc595_clear_pin(DIR1) +#define io10_toggle_output ic74hc595_toggle_pin(DIR1) #define io10_get_output ic74hc595_get_pin(DIR1) -#define io10_config_input -#define io10_config_pullup -#define io10_get_input 0 -#else -#define io10_config_output -#define io10_set_output -#define io10_clear_output -#define io10_toggle_output -#define io10_get_output 0 -#define io10_config_input -#define io10_config_pullup -#define io10_get_input 0 #endif #if ASSERT_PIN_IO(DIR2) #define io11_config_output mcu_config_output(DIR2) @@ -334,31 +150,12 @@ extern "C" #define io11_clear_output mcu_clear_output(DIR2) #define io11_toggle_output mcu_toggle_output(DIR2) #define io11_get_output mcu_get_output(DIR2) -#if !defined(DIR2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io11_config_input mcu_config_input(DIR2) -#else -#define io11_config_input mcu_config_input(DIR2);mcu_config_pullup(DIR2) -#endif -#define io11_config_pullup mcu_config_pullup(DIR2) -#define io11_get_input mcu_get_input(DIR2) #elif ASSERT_PIN_EXTENDED(DIR2) #define io11_config_output -#define io11_set_output ic74hc595_set_pin(DIR2);ic74hc595_shift_io_pins() -#define io11_clear_output ic74hc595_clear_pin(DIR2);ic74hc595_shift_io_pins() -#define io11_toggle_output ic74hc595_toggle_pin(DIR2);ic74hc595_shift_io_pins() +#define io11_set_output ic74hc595_set_pin(DIR2) +#define io11_clear_output ic74hc595_clear_pin(DIR2) +#define io11_toggle_output ic74hc595_toggle_pin(DIR2) #define io11_get_output ic74hc595_get_pin(DIR2) -#define io11_config_input -#define io11_config_pullup -#define io11_get_input 0 -#else -#define io11_config_output -#define io11_set_output -#define io11_clear_output -#define io11_toggle_output -#define io11_get_output 0 -#define io11_config_input -#define io11_config_pullup -#define io11_get_input 0 #endif #if ASSERT_PIN_IO(DIR3) #define io12_config_output mcu_config_output(DIR3) @@ -366,31 +163,12 @@ extern "C" #define io12_clear_output mcu_clear_output(DIR3) #define io12_toggle_output mcu_toggle_output(DIR3) #define io12_get_output mcu_get_output(DIR3) -#if !defined(DIR3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io12_config_input mcu_config_input(DIR3) -#else -#define io12_config_input mcu_config_input(DIR3);mcu_config_pullup(DIR3) -#endif -#define io12_config_pullup mcu_config_pullup(DIR3) -#define io12_get_input mcu_get_input(DIR3) #elif ASSERT_PIN_EXTENDED(DIR3) #define io12_config_output -#define io12_set_output ic74hc595_set_pin(DIR3);ic74hc595_shift_io_pins() -#define io12_clear_output ic74hc595_clear_pin(DIR3);ic74hc595_shift_io_pins() -#define io12_toggle_output ic74hc595_toggle_pin(DIR3);ic74hc595_shift_io_pins() +#define io12_set_output ic74hc595_set_pin(DIR3) +#define io12_clear_output ic74hc595_clear_pin(DIR3) +#define io12_toggle_output ic74hc595_toggle_pin(DIR3) #define io12_get_output ic74hc595_get_pin(DIR3) -#define io12_config_input -#define io12_config_pullup -#define io12_get_input 0 -#else -#define io12_config_output -#define io12_set_output -#define io12_clear_output -#define io12_toggle_output -#define io12_get_output 0 -#define io12_config_input -#define io12_config_pullup -#define io12_get_input 0 #endif #if ASSERT_PIN_IO(DIR4) #define io13_config_output mcu_config_output(DIR4) @@ -398,31 +176,12 @@ extern "C" #define io13_clear_output mcu_clear_output(DIR4) #define io13_toggle_output mcu_toggle_output(DIR4) #define io13_get_output mcu_get_output(DIR4) -#if !defined(DIR4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io13_config_input mcu_config_input(DIR4) -#else -#define io13_config_input mcu_config_input(DIR4);mcu_config_pullup(DIR4) -#endif -#define io13_config_pullup mcu_config_pullup(DIR4) -#define io13_get_input mcu_get_input(DIR4) #elif ASSERT_PIN_EXTENDED(DIR4) #define io13_config_output -#define io13_set_output ic74hc595_set_pin(DIR4);ic74hc595_shift_io_pins() -#define io13_clear_output ic74hc595_clear_pin(DIR4);ic74hc595_shift_io_pins() -#define io13_toggle_output ic74hc595_toggle_pin(DIR4);ic74hc595_shift_io_pins() +#define io13_set_output ic74hc595_set_pin(DIR4) +#define io13_clear_output ic74hc595_clear_pin(DIR4) +#define io13_toggle_output ic74hc595_toggle_pin(DIR4) #define io13_get_output ic74hc595_get_pin(DIR4) -#define io13_config_input -#define io13_config_pullup -#define io13_get_input 0 -#else -#define io13_config_output -#define io13_set_output -#define io13_clear_output -#define io13_toggle_output -#define io13_get_output 0 -#define io13_config_input -#define io13_config_pullup -#define io13_get_input 0 #endif #if ASSERT_PIN_IO(DIR5) #define io14_config_output mcu_config_output(DIR5) @@ -430,31 +189,12 @@ extern "C" #define io14_clear_output mcu_clear_output(DIR5) #define io14_toggle_output mcu_toggle_output(DIR5) #define io14_get_output mcu_get_output(DIR5) -#if !defined(DIR5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io14_config_input mcu_config_input(DIR5) -#else -#define io14_config_input mcu_config_input(DIR5);mcu_config_pullup(DIR5) -#endif -#define io14_config_pullup mcu_config_pullup(DIR5) -#define io14_get_input mcu_get_input(DIR5) #elif ASSERT_PIN_EXTENDED(DIR5) #define io14_config_output -#define io14_set_output ic74hc595_set_pin(DIR5);ic74hc595_shift_io_pins() -#define io14_clear_output ic74hc595_clear_pin(DIR5);ic74hc595_shift_io_pins() -#define io14_toggle_output ic74hc595_toggle_pin(DIR5);ic74hc595_shift_io_pins() +#define io14_set_output ic74hc595_set_pin(DIR5) +#define io14_clear_output ic74hc595_clear_pin(DIR5) +#define io14_toggle_output ic74hc595_toggle_pin(DIR5) #define io14_get_output ic74hc595_get_pin(DIR5) -#define io14_config_input -#define io14_config_pullup -#define io14_get_input 0 -#else -#define io14_config_output -#define io14_set_output -#define io14_clear_output -#define io14_toggle_output -#define io14_get_output 0 -#define io14_config_input -#define io14_config_pullup -#define io14_get_input 0 #endif #if ASSERT_PIN_IO(DIR6) #define io15_config_output mcu_config_output(DIR6) @@ -462,31 +202,12 @@ extern "C" #define io15_clear_output mcu_clear_output(DIR6) #define io15_toggle_output mcu_toggle_output(DIR6) #define io15_get_output mcu_get_output(DIR6) -#if !defined(DIR6_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io15_config_input mcu_config_input(DIR6) -#else -#define io15_config_input mcu_config_input(DIR6);mcu_config_pullup(DIR6) -#endif -#define io15_config_pullup mcu_config_pullup(DIR6) -#define io15_get_input mcu_get_input(DIR6) #elif ASSERT_PIN_EXTENDED(DIR6) #define io15_config_output -#define io15_set_output ic74hc595_set_pin(DIR6);ic74hc595_shift_io_pins() -#define io15_clear_output ic74hc595_clear_pin(DIR6);ic74hc595_shift_io_pins() -#define io15_toggle_output ic74hc595_toggle_pin(DIR6);ic74hc595_shift_io_pins() +#define io15_set_output ic74hc595_set_pin(DIR6) +#define io15_clear_output ic74hc595_clear_pin(DIR6) +#define io15_toggle_output ic74hc595_toggle_pin(DIR6) #define io15_get_output ic74hc595_get_pin(DIR6) -#define io15_config_input -#define io15_config_pullup -#define io15_get_input 0 -#else -#define io15_config_output -#define io15_set_output -#define io15_clear_output -#define io15_toggle_output -#define io15_get_output 0 -#define io15_config_input -#define io15_config_pullup -#define io15_get_input 0 #endif #if ASSERT_PIN_IO(DIR7) #define io16_config_output mcu_config_output(DIR7) @@ -494,31 +215,12 @@ extern "C" #define io16_clear_output mcu_clear_output(DIR7) #define io16_toggle_output mcu_toggle_output(DIR7) #define io16_get_output mcu_get_output(DIR7) -#if !defined(DIR7_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io16_config_input mcu_config_input(DIR7) -#else -#define io16_config_input mcu_config_input(DIR7);mcu_config_pullup(DIR7) -#endif -#define io16_config_pullup mcu_config_pullup(DIR7) -#define io16_get_input mcu_get_input(DIR7) #elif ASSERT_PIN_EXTENDED(DIR7) #define io16_config_output -#define io16_set_output ic74hc595_set_pin(DIR7);ic74hc595_shift_io_pins() -#define io16_clear_output ic74hc595_clear_pin(DIR7);ic74hc595_shift_io_pins() -#define io16_toggle_output ic74hc595_toggle_pin(DIR7);ic74hc595_shift_io_pins() +#define io16_set_output ic74hc595_set_pin(DIR7) +#define io16_clear_output ic74hc595_clear_pin(DIR7) +#define io16_toggle_output ic74hc595_toggle_pin(DIR7) #define io16_get_output ic74hc595_get_pin(DIR7) -#define io16_config_input -#define io16_config_pullup -#define io16_get_input 0 -#else -#define io16_config_output -#define io16_set_output -#define io16_clear_output -#define io16_toggle_output -#define io16_get_output 0 -#define io16_config_input -#define io16_config_pullup -#define io16_get_input 0 #endif #if ASSERT_PIN_IO(STEP0_EN) #define io17_config_output mcu_config_output(STEP0_EN) @@ -526,31 +228,12 @@ extern "C" #define io17_clear_output mcu_clear_output(STEP0_EN) #define io17_toggle_output mcu_toggle_output(STEP0_EN) #define io17_get_output mcu_get_output(STEP0_EN) -#if !defined(STEP0_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io17_config_input mcu_config_input(STEP0_EN) -#else -#define io17_config_input mcu_config_input(STEP0_EN);mcu_config_pullup(STEP0_EN) -#endif -#define io17_config_pullup mcu_config_pullup(STEP0_EN) -#define io17_get_input mcu_get_input(STEP0_EN) #elif ASSERT_PIN_EXTENDED(STEP0_EN) #define io17_config_output -#define io17_set_output ic74hc595_set_pin(STEP0_EN);ic74hc595_shift_io_pins() -#define io17_clear_output ic74hc595_clear_pin(STEP0_EN);ic74hc595_shift_io_pins() -#define io17_toggle_output ic74hc595_toggle_pin(STEP0_EN);ic74hc595_shift_io_pins() +#define io17_set_output ic74hc595_set_pin(STEP0_EN) +#define io17_clear_output ic74hc595_clear_pin(STEP0_EN) +#define io17_toggle_output ic74hc595_toggle_pin(STEP0_EN) #define io17_get_output ic74hc595_get_pin(STEP0_EN) -#define io17_config_input -#define io17_config_pullup -#define io17_get_input 0 -#else -#define io17_config_output -#define io17_set_output -#define io17_clear_output -#define io17_toggle_output -#define io17_get_output 0 -#define io17_config_input -#define io17_config_pullup -#define io17_get_input 0 #endif #if ASSERT_PIN_IO(STEP1_EN) #define io18_config_output mcu_config_output(STEP1_EN) @@ -558,31 +241,12 @@ extern "C" #define io18_clear_output mcu_clear_output(STEP1_EN) #define io18_toggle_output mcu_toggle_output(STEP1_EN) #define io18_get_output mcu_get_output(STEP1_EN) -#if !defined(STEP1_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io18_config_input mcu_config_input(STEP1_EN) -#else -#define io18_config_input mcu_config_input(STEP1_EN);mcu_config_pullup(STEP1_EN) -#endif -#define io18_config_pullup mcu_config_pullup(STEP1_EN) -#define io18_get_input mcu_get_input(STEP1_EN) #elif ASSERT_PIN_EXTENDED(STEP1_EN) #define io18_config_output -#define io18_set_output ic74hc595_set_pin(STEP1_EN);ic74hc595_shift_io_pins() -#define io18_clear_output ic74hc595_clear_pin(STEP1_EN);ic74hc595_shift_io_pins() -#define io18_toggle_output ic74hc595_toggle_pin(STEP1_EN);ic74hc595_shift_io_pins() +#define io18_set_output ic74hc595_set_pin(STEP1_EN) +#define io18_clear_output ic74hc595_clear_pin(STEP1_EN) +#define io18_toggle_output ic74hc595_toggle_pin(STEP1_EN) #define io18_get_output ic74hc595_get_pin(STEP1_EN) -#define io18_config_input -#define io18_config_pullup -#define io18_get_input 0 -#else -#define io18_config_output -#define io18_set_output -#define io18_clear_output -#define io18_toggle_output -#define io18_get_output 0 -#define io18_config_input -#define io18_config_pullup -#define io18_get_input 0 #endif #if ASSERT_PIN_IO(STEP2_EN) #define io19_config_output mcu_config_output(STEP2_EN) @@ -590,31 +254,12 @@ extern "C" #define io19_clear_output mcu_clear_output(STEP2_EN) #define io19_toggle_output mcu_toggle_output(STEP2_EN) #define io19_get_output mcu_get_output(STEP2_EN) -#if !defined(STEP2_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io19_config_input mcu_config_input(STEP2_EN) -#else -#define io19_config_input mcu_config_input(STEP2_EN);mcu_config_pullup(STEP2_EN) -#endif -#define io19_config_pullup mcu_config_pullup(STEP2_EN) -#define io19_get_input mcu_get_input(STEP2_EN) #elif ASSERT_PIN_EXTENDED(STEP2_EN) #define io19_config_output -#define io19_set_output ic74hc595_set_pin(STEP2_EN);ic74hc595_shift_io_pins() -#define io19_clear_output ic74hc595_clear_pin(STEP2_EN);ic74hc595_shift_io_pins() -#define io19_toggle_output ic74hc595_toggle_pin(STEP2_EN);ic74hc595_shift_io_pins() +#define io19_set_output ic74hc595_set_pin(STEP2_EN) +#define io19_clear_output ic74hc595_clear_pin(STEP2_EN) +#define io19_toggle_output ic74hc595_toggle_pin(STEP2_EN) #define io19_get_output ic74hc595_get_pin(STEP2_EN) -#define io19_config_input -#define io19_config_pullup -#define io19_get_input 0 -#else -#define io19_config_output -#define io19_set_output -#define io19_clear_output -#define io19_toggle_output -#define io19_get_output 0 -#define io19_config_input -#define io19_config_pullup -#define io19_get_input 0 #endif #if ASSERT_PIN_IO(STEP3_EN) #define io20_config_output mcu_config_output(STEP3_EN) @@ -622,31 +267,12 @@ extern "C" #define io20_clear_output mcu_clear_output(STEP3_EN) #define io20_toggle_output mcu_toggle_output(STEP3_EN) #define io20_get_output mcu_get_output(STEP3_EN) -#if !defined(STEP3_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io20_config_input mcu_config_input(STEP3_EN) -#else -#define io20_config_input mcu_config_input(STEP3_EN);mcu_config_pullup(STEP3_EN) -#endif -#define io20_config_pullup mcu_config_pullup(STEP3_EN) -#define io20_get_input mcu_get_input(STEP3_EN) #elif ASSERT_PIN_EXTENDED(STEP3_EN) #define io20_config_output -#define io20_set_output ic74hc595_set_pin(STEP3_EN);ic74hc595_shift_io_pins() -#define io20_clear_output ic74hc595_clear_pin(STEP3_EN);ic74hc595_shift_io_pins() -#define io20_toggle_output ic74hc595_toggle_pin(STEP3_EN);ic74hc595_shift_io_pins() +#define io20_set_output ic74hc595_set_pin(STEP3_EN) +#define io20_clear_output ic74hc595_clear_pin(STEP3_EN) +#define io20_toggle_output ic74hc595_toggle_pin(STEP3_EN) #define io20_get_output ic74hc595_get_pin(STEP3_EN) -#define io20_config_input -#define io20_config_pullup -#define io20_get_input 0 -#else -#define io20_config_output -#define io20_set_output -#define io20_clear_output -#define io20_toggle_output -#define io20_get_output 0 -#define io20_config_input -#define io20_config_pullup -#define io20_get_input 0 #endif #if ASSERT_PIN_IO(STEP4_EN) #define io21_config_output mcu_config_output(STEP4_EN) @@ -654,31 +280,12 @@ extern "C" #define io21_clear_output mcu_clear_output(STEP4_EN) #define io21_toggle_output mcu_toggle_output(STEP4_EN) #define io21_get_output mcu_get_output(STEP4_EN) -#if !defined(STEP4_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io21_config_input mcu_config_input(STEP4_EN) -#else -#define io21_config_input mcu_config_input(STEP4_EN);mcu_config_pullup(STEP4_EN) -#endif -#define io21_config_pullup mcu_config_pullup(STEP4_EN) -#define io21_get_input mcu_get_input(STEP4_EN) #elif ASSERT_PIN_EXTENDED(STEP4_EN) #define io21_config_output -#define io21_set_output ic74hc595_set_pin(STEP4_EN);ic74hc595_shift_io_pins() -#define io21_clear_output ic74hc595_clear_pin(STEP4_EN);ic74hc595_shift_io_pins() -#define io21_toggle_output ic74hc595_toggle_pin(STEP4_EN);ic74hc595_shift_io_pins() +#define io21_set_output ic74hc595_set_pin(STEP4_EN) +#define io21_clear_output ic74hc595_clear_pin(STEP4_EN) +#define io21_toggle_output ic74hc595_toggle_pin(STEP4_EN) #define io21_get_output ic74hc595_get_pin(STEP4_EN) -#define io21_config_input -#define io21_config_pullup -#define io21_get_input 0 -#else -#define io21_config_output -#define io21_set_output -#define io21_clear_output -#define io21_toggle_output -#define io21_get_output 0 -#define io21_config_input -#define io21_config_pullup -#define io21_get_input 0 #endif #if ASSERT_PIN_IO(STEP5_EN) #define io22_config_output mcu_config_output(STEP5_EN) @@ -686,31 +293,12 @@ extern "C" #define io22_clear_output mcu_clear_output(STEP5_EN) #define io22_toggle_output mcu_toggle_output(STEP5_EN) #define io22_get_output mcu_get_output(STEP5_EN) -#if !defined(STEP5_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io22_config_input mcu_config_input(STEP5_EN) -#else -#define io22_config_input mcu_config_input(STEP5_EN);mcu_config_pullup(STEP5_EN) -#endif -#define io22_config_pullup mcu_config_pullup(STEP5_EN) -#define io22_get_input mcu_get_input(STEP5_EN) #elif ASSERT_PIN_EXTENDED(STEP5_EN) #define io22_config_output -#define io22_set_output ic74hc595_set_pin(STEP5_EN);ic74hc595_shift_io_pins() -#define io22_clear_output ic74hc595_clear_pin(STEP5_EN);ic74hc595_shift_io_pins() -#define io22_toggle_output ic74hc595_toggle_pin(STEP5_EN);ic74hc595_shift_io_pins() +#define io22_set_output ic74hc595_set_pin(STEP5_EN) +#define io22_clear_output ic74hc595_clear_pin(STEP5_EN) +#define io22_toggle_output ic74hc595_toggle_pin(STEP5_EN) #define io22_get_output ic74hc595_get_pin(STEP5_EN) -#define io22_config_input -#define io22_config_pullup -#define io22_get_input 0 -#else -#define io22_config_output -#define io22_set_output -#define io22_clear_output -#define io22_toggle_output -#define io22_get_output 0 -#define io22_config_input -#define io22_config_pullup -#define io22_get_input 0 #endif #if ASSERT_PIN_IO(STEP6_EN) #define io23_config_output mcu_config_output(STEP6_EN) @@ -718,31 +306,12 @@ extern "C" #define io23_clear_output mcu_clear_output(STEP6_EN) #define io23_toggle_output mcu_toggle_output(STEP6_EN) #define io23_get_output mcu_get_output(STEP6_EN) -#if !defined(STEP6_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io23_config_input mcu_config_input(STEP6_EN) -#else -#define io23_config_input mcu_config_input(STEP6_EN);mcu_config_pullup(STEP6_EN) -#endif -#define io23_config_pullup mcu_config_pullup(STEP6_EN) -#define io23_get_input mcu_get_input(STEP6_EN) #elif ASSERT_PIN_EXTENDED(STEP6_EN) #define io23_config_output -#define io23_set_output ic74hc595_set_pin(STEP6_EN);ic74hc595_shift_io_pins() -#define io23_clear_output ic74hc595_clear_pin(STEP6_EN);ic74hc595_shift_io_pins() -#define io23_toggle_output ic74hc595_toggle_pin(STEP6_EN);ic74hc595_shift_io_pins() +#define io23_set_output ic74hc595_set_pin(STEP6_EN) +#define io23_clear_output ic74hc595_clear_pin(STEP6_EN) +#define io23_toggle_output ic74hc595_toggle_pin(STEP6_EN) #define io23_get_output ic74hc595_get_pin(STEP6_EN) -#define io23_config_input -#define io23_config_pullup -#define io23_get_input 0 -#else -#define io23_config_output -#define io23_set_output -#define io23_clear_output -#define io23_toggle_output -#define io23_get_output 0 -#define io23_config_input -#define io23_config_pullup -#define io23_get_input 0 #endif #if ASSERT_PIN_IO(STEP7_EN) #define io24_config_output mcu_config_output(STEP7_EN) @@ -750,31 +319,12 @@ extern "C" #define io24_clear_output mcu_clear_output(STEP7_EN) #define io24_toggle_output mcu_toggle_output(STEP7_EN) #define io24_get_output mcu_get_output(STEP7_EN) -#if !defined(STEP7_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io24_config_input mcu_config_input(STEP7_EN) -#else -#define io24_config_input mcu_config_input(STEP7_EN);mcu_config_pullup(STEP7_EN) -#endif -#define io24_config_pullup mcu_config_pullup(STEP7_EN) -#define io24_get_input mcu_get_input(STEP7_EN) #elif ASSERT_PIN_EXTENDED(STEP7_EN) #define io24_config_output -#define io24_set_output ic74hc595_set_pin(STEP7_EN);ic74hc595_shift_io_pins() -#define io24_clear_output ic74hc595_clear_pin(STEP7_EN);ic74hc595_shift_io_pins() -#define io24_toggle_output ic74hc595_toggle_pin(STEP7_EN);ic74hc595_shift_io_pins() +#define io24_set_output ic74hc595_set_pin(STEP7_EN) +#define io24_clear_output ic74hc595_clear_pin(STEP7_EN) +#define io24_toggle_output ic74hc595_toggle_pin(STEP7_EN) #define io24_get_output ic74hc595_get_pin(STEP7_EN) -#define io24_config_input -#define io24_config_pullup -#define io24_get_input 0 -#else -#define io24_config_output -#define io24_set_output -#define io24_clear_output -#define io24_toggle_output -#define io24_get_output 0 -#define io24_config_input -#define io24_config_pullup -#define io24_get_input 0 #endif #if ASSERT_PIN_IO(PWM0) #define io25_config_output mcu_config_output(PWM0) @@ -782,31 +332,25 @@ extern "C" #define io25_clear_output mcu_clear_output(PWM0) #define io25_toggle_output mcu_toggle_output(PWM0) #define io25_get_output mcu_get_output(PWM0) -#if !defined(PWM0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io25_config_input mcu_config_input(PWM0) -#else -#define io25_config_input mcu_config_input(PWM0);mcu_config_pullup(PWM0) -#endif -#define io25_config_pullup mcu_config_pullup(PWM0) -#define io25_get_input mcu_get_input(PWM0) +#define io25_config_pwm(freq) mcu_config_pwm(PWM0, freq) +#define io25_set_pwm(value) mcu_set_pwm(PWM0, value) +#define io25_get_pwm mcu_get_pwm(PWM0) #elif ASSERT_PIN_EXTENDED(PWM0) -#define io25_config_output -#define io25_set_output ic74hc595_set_pin(PWM0);ic74hc595_shift_io_pins() -#define io25_clear_output ic74hc595_clear_pin(PWM0);ic74hc595_shift_io_pins() -#define io25_toggle_output ic74hc595_toggle_pin(PWM0);ic74hc595_shift_io_pins() +#define io25_config_output ({}) +#define io25_set_output ic74hc595_set_pin(PWM0) +#define io25_clear_output ic74hc595_clear_pin(PWM0) +#define io25_toggle_output ic74hc595_toggle_pin(PWM0) #define io25_get_output ic74hc595_get_pin(PWM0) -#define io25_config_input -#define io25_config_pullup -#define io25_get_input 0 -#else -#define io25_config_output -#define io25_set_output -#define io25_clear_output -#define io25_toggle_output -#define io25_get_output 0 -#define io25_config_input -#define io25_config_pullup -#define io25_get_input 0 +#define io25_config_pwm(freq) \ + { \ + io_config_output(PWM0); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io25_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM0 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io25_get_pwm g_io_soft_pwm[PWM0 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM1) #define io26_config_output mcu_config_output(PWM1) @@ -814,31 +358,25 @@ extern "C" #define io26_clear_output mcu_clear_output(PWM1) #define io26_toggle_output mcu_toggle_output(PWM1) #define io26_get_output mcu_get_output(PWM1) -#if !defined(PWM1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io26_config_input mcu_config_input(PWM1) -#else -#define io26_config_input mcu_config_input(PWM1);mcu_config_pullup(PWM1) -#endif -#define io26_config_pullup mcu_config_pullup(PWM1) -#define io26_get_input mcu_get_input(PWM1) +#define io26_config_pwm(freq) mcu_config_pwm(PWM1, freq) +#define io26_set_pwm(value) mcu_set_pwm(PWM1, value) +#define io26_get_pwm mcu_get_pwm(PWM1) #elif ASSERT_PIN_EXTENDED(PWM1) -#define io26_config_output -#define io26_set_output ic74hc595_set_pin(PWM1);ic74hc595_shift_io_pins() -#define io26_clear_output ic74hc595_clear_pin(PWM1);ic74hc595_shift_io_pins() -#define io26_toggle_output ic74hc595_toggle_pin(PWM1);ic74hc595_shift_io_pins() +#define io26_config_output ({}) +#define io26_set_output ic74hc595_set_pin(PWM1) +#define io26_clear_output ic74hc595_clear_pin(PWM1) +#define io26_toggle_output ic74hc595_toggle_pin(PWM1) #define io26_get_output ic74hc595_get_pin(PWM1) -#define io26_config_input -#define io26_config_pullup -#define io26_get_input 0 -#else -#define io26_config_output -#define io26_set_output -#define io26_clear_output -#define io26_toggle_output -#define io26_get_output 0 -#define io26_config_input -#define io26_config_pullup -#define io26_get_input 0 +#define io26_config_pwm(freq) \ + { \ + io_config_output(PWM1); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io26_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM1 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io26_get_pwm g_io_soft_pwm[PWM1 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM2) #define io27_config_output mcu_config_output(PWM2) @@ -846,31 +384,25 @@ extern "C" #define io27_clear_output mcu_clear_output(PWM2) #define io27_toggle_output mcu_toggle_output(PWM2) #define io27_get_output mcu_get_output(PWM2) -#if !defined(PWM2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io27_config_input mcu_config_input(PWM2) -#else -#define io27_config_input mcu_config_input(PWM2);mcu_config_pullup(PWM2) -#endif -#define io27_config_pullup mcu_config_pullup(PWM2) -#define io27_get_input mcu_get_input(PWM2) +#define io27_config_pwm(freq) mcu_config_pwm(PWM2, freq) +#define io27_set_pwm(value) mcu_set_pwm(PWM2, value) +#define io27_get_pwm mcu_get_pwm(PWM2) #elif ASSERT_PIN_EXTENDED(PWM2) -#define io27_config_output -#define io27_set_output ic74hc595_set_pin(PWM2);ic74hc595_shift_io_pins() -#define io27_clear_output ic74hc595_clear_pin(PWM2);ic74hc595_shift_io_pins() -#define io27_toggle_output ic74hc595_toggle_pin(PWM2);ic74hc595_shift_io_pins() +#define io27_config_output ({}) +#define io27_set_output ic74hc595_set_pin(PWM2) +#define io27_clear_output ic74hc595_clear_pin(PWM2) +#define io27_toggle_output ic74hc595_toggle_pin(PWM2) #define io27_get_output ic74hc595_get_pin(PWM2) -#define io27_config_input -#define io27_config_pullup -#define io27_get_input 0 -#else -#define io27_config_output -#define io27_set_output -#define io27_clear_output -#define io27_toggle_output -#define io27_get_output 0 -#define io27_config_input -#define io27_config_pullup -#define io27_get_input 0 +#define io27_config_pwm(freq) \ + { \ + io_config_output(PWM2); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io27_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM2 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io27_get_pwm g_io_soft_pwm[PWM2 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM3) #define io28_config_output mcu_config_output(PWM3) @@ -878,31 +410,25 @@ extern "C" #define io28_clear_output mcu_clear_output(PWM3) #define io28_toggle_output mcu_toggle_output(PWM3) #define io28_get_output mcu_get_output(PWM3) -#if !defined(PWM3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io28_config_input mcu_config_input(PWM3) -#else -#define io28_config_input mcu_config_input(PWM3);mcu_config_pullup(PWM3) -#endif -#define io28_config_pullup mcu_config_pullup(PWM3) -#define io28_get_input mcu_get_input(PWM3) +#define io28_config_pwm(freq) mcu_config_pwm(PWM3, freq) +#define io28_set_pwm(value) mcu_set_pwm(PWM3, value) +#define io28_get_pwm mcu_get_pwm(PWM3) #elif ASSERT_PIN_EXTENDED(PWM3) -#define io28_config_output -#define io28_set_output ic74hc595_set_pin(PWM3);ic74hc595_shift_io_pins() -#define io28_clear_output ic74hc595_clear_pin(PWM3);ic74hc595_shift_io_pins() -#define io28_toggle_output ic74hc595_toggle_pin(PWM3);ic74hc595_shift_io_pins() +#define io28_config_output ({}) +#define io28_set_output ic74hc595_set_pin(PWM3) +#define io28_clear_output ic74hc595_clear_pin(PWM3) +#define io28_toggle_output ic74hc595_toggle_pin(PWM3) #define io28_get_output ic74hc595_get_pin(PWM3) -#define io28_config_input -#define io28_config_pullup -#define io28_get_input 0 -#else -#define io28_config_output -#define io28_set_output -#define io28_clear_output -#define io28_toggle_output -#define io28_get_output 0 -#define io28_config_input -#define io28_config_pullup -#define io28_get_input 0 +#define io28_config_pwm(freq) \ + { \ + io_config_output(PWM3); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io28_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM3 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io28_get_pwm g_io_soft_pwm[PWM3 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM4) #define io29_config_output mcu_config_output(PWM4) @@ -910,31 +436,25 @@ extern "C" #define io29_clear_output mcu_clear_output(PWM4) #define io29_toggle_output mcu_toggle_output(PWM4) #define io29_get_output mcu_get_output(PWM4) -#if !defined(PWM4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io29_config_input mcu_config_input(PWM4) -#else -#define io29_config_input mcu_config_input(PWM4);mcu_config_pullup(PWM4) -#endif -#define io29_config_pullup mcu_config_pullup(PWM4) -#define io29_get_input mcu_get_input(PWM4) +#define io29_config_pwm(freq) mcu_config_pwm(PWM4, freq) +#define io29_set_pwm(value) mcu_set_pwm(PWM4, value) +#define io29_get_pwm mcu_get_pwm(PWM4) #elif ASSERT_PIN_EXTENDED(PWM4) -#define io29_config_output -#define io29_set_output ic74hc595_set_pin(PWM4);ic74hc595_shift_io_pins() -#define io29_clear_output ic74hc595_clear_pin(PWM4);ic74hc595_shift_io_pins() -#define io29_toggle_output ic74hc595_toggle_pin(PWM4);ic74hc595_shift_io_pins() +#define io29_config_output ({}) +#define io29_set_output ic74hc595_set_pin(PWM4) +#define io29_clear_output ic74hc595_clear_pin(PWM4) +#define io29_toggle_output ic74hc595_toggle_pin(PWM4) #define io29_get_output ic74hc595_get_pin(PWM4) -#define io29_config_input -#define io29_config_pullup -#define io29_get_input 0 -#else -#define io29_config_output -#define io29_set_output -#define io29_clear_output -#define io29_toggle_output -#define io29_get_output 0 -#define io29_config_input -#define io29_config_pullup -#define io29_get_input 0 +#define io29_config_pwm(freq) \ + { \ + io_config_output(PWM4); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io29_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM4 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io29_get_pwm g_io_soft_pwm[PWM4 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM5) #define io30_config_output mcu_config_output(PWM5) @@ -942,31 +462,25 @@ extern "C" #define io30_clear_output mcu_clear_output(PWM5) #define io30_toggle_output mcu_toggle_output(PWM5) #define io30_get_output mcu_get_output(PWM5) -#if !defined(PWM5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io30_config_input mcu_config_input(PWM5) -#else -#define io30_config_input mcu_config_input(PWM5);mcu_config_pullup(PWM5) -#endif -#define io30_config_pullup mcu_config_pullup(PWM5) -#define io30_get_input mcu_get_input(PWM5) +#define io30_config_pwm(freq) mcu_config_pwm(PWM5, freq) +#define io30_set_pwm(value) mcu_set_pwm(PWM5, value) +#define io30_get_pwm mcu_get_pwm(PWM5) #elif ASSERT_PIN_EXTENDED(PWM5) -#define io30_config_output -#define io30_set_output ic74hc595_set_pin(PWM5);ic74hc595_shift_io_pins() -#define io30_clear_output ic74hc595_clear_pin(PWM5);ic74hc595_shift_io_pins() -#define io30_toggle_output ic74hc595_toggle_pin(PWM5);ic74hc595_shift_io_pins() +#define io30_config_output ({}) +#define io30_set_output ic74hc595_set_pin(PWM5) +#define io30_clear_output ic74hc595_clear_pin(PWM5) +#define io30_toggle_output ic74hc595_toggle_pin(PWM5) #define io30_get_output ic74hc595_get_pin(PWM5) -#define io30_config_input -#define io30_config_pullup -#define io30_get_input 0 -#else -#define io30_config_output -#define io30_set_output -#define io30_clear_output -#define io30_toggle_output -#define io30_get_output 0 -#define io30_config_input -#define io30_config_pullup -#define io30_get_input 0 +#define io30_config_pwm(freq) \ + { \ + io_config_output(PWM5); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io30_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM5 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io30_get_pwm g_io_soft_pwm[PWM5 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM6) #define io31_config_output mcu_config_output(PWM6) @@ -974,31 +488,25 @@ extern "C" #define io31_clear_output mcu_clear_output(PWM6) #define io31_toggle_output mcu_toggle_output(PWM6) #define io31_get_output mcu_get_output(PWM6) -#if !defined(PWM6_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io31_config_input mcu_config_input(PWM6) -#else -#define io31_config_input mcu_config_input(PWM6);mcu_config_pullup(PWM6) -#endif -#define io31_config_pullup mcu_config_pullup(PWM6) -#define io31_get_input mcu_get_input(PWM6) +#define io31_config_pwm(freq) mcu_config_pwm(PWM6, freq) +#define io31_set_pwm(value) mcu_set_pwm(PWM6, value) +#define io31_get_pwm mcu_get_pwm(PWM6) #elif ASSERT_PIN_EXTENDED(PWM6) -#define io31_config_output -#define io31_set_output ic74hc595_set_pin(PWM6);ic74hc595_shift_io_pins() -#define io31_clear_output ic74hc595_clear_pin(PWM6);ic74hc595_shift_io_pins() -#define io31_toggle_output ic74hc595_toggle_pin(PWM6);ic74hc595_shift_io_pins() +#define io31_config_output ({}) +#define io31_set_output ic74hc595_set_pin(PWM6) +#define io31_clear_output ic74hc595_clear_pin(PWM6) +#define io31_toggle_output ic74hc595_toggle_pin(PWM6) #define io31_get_output ic74hc595_get_pin(PWM6) -#define io31_config_input -#define io31_config_pullup -#define io31_get_input 0 -#else -#define io31_config_output -#define io31_set_output -#define io31_clear_output -#define io31_toggle_output -#define io31_get_output 0 -#define io31_config_input -#define io31_config_pullup -#define io31_get_input 0 +#define io31_config_pwm(freq) \ + { \ + io_config_output(PWM6); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io31_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM6 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io31_get_pwm g_io_soft_pwm[PWM6 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM7) #define io32_config_output mcu_config_output(PWM7) @@ -1006,31 +514,25 @@ extern "C" #define io32_clear_output mcu_clear_output(PWM7) #define io32_toggle_output mcu_toggle_output(PWM7) #define io32_get_output mcu_get_output(PWM7) -#if !defined(PWM7_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io32_config_input mcu_config_input(PWM7) -#else -#define io32_config_input mcu_config_input(PWM7);mcu_config_pullup(PWM7) -#endif -#define io32_config_pullup mcu_config_pullup(PWM7) -#define io32_get_input mcu_get_input(PWM7) +#define io32_config_pwm(freq) mcu_config_pwm(PWM7, freq) +#define io32_set_pwm(value) mcu_set_pwm(PWM7, value) +#define io32_get_pwm mcu_get_pwm(PWM7) #elif ASSERT_PIN_EXTENDED(PWM7) -#define io32_config_output -#define io32_set_output ic74hc595_set_pin(PWM7);ic74hc595_shift_io_pins() -#define io32_clear_output ic74hc595_clear_pin(PWM7);ic74hc595_shift_io_pins() -#define io32_toggle_output ic74hc595_toggle_pin(PWM7);ic74hc595_shift_io_pins() +#define io32_config_output ({}) +#define io32_set_output ic74hc595_set_pin(PWM7) +#define io32_clear_output ic74hc595_clear_pin(PWM7) +#define io32_toggle_output ic74hc595_toggle_pin(PWM7) #define io32_get_output ic74hc595_get_pin(PWM7) -#define io32_config_input -#define io32_config_pullup -#define io32_get_input 0 -#else -#define io32_config_output -#define io32_set_output -#define io32_clear_output -#define io32_toggle_output -#define io32_get_output 0 -#define io32_config_input -#define io32_config_pullup -#define io32_get_input 0 +#define io32_config_pwm(freq) \ + { \ + io_config_output(PWM7); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io32_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM7 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io32_get_pwm g_io_soft_pwm[PWM7 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM8) #define io33_config_output mcu_config_output(PWM8) @@ -1038,31 +540,25 @@ extern "C" #define io33_clear_output mcu_clear_output(PWM8) #define io33_toggle_output mcu_toggle_output(PWM8) #define io33_get_output mcu_get_output(PWM8) -#if !defined(PWM8_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io33_config_input mcu_config_input(PWM8) -#else -#define io33_config_input mcu_config_input(PWM8);mcu_config_pullup(PWM8) -#endif -#define io33_config_pullup mcu_config_pullup(PWM8) -#define io33_get_input mcu_get_input(PWM8) +#define io33_config_pwm(freq) mcu_config_pwm(PWM8, freq) +#define io33_set_pwm(value) mcu_set_pwm(PWM8, value) +#define io33_get_pwm mcu_get_pwm(PWM8) #elif ASSERT_PIN_EXTENDED(PWM8) -#define io33_config_output -#define io33_set_output ic74hc595_set_pin(PWM8);ic74hc595_shift_io_pins() -#define io33_clear_output ic74hc595_clear_pin(PWM8);ic74hc595_shift_io_pins() -#define io33_toggle_output ic74hc595_toggle_pin(PWM8);ic74hc595_shift_io_pins() +#define io33_config_output ({}) +#define io33_set_output ic74hc595_set_pin(PWM8) +#define io33_clear_output ic74hc595_clear_pin(PWM8) +#define io33_toggle_output ic74hc595_toggle_pin(PWM8) #define io33_get_output ic74hc595_get_pin(PWM8) -#define io33_config_input -#define io33_config_pullup -#define io33_get_input 0 -#else -#define io33_config_output -#define io33_set_output -#define io33_clear_output -#define io33_toggle_output -#define io33_get_output 0 -#define io33_config_input -#define io33_config_pullup -#define io33_get_input 0 +#define io33_config_pwm(freq) \ + { \ + io_config_output(PWM8); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io33_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM8 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io33_get_pwm g_io_soft_pwm[PWM8 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM9) #define io34_config_output mcu_config_output(PWM9) @@ -1070,31 +566,25 @@ extern "C" #define io34_clear_output mcu_clear_output(PWM9) #define io34_toggle_output mcu_toggle_output(PWM9) #define io34_get_output mcu_get_output(PWM9) -#if !defined(PWM9_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io34_config_input mcu_config_input(PWM9) -#else -#define io34_config_input mcu_config_input(PWM9);mcu_config_pullup(PWM9) -#endif -#define io34_config_pullup mcu_config_pullup(PWM9) -#define io34_get_input mcu_get_input(PWM9) +#define io34_config_pwm(freq) mcu_config_pwm(PWM9, freq) +#define io34_set_pwm(value) mcu_set_pwm(PWM9, value) +#define io34_get_pwm mcu_get_pwm(PWM9) #elif ASSERT_PIN_EXTENDED(PWM9) -#define io34_config_output -#define io34_set_output ic74hc595_set_pin(PWM9);ic74hc595_shift_io_pins() -#define io34_clear_output ic74hc595_clear_pin(PWM9);ic74hc595_shift_io_pins() -#define io34_toggle_output ic74hc595_toggle_pin(PWM9);ic74hc595_shift_io_pins() +#define io34_config_output ({}) +#define io34_set_output ic74hc595_set_pin(PWM9) +#define io34_clear_output ic74hc595_clear_pin(PWM9) +#define io34_toggle_output ic74hc595_toggle_pin(PWM9) #define io34_get_output ic74hc595_get_pin(PWM9) -#define io34_config_input -#define io34_config_pullup -#define io34_get_input 0 -#else -#define io34_config_output -#define io34_set_output -#define io34_clear_output -#define io34_toggle_output -#define io34_get_output 0 -#define io34_config_input -#define io34_config_pullup -#define io34_get_input 0 +#define io34_config_pwm(freq) \ + { \ + io_config_output(PWM9); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io34_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM9 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io34_get_pwm g_io_soft_pwm[PWM9 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM10) #define io35_config_output mcu_config_output(PWM10) @@ -1102,31 +592,25 @@ extern "C" #define io35_clear_output mcu_clear_output(PWM10) #define io35_toggle_output mcu_toggle_output(PWM10) #define io35_get_output mcu_get_output(PWM10) -#if !defined(PWM10_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io35_config_input mcu_config_input(PWM10) -#else -#define io35_config_input mcu_config_input(PWM10);mcu_config_pullup(PWM10) -#endif -#define io35_config_pullup mcu_config_pullup(PWM10) -#define io35_get_input mcu_get_input(PWM10) -#elif ASSERT_PIN_EXTENDED(PWM10) -#define io35_config_output -#define io35_set_output ic74hc595_set_pin(PWM10);ic74hc595_shift_io_pins() -#define io35_clear_output ic74hc595_clear_pin(PWM10);ic74hc595_shift_io_pins() -#define io35_toggle_output ic74hc595_toggle_pin(PWM10);ic74hc595_shift_io_pins() -#define io35_get_output ic74hc595_get_pin(PWM10) -#define io35_config_input -#define io35_config_pullup -#define io35_get_input 0 -#else -#define io35_config_output -#define io35_set_output -#define io35_clear_output -#define io35_toggle_output -#define io35_get_output 0 -#define io35_config_input -#define io35_config_pullup -#define io35_get_input 0 +#define io35_config_pwm(freq) mcu_config_pwm(PWM10, freq) +#define io35_set_pwm(value) mcu_set_pwm(PWM10, value) +#define io35_get_pwm mcu_get_pwm(PWM10) +#elif ASSERT_PIN_EXTENDED(PWM10) +#define io35_config_output ({}) +#define io35_set_output ic74hc595_set_pin(PWM10) +#define io35_clear_output ic74hc595_clear_pin(PWM10) +#define io35_toggle_output ic74hc595_toggle_pin(PWM10) +#define io35_get_output ic74hc595_get_pin(PWM10) +#define io35_config_pwm(freq) \ + { \ + io_config_output(PWM10); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io35_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM10 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io35_get_pwm g_io_soft_pwm[PWM10 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM11) #define io36_config_output mcu_config_output(PWM11) @@ -1134,31 +618,25 @@ extern "C" #define io36_clear_output mcu_clear_output(PWM11) #define io36_toggle_output mcu_toggle_output(PWM11) #define io36_get_output mcu_get_output(PWM11) -#if !defined(PWM11_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io36_config_input mcu_config_input(PWM11) -#else -#define io36_config_input mcu_config_input(PWM11);mcu_config_pullup(PWM11) -#endif -#define io36_config_pullup mcu_config_pullup(PWM11) -#define io36_get_input mcu_get_input(PWM11) +#define io36_config_pwm(freq) mcu_config_pwm(PWM11, freq) +#define io36_set_pwm(value) mcu_set_pwm(PWM11, value) +#define io36_get_pwm mcu_get_pwm(PWM11) #elif ASSERT_PIN_EXTENDED(PWM11) -#define io36_config_output -#define io36_set_output ic74hc595_set_pin(PWM11);ic74hc595_shift_io_pins() -#define io36_clear_output ic74hc595_clear_pin(PWM11);ic74hc595_shift_io_pins() -#define io36_toggle_output ic74hc595_toggle_pin(PWM11);ic74hc595_shift_io_pins() +#define io36_config_output ({}) +#define io36_set_output ic74hc595_set_pin(PWM11) +#define io36_clear_output ic74hc595_clear_pin(PWM11) +#define io36_toggle_output ic74hc595_toggle_pin(PWM11) #define io36_get_output ic74hc595_get_pin(PWM11) -#define io36_config_input -#define io36_config_pullup -#define io36_get_input 0 -#else -#define io36_config_output -#define io36_set_output -#define io36_clear_output -#define io36_toggle_output -#define io36_get_output 0 -#define io36_config_input -#define io36_config_pullup -#define io36_get_input 0 +#define io36_config_pwm(freq) \ + { \ + io_config_output(PWM11); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io36_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM11 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io36_get_pwm g_io_soft_pwm[PWM11 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM12) #define io37_config_output mcu_config_output(PWM12) @@ -1166,31 +644,25 @@ extern "C" #define io37_clear_output mcu_clear_output(PWM12) #define io37_toggle_output mcu_toggle_output(PWM12) #define io37_get_output mcu_get_output(PWM12) -#if !defined(PWM12_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io37_config_input mcu_config_input(PWM12) -#else -#define io37_config_input mcu_config_input(PWM12);mcu_config_pullup(PWM12) -#endif -#define io37_config_pullup mcu_config_pullup(PWM12) -#define io37_get_input mcu_get_input(PWM12) +#define io37_config_pwm(freq) mcu_config_pwm(PWM12, freq) +#define io37_set_pwm(value) mcu_set_pwm(PWM12, value) +#define io37_get_pwm mcu_get_pwm(PWM12) #elif ASSERT_PIN_EXTENDED(PWM12) -#define io37_config_output -#define io37_set_output ic74hc595_set_pin(PWM12);ic74hc595_shift_io_pins() -#define io37_clear_output ic74hc595_clear_pin(PWM12);ic74hc595_shift_io_pins() -#define io37_toggle_output ic74hc595_toggle_pin(PWM12);ic74hc595_shift_io_pins() +#define io37_config_output ({}) +#define io37_set_output ic74hc595_set_pin(PWM12) +#define io37_clear_output ic74hc595_clear_pin(PWM12) +#define io37_toggle_output ic74hc595_toggle_pin(PWM12) #define io37_get_output ic74hc595_get_pin(PWM12) -#define io37_config_input -#define io37_config_pullup -#define io37_get_input 0 -#else -#define io37_config_output -#define io37_set_output -#define io37_clear_output -#define io37_toggle_output -#define io37_get_output 0 -#define io37_config_input -#define io37_config_pullup -#define io37_get_input 0 +#define io37_config_pwm(freq) \ + { \ + io_config_output(PWM12); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io37_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM12 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io37_get_pwm g_io_soft_pwm[PWM12 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM13) #define io38_config_output mcu_config_output(PWM13) @@ -1198,31 +670,25 @@ extern "C" #define io38_clear_output mcu_clear_output(PWM13) #define io38_toggle_output mcu_toggle_output(PWM13) #define io38_get_output mcu_get_output(PWM13) -#if !defined(PWM13_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io38_config_input mcu_config_input(PWM13) -#else -#define io38_config_input mcu_config_input(PWM13);mcu_config_pullup(PWM13) -#endif -#define io38_config_pullup mcu_config_pullup(PWM13) -#define io38_get_input mcu_get_input(PWM13) +#define io38_config_pwm(freq) mcu_config_pwm(PWM13, freq) +#define io38_set_pwm(value) mcu_set_pwm(PWM13, value) +#define io38_get_pwm mcu_get_pwm(PWM13) #elif ASSERT_PIN_EXTENDED(PWM13) -#define io38_config_output -#define io38_set_output ic74hc595_set_pin(PWM13);ic74hc595_shift_io_pins() -#define io38_clear_output ic74hc595_clear_pin(PWM13);ic74hc595_shift_io_pins() -#define io38_toggle_output ic74hc595_toggle_pin(PWM13);ic74hc595_shift_io_pins() +#define io38_config_output ({}) +#define io38_set_output ic74hc595_set_pin(PWM13) +#define io38_clear_output ic74hc595_clear_pin(PWM13) +#define io38_toggle_output ic74hc595_toggle_pin(PWM13) #define io38_get_output ic74hc595_get_pin(PWM13) -#define io38_config_input -#define io38_config_pullup -#define io38_get_input 0 -#else -#define io38_config_output -#define io38_set_output -#define io38_clear_output -#define io38_toggle_output -#define io38_get_output 0 -#define io38_config_input -#define io38_config_pullup -#define io38_get_input 0 +#define io38_config_pwm(freq) \ + { \ + io_config_output(PWM13); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io38_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM13 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io38_get_pwm g_io_soft_pwm[PWM13 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM14) #define io39_config_output mcu_config_output(PWM14) @@ -1230,31 +696,25 @@ extern "C" #define io39_clear_output mcu_clear_output(PWM14) #define io39_toggle_output mcu_toggle_output(PWM14) #define io39_get_output mcu_get_output(PWM14) -#if !defined(PWM14_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io39_config_input mcu_config_input(PWM14) -#else -#define io39_config_input mcu_config_input(PWM14);mcu_config_pullup(PWM14) -#endif -#define io39_config_pullup mcu_config_pullup(PWM14) -#define io39_get_input mcu_get_input(PWM14) +#define io39_config_pwm(freq) mcu_config_pwm(PWM14, freq) +#define io39_set_pwm(value) mcu_set_pwm(PWM14, value) +#define io39_get_pwm mcu_get_pwm(PWM14) #elif ASSERT_PIN_EXTENDED(PWM14) -#define io39_config_output -#define io39_set_output ic74hc595_set_pin(PWM14);ic74hc595_shift_io_pins() -#define io39_clear_output ic74hc595_clear_pin(PWM14);ic74hc595_shift_io_pins() -#define io39_toggle_output ic74hc595_toggle_pin(PWM14);ic74hc595_shift_io_pins() +#define io39_config_output ({}) +#define io39_set_output ic74hc595_set_pin(PWM14) +#define io39_clear_output ic74hc595_clear_pin(PWM14) +#define io39_toggle_output ic74hc595_toggle_pin(PWM14) #define io39_get_output ic74hc595_get_pin(PWM14) -#define io39_config_input -#define io39_config_pullup -#define io39_get_input 0 -#else -#define io39_config_output -#define io39_set_output -#define io39_clear_output -#define io39_toggle_output -#define io39_get_output 0 -#define io39_config_input -#define io39_config_pullup -#define io39_get_input 0 +#define io39_config_pwm(freq) \ + { \ + io_config_output(PWM14); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io39_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM14 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io39_get_pwm g_io_soft_pwm[PWM14 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(PWM15) #define io40_config_output mcu_config_output(PWM15) @@ -1262,31 +722,25 @@ extern "C" #define io40_clear_output mcu_clear_output(PWM15) #define io40_toggle_output mcu_toggle_output(PWM15) #define io40_get_output mcu_get_output(PWM15) -#if !defined(PWM15_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io40_config_input mcu_config_input(PWM15) -#else -#define io40_config_input mcu_config_input(PWM15);mcu_config_pullup(PWM15) -#endif -#define io40_config_pullup mcu_config_pullup(PWM15) -#define io40_get_input mcu_get_input(PWM15) +#define io40_config_pwm(freq) mcu_config_pwm(PWM15, freq) +#define io40_set_pwm(value) mcu_set_pwm(PWM15, value) +#define io40_get_pwm mcu_get_pwm(PWM15) #elif ASSERT_PIN_EXTENDED(PWM15) -#define io40_config_output -#define io40_set_output ic74hc595_set_pin(PWM15);ic74hc595_shift_io_pins() -#define io40_clear_output ic74hc595_clear_pin(PWM15);ic74hc595_shift_io_pins() -#define io40_toggle_output ic74hc595_toggle_pin(PWM15);ic74hc595_shift_io_pins() +#define io40_config_output ({}) +#define io40_set_output ic74hc595_set_pin(PWM15) +#define io40_clear_output ic74hc595_clear_pin(PWM15) +#define io40_toggle_output ic74hc595_toggle_pin(PWM15) #define io40_get_output ic74hc595_get_pin(PWM15) -#define io40_config_input -#define io40_config_pullup -#define io40_get_input 0 -#else -#define io40_config_output -#define io40_set_output -#define io40_clear_output -#define io40_toggle_output -#define io40_get_output 0 -#define io40_config_input -#define io40_config_pullup -#define io40_get_input 0 +#define io40_config_pwm(freq) \ + { \ + io_config_output(PWM15); \ + g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ + } +#define io40_set_pwm(value) \ + { \ + g_io_soft_pwm[PWM15 - PWM_PINS_OFFSET] = (0xFF & value); \ + } +#define io40_get_pwm g_io_soft_pwm[PWM15 - PWM_PINS_OFFSET] #endif #if ASSERT_PIN_IO(SERVO0) #define io41_config_output mcu_config_output(SERVO0) @@ -1294,31 +748,16 @@ extern "C" #define io41_clear_output mcu_clear_output(SERVO0) #define io41_toggle_output mcu_toggle_output(SERVO0) #define io41_get_output mcu_get_output(SERVO0) -#if !defined(SERVO0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io41_config_input mcu_config_input(SERVO0) -#else -#define io41_config_input mcu_config_input(SERVO0);mcu_config_pullup(SERVO0) -#endif -#define io41_config_pullup mcu_config_pullup(SERVO0) -#define io41_get_input mcu_get_input(SERVO0) +#define io41_set_pwm(value) mcu_set_servo(SERVO0, value) +#define io41_get_pwm mcu_get_servo(SERVO0) #elif ASSERT_PIN_EXTENDED(SERVO0) #define io41_config_output -#define io41_set_output ic74hc595_set_pin(SERVO0);ic74hc595_shift_io_pins() -#define io41_clear_output ic74hc595_clear_pin(SERVO0);ic74hc595_shift_io_pins() -#define io41_toggle_output ic74hc595_toggle_pin(SERVO0);ic74hc595_shift_io_pins() +#define io41_set_output ic74hc595_set_pin(SERVO0) +#define io41_clear_output ic74hc595_clear_pin(SERVO0) +#define io41_toggle_output ic74hc595_toggle_pin(SERVO0) #define io41_get_output ic74hc595_get_pin(SERVO0) -#define io41_config_input -#define io41_config_pullup -#define io41_get_input 0 -#else -#define io41_config_output -#define io41_set_output -#define io41_clear_output -#define io41_toggle_output -#define io41_get_output 0 -#define io41_config_input -#define io41_config_pullup -#define io41_get_input 0 +#define io41_set_pwm(value) mcu_set_servo(SERVO0, value) +#define io41_get_pwm mcu_get_servo(SERVO0) #endif #if ASSERT_PIN_IO(SERVO1) #define io42_config_output mcu_config_output(SERVO1) @@ -1326,31 +765,16 @@ extern "C" #define io42_clear_output mcu_clear_output(SERVO1) #define io42_toggle_output mcu_toggle_output(SERVO1) #define io42_get_output mcu_get_output(SERVO1) -#if !defined(SERVO1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io42_config_input mcu_config_input(SERVO1) -#else -#define io42_config_input mcu_config_input(SERVO1);mcu_config_pullup(SERVO1) -#endif -#define io42_config_pullup mcu_config_pullup(SERVO1) -#define io42_get_input mcu_get_input(SERVO1) +#define io42_set_pwm(value) mcu_set_servo(SERVO1, value) +#define io42_get_pwm mcu_get_servo(SERVO1) #elif ASSERT_PIN_EXTENDED(SERVO1) #define io42_config_output -#define io42_set_output ic74hc595_set_pin(SERVO1);ic74hc595_shift_io_pins() -#define io42_clear_output ic74hc595_clear_pin(SERVO1);ic74hc595_shift_io_pins() -#define io42_toggle_output ic74hc595_toggle_pin(SERVO1);ic74hc595_shift_io_pins() +#define io42_set_output ic74hc595_set_pin(SERVO1) +#define io42_clear_output ic74hc595_clear_pin(SERVO1) +#define io42_toggle_output ic74hc595_toggle_pin(SERVO1) #define io42_get_output ic74hc595_get_pin(SERVO1) -#define io42_config_input -#define io42_config_pullup -#define io42_get_input 0 -#else -#define io42_config_output -#define io42_set_output -#define io42_clear_output -#define io42_toggle_output -#define io42_get_output 0 -#define io42_config_input -#define io42_config_pullup -#define io42_get_input 0 +#define io42_set_pwm(value) mcu_set_servo(SERVO1, value) +#define io42_get_pwm mcu_get_servo(SERVO1) #endif #if ASSERT_PIN_IO(SERVO2) #define io43_config_output mcu_config_output(SERVO2) @@ -1358,31 +782,16 @@ extern "C" #define io43_clear_output mcu_clear_output(SERVO2) #define io43_toggle_output mcu_toggle_output(SERVO2) #define io43_get_output mcu_get_output(SERVO2) -#if !defined(SERVO2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io43_config_input mcu_config_input(SERVO2) -#else -#define io43_config_input mcu_config_input(SERVO2);mcu_config_pullup(SERVO2) -#endif -#define io43_config_pullup mcu_config_pullup(SERVO2) -#define io43_get_input mcu_get_input(SERVO2) +#define io43_set_pwm(value) mcu_set_servo(SERVO2, value) +#define io43_get_pwm mcu_get_servo(SERVO2) #elif ASSERT_PIN_EXTENDED(SERVO2) #define io43_config_output -#define io43_set_output ic74hc595_set_pin(SERVO2);ic74hc595_shift_io_pins() -#define io43_clear_output ic74hc595_clear_pin(SERVO2);ic74hc595_shift_io_pins() -#define io43_toggle_output ic74hc595_toggle_pin(SERVO2);ic74hc595_shift_io_pins() +#define io43_set_output ic74hc595_set_pin(SERVO2) +#define io43_clear_output ic74hc595_clear_pin(SERVO2) +#define io43_toggle_output ic74hc595_toggle_pin(SERVO2) #define io43_get_output ic74hc595_get_pin(SERVO2) -#define io43_config_input -#define io43_config_pullup -#define io43_get_input 0 -#else -#define io43_config_output -#define io43_set_output -#define io43_clear_output -#define io43_toggle_output -#define io43_get_output 0 -#define io43_config_input -#define io43_config_pullup -#define io43_get_input 0 +#define io43_set_pwm(value) mcu_set_servo(SERVO2, value) +#define io43_get_pwm mcu_get_servo(SERVO2) #endif #if ASSERT_PIN_IO(SERVO3) #define io44_config_output mcu_config_output(SERVO3) @@ -1390,31 +799,16 @@ extern "C" #define io44_clear_output mcu_clear_output(SERVO3) #define io44_toggle_output mcu_toggle_output(SERVO3) #define io44_get_output mcu_get_output(SERVO3) -#if !defined(SERVO3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io44_config_input mcu_config_input(SERVO3) -#else -#define io44_config_input mcu_config_input(SERVO3);mcu_config_pullup(SERVO3) -#endif -#define io44_config_pullup mcu_config_pullup(SERVO3) -#define io44_get_input mcu_get_input(SERVO3) +#define io44_set_pwm(value) mcu_set_servo(SERVO3, value) +#define io44_get_pwm mcu_get_servo(SERVO3) #elif ASSERT_PIN_EXTENDED(SERVO3) #define io44_config_output -#define io44_set_output ic74hc595_set_pin(SERVO3);ic74hc595_shift_io_pins() -#define io44_clear_output ic74hc595_clear_pin(SERVO3);ic74hc595_shift_io_pins() -#define io44_toggle_output ic74hc595_toggle_pin(SERVO3);ic74hc595_shift_io_pins() +#define io44_set_output ic74hc595_set_pin(SERVO3) +#define io44_clear_output ic74hc595_clear_pin(SERVO3) +#define io44_toggle_output ic74hc595_toggle_pin(SERVO3) #define io44_get_output ic74hc595_get_pin(SERVO3) -#define io44_config_input -#define io44_config_pullup -#define io44_get_input 0 -#else -#define io44_config_output -#define io44_set_output -#define io44_clear_output -#define io44_toggle_output -#define io44_get_output 0 -#define io44_config_input -#define io44_config_pullup -#define io44_get_input 0 +#define io44_set_pwm(value) mcu_set_servo(SERVO3, value) +#define io44_get_pwm mcu_get_servo(SERVO3) #endif #if ASSERT_PIN_IO(SERVO4) #define io45_config_output mcu_config_output(SERVO4) @@ -1422,31 +816,16 @@ extern "C" #define io45_clear_output mcu_clear_output(SERVO4) #define io45_toggle_output mcu_toggle_output(SERVO4) #define io45_get_output mcu_get_output(SERVO4) -#if !defined(SERVO4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io45_config_input mcu_config_input(SERVO4) -#else -#define io45_config_input mcu_config_input(SERVO4);mcu_config_pullup(SERVO4) -#endif -#define io45_config_pullup mcu_config_pullup(SERVO4) -#define io45_get_input mcu_get_input(SERVO4) +#define io45_set_pwm(value) mcu_set_servo(SERVO4, value) +#define io45_get_pwm mcu_get_servo(SERVO4) #elif ASSERT_PIN_EXTENDED(SERVO4) #define io45_config_output -#define io45_set_output ic74hc595_set_pin(SERVO4);ic74hc595_shift_io_pins() -#define io45_clear_output ic74hc595_clear_pin(SERVO4);ic74hc595_shift_io_pins() -#define io45_toggle_output ic74hc595_toggle_pin(SERVO4);ic74hc595_shift_io_pins() +#define io45_set_output ic74hc595_set_pin(SERVO4) +#define io45_clear_output ic74hc595_clear_pin(SERVO4) +#define io45_toggle_output ic74hc595_toggle_pin(SERVO4) #define io45_get_output ic74hc595_get_pin(SERVO4) -#define io45_config_input -#define io45_config_pullup -#define io45_get_input 0 -#else -#define io45_config_output -#define io45_set_output -#define io45_clear_output -#define io45_toggle_output -#define io45_get_output 0 -#define io45_config_input -#define io45_config_pullup -#define io45_get_input 0 +#define io45_set_pwm(value) mcu_set_servo(SERVO4, value) +#define io45_get_pwm mcu_get_servo(SERVO4) #endif #if ASSERT_PIN_IO(SERVO5) #define io46_config_output mcu_config_output(SERVO5) @@ -1454,31 +833,16 @@ extern "C" #define io46_clear_output mcu_clear_output(SERVO5) #define io46_toggle_output mcu_toggle_output(SERVO5) #define io46_get_output mcu_get_output(SERVO5) -#if !defined(SERVO5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io46_config_input mcu_config_input(SERVO5) -#else -#define io46_config_input mcu_config_input(SERVO5);mcu_config_pullup(SERVO5) -#endif -#define io46_config_pullup mcu_config_pullup(SERVO5) -#define io46_get_input mcu_get_input(SERVO5) +#define io46_set_pwm(value) mcu_set_servo(SERVO5, value) +#define io46_get_pwm mcu_get_servo(SERVO5) #elif ASSERT_PIN_EXTENDED(SERVO5) #define io46_config_output -#define io46_set_output ic74hc595_set_pin(SERVO5);ic74hc595_shift_io_pins() -#define io46_clear_output ic74hc595_clear_pin(SERVO5);ic74hc595_shift_io_pins() -#define io46_toggle_output ic74hc595_toggle_pin(SERVO5);ic74hc595_shift_io_pins() +#define io46_set_output ic74hc595_set_pin(SERVO5) +#define io46_clear_output ic74hc595_clear_pin(SERVO5) +#define io46_toggle_output ic74hc595_toggle_pin(SERVO5) #define io46_get_output ic74hc595_get_pin(SERVO5) -#define io46_config_input -#define io46_config_pullup -#define io46_get_input 0 -#else -#define io46_config_output -#define io46_set_output -#define io46_clear_output -#define io46_toggle_output -#define io46_get_output 0 -#define io46_config_input -#define io46_config_pullup -#define io46_get_input 0 +#define io46_set_pwm(value) mcu_set_servo(SERVO5, value) +#define io46_get_pwm mcu_get_servo(SERVO5) #endif #if ASSERT_PIN_IO(DOUT0) #define io47_config_output mcu_config_output(DOUT0) @@ -1486,31 +850,15 @@ extern "C" #define io47_clear_output mcu_clear_output(DOUT0) #define io47_toggle_output mcu_toggle_output(DOUT0) #define io47_get_output mcu_get_output(DOUT0) -#if !defined(DOUT0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io47_config_input mcu_config_input(DOUT0) -#else -#define io47_config_input mcu_config_input(DOUT0);mcu_config_pullup(DOUT0) -#endif #define io47_config_pullup mcu_config_pullup(DOUT0) #define io47_get_input mcu_get_input(DOUT0) #elif ASSERT_PIN_EXTENDED(DOUT0) #define io47_config_output -#define io47_set_output ic74hc595_set_pin(DOUT0);ic74hc595_shift_io_pins() -#define io47_clear_output ic74hc595_clear_pin(DOUT0);ic74hc595_shift_io_pins() -#define io47_toggle_output ic74hc595_toggle_pin(DOUT0);ic74hc595_shift_io_pins() +#define io47_set_output ic74hc595_set_pin(DOUT0) +#define io47_clear_output ic74hc595_clear_pin(DOUT0) +#define io47_toggle_output ic74hc595_toggle_pin(DOUT0) #define io47_get_output ic74hc595_get_pin(DOUT0) -#define io47_config_input -#define io47_config_pullup -#define io47_get_input 0 -#else -#define io47_config_output -#define io47_set_output -#define io47_clear_output -#define io47_toggle_output -#define io47_get_output 0 -#define io47_config_input -#define io47_config_pullup -#define io47_get_input 0 #endif #if ASSERT_PIN_IO(DOUT1) #define io48_config_output mcu_config_output(DOUT1) @@ -1518,31 +866,15 @@ extern "C" #define io48_clear_output mcu_clear_output(DOUT1) #define io48_toggle_output mcu_toggle_output(DOUT1) #define io48_get_output mcu_get_output(DOUT1) -#if !defined(DOUT1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io48_config_input mcu_config_input(DOUT1) -#else -#define io48_config_input mcu_config_input(DOUT1);mcu_config_pullup(DOUT1) -#endif #define io48_config_pullup mcu_config_pullup(DOUT1) #define io48_get_input mcu_get_input(DOUT1) #elif ASSERT_PIN_EXTENDED(DOUT1) #define io48_config_output -#define io48_set_output ic74hc595_set_pin(DOUT1);ic74hc595_shift_io_pins() -#define io48_clear_output ic74hc595_clear_pin(DOUT1);ic74hc595_shift_io_pins() -#define io48_toggle_output ic74hc595_toggle_pin(DOUT1);ic74hc595_shift_io_pins() +#define io48_set_output ic74hc595_set_pin(DOUT1) +#define io48_clear_output ic74hc595_clear_pin(DOUT1) +#define io48_toggle_output ic74hc595_toggle_pin(DOUT1) #define io48_get_output ic74hc595_get_pin(DOUT1) -#define io48_config_input -#define io48_config_pullup -#define io48_get_input 0 -#else -#define io48_config_output -#define io48_set_output -#define io48_clear_output -#define io48_toggle_output -#define io48_get_output 0 -#define io48_config_input -#define io48_config_pullup -#define io48_get_input 0 #endif #if ASSERT_PIN_IO(DOUT2) #define io49_config_output mcu_config_output(DOUT2) @@ -1550,31 +882,15 @@ extern "C" #define io49_clear_output mcu_clear_output(DOUT2) #define io49_toggle_output mcu_toggle_output(DOUT2) #define io49_get_output mcu_get_output(DOUT2) -#if !defined(DOUT2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io49_config_input mcu_config_input(DOUT2) -#else -#define io49_config_input mcu_config_input(DOUT2);mcu_config_pullup(DOUT2) -#endif #define io49_config_pullup mcu_config_pullup(DOUT2) #define io49_get_input mcu_get_input(DOUT2) #elif ASSERT_PIN_EXTENDED(DOUT2) #define io49_config_output -#define io49_set_output ic74hc595_set_pin(DOUT2);ic74hc595_shift_io_pins() -#define io49_clear_output ic74hc595_clear_pin(DOUT2);ic74hc595_shift_io_pins() -#define io49_toggle_output ic74hc595_toggle_pin(DOUT2);ic74hc595_shift_io_pins() +#define io49_set_output ic74hc595_set_pin(DOUT2) +#define io49_clear_output ic74hc595_clear_pin(DOUT2) +#define io49_toggle_output ic74hc595_toggle_pin(DOUT2) #define io49_get_output ic74hc595_get_pin(DOUT2) -#define io49_config_input -#define io49_config_pullup -#define io49_get_input 0 -#else -#define io49_config_output -#define io49_set_output -#define io49_clear_output -#define io49_toggle_output -#define io49_get_output 0 -#define io49_config_input -#define io49_config_pullup -#define io49_get_input 0 #endif #if ASSERT_PIN_IO(DOUT3) #define io50_config_output mcu_config_output(DOUT3) @@ -1582,31 +898,15 @@ extern "C" #define io50_clear_output mcu_clear_output(DOUT3) #define io50_toggle_output mcu_toggle_output(DOUT3) #define io50_get_output mcu_get_output(DOUT3) -#if !defined(DOUT3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io50_config_input mcu_config_input(DOUT3) -#else -#define io50_config_input mcu_config_input(DOUT3);mcu_config_pullup(DOUT3) -#endif #define io50_config_pullup mcu_config_pullup(DOUT3) #define io50_get_input mcu_get_input(DOUT3) #elif ASSERT_PIN_EXTENDED(DOUT3) #define io50_config_output -#define io50_set_output ic74hc595_set_pin(DOUT3);ic74hc595_shift_io_pins() -#define io50_clear_output ic74hc595_clear_pin(DOUT3);ic74hc595_shift_io_pins() -#define io50_toggle_output ic74hc595_toggle_pin(DOUT3);ic74hc595_shift_io_pins() +#define io50_set_output ic74hc595_set_pin(DOUT3) +#define io50_clear_output ic74hc595_clear_pin(DOUT3) +#define io50_toggle_output ic74hc595_toggle_pin(DOUT3) #define io50_get_output ic74hc595_get_pin(DOUT3) -#define io50_config_input -#define io50_config_pullup -#define io50_get_input 0 -#else -#define io50_config_output -#define io50_set_output -#define io50_clear_output -#define io50_toggle_output -#define io50_get_output 0 -#define io50_config_input -#define io50_config_pullup -#define io50_get_input 0 #endif #if ASSERT_PIN_IO(DOUT4) #define io51_config_output mcu_config_output(DOUT4) @@ -1614,31 +914,15 @@ extern "C" #define io51_clear_output mcu_clear_output(DOUT4) #define io51_toggle_output mcu_toggle_output(DOUT4) #define io51_get_output mcu_get_output(DOUT4) -#if !defined(DOUT4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io51_config_input mcu_config_input(DOUT4) -#else -#define io51_config_input mcu_config_input(DOUT4);mcu_config_pullup(DOUT4) -#endif #define io51_config_pullup mcu_config_pullup(DOUT4) #define io51_get_input mcu_get_input(DOUT4) #elif ASSERT_PIN_EXTENDED(DOUT4) #define io51_config_output -#define io51_set_output ic74hc595_set_pin(DOUT4);ic74hc595_shift_io_pins() -#define io51_clear_output ic74hc595_clear_pin(DOUT4);ic74hc595_shift_io_pins() -#define io51_toggle_output ic74hc595_toggle_pin(DOUT4);ic74hc595_shift_io_pins() +#define io51_set_output ic74hc595_set_pin(DOUT4) +#define io51_clear_output ic74hc595_clear_pin(DOUT4) +#define io51_toggle_output ic74hc595_toggle_pin(DOUT4) #define io51_get_output ic74hc595_get_pin(DOUT4) -#define io51_config_input -#define io51_config_pullup -#define io51_get_input 0 -#else -#define io51_config_output -#define io51_set_output -#define io51_clear_output -#define io51_toggle_output -#define io51_get_output 0 -#define io51_config_input -#define io51_config_pullup -#define io51_get_input 0 #endif #if ASSERT_PIN_IO(DOUT5) #define io52_config_output mcu_config_output(DOUT5) @@ -1646,31 +930,15 @@ extern "C" #define io52_clear_output mcu_clear_output(DOUT5) #define io52_toggle_output mcu_toggle_output(DOUT5) #define io52_get_output mcu_get_output(DOUT5) -#if !defined(DOUT5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io52_config_input mcu_config_input(DOUT5) -#else -#define io52_config_input mcu_config_input(DOUT5);mcu_config_pullup(DOUT5) -#endif #define io52_config_pullup mcu_config_pullup(DOUT5) #define io52_get_input mcu_get_input(DOUT5) #elif ASSERT_PIN_EXTENDED(DOUT5) #define io52_config_output -#define io52_set_output ic74hc595_set_pin(DOUT5);ic74hc595_shift_io_pins() -#define io52_clear_output ic74hc595_clear_pin(DOUT5);ic74hc595_shift_io_pins() -#define io52_toggle_output ic74hc595_toggle_pin(DOUT5);ic74hc595_shift_io_pins() +#define io52_set_output ic74hc595_set_pin(DOUT5) +#define io52_clear_output ic74hc595_clear_pin(DOUT5) +#define io52_toggle_output ic74hc595_toggle_pin(DOUT5) #define io52_get_output ic74hc595_get_pin(DOUT5) -#define io52_config_input -#define io52_config_pullup -#define io52_get_input 0 -#else -#define io52_config_output -#define io52_set_output -#define io52_clear_output -#define io52_toggle_output -#define io52_get_output 0 -#define io52_config_input -#define io52_config_pullup -#define io52_get_input 0 #endif #if ASSERT_PIN_IO(DOUT6) #define io53_config_output mcu_config_output(DOUT6) @@ -1678,31 +946,15 @@ extern "C" #define io53_clear_output mcu_clear_output(DOUT6) #define io53_toggle_output mcu_toggle_output(DOUT6) #define io53_get_output mcu_get_output(DOUT6) -#if !defined(DOUT6_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io53_config_input mcu_config_input(DOUT6) -#else -#define io53_config_input mcu_config_input(DOUT6);mcu_config_pullup(DOUT6) -#endif #define io53_config_pullup mcu_config_pullup(DOUT6) #define io53_get_input mcu_get_input(DOUT6) #elif ASSERT_PIN_EXTENDED(DOUT6) #define io53_config_output -#define io53_set_output ic74hc595_set_pin(DOUT6);ic74hc595_shift_io_pins() -#define io53_clear_output ic74hc595_clear_pin(DOUT6);ic74hc595_shift_io_pins() -#define io53_toggle_output ic74hc595_toggle_pin(DOUT6);ic74hc595_shift_io_pins() +#define io53_set_output ic74hc595_set_pin(DOUT6) +#define io53_clear_output ic74hc595_clear_pin(DOUT6) +#define io53_toggle_output ic74hc595_toggle_pin(DOUT6) #define io53_get_output ic74hc595_get_pin(DOUT6) -#define io53_config_input -#define io53_config_pullup -#define io53_get_input 0 -#else -#define io53_config_output -#define io53_set_output -#define io53_clear_output -#define io53_toggle_output -#define io53_get_output 0 -#define io53_config_input -#define io53_config_pullup -#define io53_get_input 0 #endif #if ASSERT_PIN_IO(DOUT7) #define io54_config_output mcu_config_output(DOUT7) @@ -1710,31 +962,15 @@ extern "C" #define io54_clear_output mcu_clear_output(DOUT7) #define io54_toggle_output mcu_toggle_output(DOUT7) #define io54_get_output mcu_get_output(DOUT7) -#if !defined(DOUT7_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io54_config_input mcu_config_input(DOUT7) -#else -#define io54_config_input mcu_config_input(DOUT7);mcu_config_pullup(DOUT7) -#endif #define io54_config_pullup mcu_config_pullup(DOUT7) #define io54_get_input mcu_get_input(DOUT7) #elif ASSERT_PIN_EXTENDED(DOUT7) #define io54_config_output -#define io54_set_output ic74hc595_set_pin(DOUT7);ic74hc595_shift_io_pins() -#define io54_clear_output ic74hc595_clear_pin(DOUT7);ic74hc595_shift_io_pins() -#define io54_toggle_output ic74hc595_toggle_pin(DOUT7);ic74hc595_shift_io_pins() +#define io54_set_output ic74hc595_set_pin(DOUT7) +#define io54_clear_output ic74hc595_clear_pin(DOUT7) +#define io54_toggle_output ic74hc595_toggle_pin(DOUT7) #define io54_get_output ic74hc595_get_pin(DOUT7) -#define io54_config_input -#define io54_config_pullup -#define io54_get_input 0 -#else -#define io54_config_output -#define io54_set_output -#define io54_clear_output -#define io54_toggle_output -#define io54_get_output 0 -#define io54_config_input -#define io54_config_pullup -#define io54_get_input 0 #endif #if ASSERT_PIN_IO(DOUT8) #define io55_config_output mcu_config_output(DOUT8) @@ -1742,31 +978,15 @@ extern "C" #define io55_clear_output mcu_clear_output(DOUT8) #define io55_toggle_output mcu_toggle_output(DOUT8) #define io55_get_output mcu_get_output(DOUT8) -#if !defined(DOUT8_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io55_config_input mcu_config_input(DOUT8) -#else -#define io55_config_input mcu_config_input(DOUT8);mcu_config_pullup(DOUT8) -#endif #define io55_config_pullup mcu_config_pullup(DOUT8) #define io55_get_input mcu_get_input(DOUT8) #elif ASSERT_PIN_EXTENDED(DOUT8) #define io55_config_output -#define io55_set_output ic74hc595_set_pin(DOUT8);ic74hc595_shift_io_pins() -#define io55_clear_output ic74hc595_clear_pin(DOUT8);ic74hc595_shift_io_pins() -#define io55_toggle_output ic74hc595_toggle_pin(DOUT8);ic74hc595_shift_io_pins() +#define io55_set_output ic74hc595_set_pin(DOUT8) +#define io55_clear_output ic74hc595_clear_pin(DOUT8) +#define io55_toggle_output ic74hc595_toggle_pin(DOUT8) #define io55_get_output ic74hc595_get_pin(DOUT8) -#define io55_config_input -#define io55_config_pullup -#define io55_get_input 0 -#else -#define io55_config_output -#define io55_set_output -#define io55_clear_output -#define io55_toggle_output -#define io55_get_output 0 -#define io55_config_input -#define io55_config_pullup -#define io55_get_input 0 #endif #if ASSERT_PIN_IO(DOUT9) #define io56_config_output mcu_config_output(DOUT9) @@ -1774,31 +994,15 @@ extern "C" #define io56_clear_output mcu_clear_output(DOUT9) #define io56_toggle_output mcu_toggle_output(DOUT9) #define io56_get_output mcu_get_output(DOUT9) -#if !defined(DOUT9_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io56_config_input mcu_config_input(DOUT9) -#else -#define io56_config_input mcu_config_input(DOUT9);mcu_config_pullup(DOUT9) -#endif #define io56_config_pullup mcu_config_pullup(DOUT9) #define io56_get_input mcu_get_input(DOUT9) #elif ASSERT_PIN_EXTENDED(DOUT9) #define io56_config_output -#define io56_set_output ic74hc595_set_pin(DOUT9);ic74hc595_shift_io_pins() -#define io56_clear_output ic74hc595_clear_pin(DOUT9);ic74hc595_shift_io_pins() -#define io56_toggle_output ic74hc595_toggle_pin(DOUT9);ic74hc595_shift_io_pins() +#define io56_set_output ic74hc595_set_pin(DOUT9) +#define io56_clear_output ic74hc595_clear_pin(DOUT9) +#define io56_toggle_output ic74hc595_toggle_pin(DOUT9) #define io56_get_output ic74hc595_get_pin(DOUT9) -#define io56_config_input -#define io56_config_pullup -#define io56_get_input 0 -#else -#define io56_config_output -#define io56_set_output -#define io56_clear_output -#define io56_toggle_output -#define io56_get_output 0 -#define io56_config_input -#define io56_config_pullup -#define io56_get_input 0 #endif #if ASSERT_PIN_IO(DOUT10) #define io57_config_output mcu_config_output(DOUT10) @@ -1806,31 +1010,15 @@ extern "C" #define io57_clear_output mcu_clear_output(DOUT10) #define io57_toggle_output mcu_toggle_output(DOUT10) #define io57_get_output mcu_get_output(DOUT10) -#if !defined(DOUT10_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io57_config_input mcu_config_input(DOUT10) -#else -#define io57_config_input mcu_config_input(DOUT10);mcu_config_pullup(DOUT10) -#endif #define io57_config_pullup mcu_config_pullup(DOUT10) #define io57_get_input mcu_get_input(DOUT10) #elif ASSERT_PIN_EXTENDED(DOUT10) #define io57_config_output -#define io57_set_output ic74hc595_set_pin(DOUT10);ic74hc595_shift_io_pins() -#define io57_clear_output ic74hc595_clear_pin(DOUT10);ic74hc595_shift_io_pins() -#define io57_toggle_output ic74hc595_toggle_pin(DOUT10);ic74hc595_shift_io_pins() +#define io57_set_output ic74hc595_set_pin(DOUT10) +#define io57_clear_output ic74hc595_clear_pin(DOUT10) +#define io57_toggle_output ic74hc595_toggle_pin(DOUT10) #define io57_get_output ic74hc595_get_pin(DOUT10) -#define io57_config_input -#define io57_config_pullup -#define io57_get_input 0 -#else -#define io57_config_output -#define io57_set_output -#define io57_clear_output -#define io57_toggle_output -#define io57_get_output 0 -#define io57_config_input -#define io57_config_pullup -#define io57_get_input 0 #endif #if ASSERT_PIN_IO(DOUT11) #define io58_config_output mcu_config_output(DOUT11) @@ -1838,31 +1026,15 @@ extern "C" #define io58_clear_output mcu_clear_output(DOUT11) #define io58_toggle_output mcu_toggle_output(DOUT11) #define io58_get_output mcu_get_output(DOUT11) -#if !defined(DOUT11_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io58_config_input mcu_config_input(DOUT11) -#else -#define io58_config_input mcu_config_input(DOUT11);mcu_config_pullup(DOUT11) -#endif #define io58_config_pullup mcu_config_pullup(DOUT11) #define io58_get_input mcu_get_input(DOUT11) #elif ASSERT_PIN_EXTENDED(DOUT11) #define io58_config_output -#define io58_set_output ic74hc595_set_pin(DOUT11);ic74hc595_shift_io_pins() -#define io58_clear_output ic74hc595_clear_pin(DOUT11);ic74hc595_shift_io_pins() -#define io58_toggle_output ic74hc595_toggle_pin(DOUT11);ic74hc595_shift_io_pins() +#define io58_set_output ic74hc595_set_pin(DOUT11) +#define io58_clear_output ic74hc595_clear_pin(DOUT11) +#define io58_toggle_output ic74hc595_toggle_pin(DOUT11) #define io58_get_output ic74hc595_get_pin(DOUT11) -#define io58_config_input -#define io58_config_pullup -#define io58_get_input 0 -#else -#define io58_config_output -#define io58_set_output -#define io58_clear_output -#define io58_toggle_output -#define io58_get_output 0 -#define io58_config_input -#define io58_config_pullup -#define io58_get_input 0 #endif #if ASSERT_PIN_IO(DOUT12) #define io59_config_output mcu_config_output(DOUT12) @@ -1870,31 +1042,15 @@ extern "C" #define io59_clear_output mcu_clear_output(DOUT12) #define io59_toggle_output mcu_toggle_output(DOUT12) #define io59_get_output mcu_get_output(DOUT12) -#if !defined(DOUT12_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io59_config_input mcu_config_input(DOUT12) -#else -#define io59_config_input mcu_config_input(DOUT12);mcu_config_pullup(DOUT12) -#endif #define io59_config_pullup mcu_config_pullup(DOUT12) #define io59_get_input mcu_get_input(DOUT12) #elif ASSERT_PIN_EXTENDED(DOUT12) #define io59_config_output -#define io59_set_output ic74hc595_set_pin(DOUT12);ic74hc595_shift_io_pins() -#define io59_clear_output ic74hc595_clear_pin(DOUT12);ic74hc595_shift_io_pins() -#define io59_toggle_output ic74hc595_toggle_pin(DOUT12);ic74hc595_shift_io_pins() +#define io59_set_output ic74hc595_set_pin(DOUT12) +#define io59_clear_output ic74hc595_clear_pin(DOUT12) +#define io59_toggle_output ic74hc595_toggle_pin(DOUT12) #define io59_get_output ic74hc595_get_pin(DOUT12) -#define io59_config_input -#define io59_config_pullup -#define io59_get_input 0 -#else -#define io59_config_output -#define io59_set_output -#define io59_clear_output -#define io59_toggle_output -#define io59_get_output 0 -#define io59_config_input -#define io59_config_pullup -#define io59_get_input 0 #endif #if ASSERT_PIN_IO(DOUT13) #define io60_config_output mcu_config_output(DOUT13) @@ -1902,31 +1058,15 @@ extern "C" #define io60_clear_output mcu_clear_output(DOUT13) #define io60_toggle_output mcu_toggle_output(DOUT13) #define io60_get_output mcu_get_output(DOUT13) -#if !defined(DOUT13_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io60_config_input mcu_config_input(DOUT13) -#else -#define io60_config_input mcu_config_input(DOUT13);mcu_config_pullup(DOUT13) -#endif #define io60_config_pullup mcu_config_pullup(DOUT13) #define io60_get_input mcu_get_input(DOUT13) #elif ASSERT_PIN_EXTENDED(DOUT13) #define io60_config_output -#define io60_set_output ic74hc595_set_pin(DOUT13);ic74hc595_shift_io_pins() -#define io60_clear_output ic74hc595_clear_pin(DOUT13);ic74hc595_shift_io_pins() -#define io60_toggle_output ic74hc595_toggle_pin(DOUT13);ic74hc595_shift_io_pins() +#define io60_set_output ic74hc595_set_pin(DOUT13) +#define io60_clear_output ic74hc595_clear_pin(DOUT13) +#define io60_toggle_output ic74hc595_toggle_pin(DOUT13) #define io60_get_output ic74hc595_get_pin(DOUT13) -#define io60_config_input -#define io60_config_pullup -#define io60_get_input 0 -#else -#define io60_config_output -#define io60_set_output -#define io60_clear_output -#define io60_toggle_output -#define io60_get_output 0 -#define io60_config_input -#define io60_config_pullup -#define io60_get_input 0 #endif #if ASSERT_PIN_IO(DOUT14) #define io61_config_output mcu_config_output(DOUT14) @@ -1934,31 +1074,15 @@ extern "C" #define io61_clear_output mcu_clear_output(DOUT14) #define io61_toggle_output mcu_toggle_output(DOUT14) #define io61_get_output mcu_get_output(DOUT14) -#if !defined(DOUT14_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io61_config_input mcu_config_input(DOUT14) -#else -#define io61_config_input mcu_config_input(DOUT14);mcu_config_pullup(DOUT14) -#endif #define io61_config_pullup mcu_config_pullup(DOUT14) #define io61_get_input mcu_get_input(DOUT14) #elif ASSERT_PIN_EXTENDED(DOUT14) #define io61_config_output -#define io61_set_output ic74hc595_set_pin(DOUT14);ic74hc595_shift_io_pins() -#define io61_clear_output ic74hc595_clear_pin(DOUT14);ic74hc595_shift_io_pins() -#define io61_toggle_output ic74hc595_toggle_pin(DOUT14);ic74hc595_shift_io_pins() +#define io61_set_output ic74hc595_set_pin(DOUT14) +#define io61_clear_output ic74hc595_clear_pin(DOUT14) +#define io61_toggle_output ic74hc595_toggle_pin(DOUT14) #define io61_get_output ic74hc595_get_pin(DOUT14) -#define io61_config_input -#define io61_config_pullup -#define io61_get_input 0 -#else -#define io61_config_output -#define io61_set_output -#define io61_clear_output -#define io61_toggle_output -#define io61_get_output 0 -#define io61_config_input -#define io61_config_pullup -#define io61_get_input 0 #endif #if ASSERT_PIN_IO(DOUT15) #define io62_config_output mcu_config_output(DOUT15) @@ -1966,31 +1090,15 @@ extern "C" #define io62_clear_output mcu_clear_output(DOUT15) #define io62_toggle_output mcu_toggle_output(DOUT15) #define io62_get_output mcu_get_output(DOUT15) -#if !defined(DOUT15_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io62_config_input mcu_config_input(DOUT15) -#else -#define io62_config_input mcu_config_input(DOUT15);mcu_config_pullup(DOUT15) -#endif #define io62_config_pullup mcu_config_pullup(DOUT15) #define io62_get_input mcu_get_input(DOUT15) #elif ASSERT_PIN_EXTENDED(DOUT15) #define io62_config_output -#define io62_set_output ic74hc595_set_pin(DOUT15);ic74hc595_shift_io_pins() -#define io62_clear_output ic74hc595_clear_pin(DOUT15);ic74hc595_shift_io_pins() -#define io62_toggle_output ic74hc595_toggle_pin(DOUT15);ic74hc595_shift_io_pins() +#define io62_set_output ic74hc595_set_pin(DOUT15) +#define io62_clear_output ic74hc595_clear_pin(DOUT15) +#define io62_toggle_output ic74hc595_toggle_pin(DOUT15) #define io62_get_output ic74hc595_get_pin(DOUT15) -#define io62_config_input -#define io62_config_pullup -#define io62_get_input 0 -#else -#define io62_config_output -#define io62_set_output -#define io62_clear_output -#define io62_toggle_output -#define io62_get_output 0 -#define io62_config_input -#define io62_config_pullup -#define io62_get_input 0 #endif #if ASSERT_PIN_IO(DOUT16) #define io63_config_output mcu_config_output(DOUT16) @@ -1998,31 +1106,15 @@ extern "C" #define io63_clear_output mcu_clear_output(DOUT16) #define io63_toggle_output mcu_toggle_output(DOUT16) #define io63_get_output mcu_get_output(DOUT16) -#if !defined(DOUT16_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io63_config_input mcu_config_input(DOUT16) -#else -#define io63_config_input mcu_config_input(DOUT16);mcu_config_pullup(DOUT16) -#endif #define io63_config_pullup mcu_config_pullup(DOUT16) #define io63_get_input mcu_get_input(DOUT16) #elif ASSERT_PIN_EXTENDED(DOUT16) #define io63_config_output -#define io63_set_output ic74hc595_set_pin(DOUT16);ic74hc595_shift_io_pins() -#define io63_clear_output ic74hc595_clear_pin(DOUT16);ic74hc595_shift_io_pins() -#define io63_toggle_output ic74hc595_toggle_pin(DOUT16);ic74hc595_shift_io_pins() +#define io63_set_output ic74hc595_set_pin(DOUT16) +#define io63_clear_output ic74hc595_clear_pin(DOUT16) +#define io63_toggle_output ic74hc595_toggle_pin(DOUT16) #define io63_get_output ic74hc595_get_pin(DOUT16) -#define io63_config_input -#define io63_config_pullup -#define io63_get_input 0 -#else -#define io63_config_output -#define io63_set_output -#define io63_clear_output -#define io63_toggle_output -#define io63_get_output 0 -#define io63_config_input -#define io63_config_pullup -#define io63_get_input 0 #endif #if ASSERT_PIN_IO(DOUT17) #define io64_config_output mcu_config_output(DOUT17) @@ -2030,31 +1122,15 @@ extern "C" #define io64_clear_output mcu_clear_output(DOUT17) #define io64_toggle_output mcu_toggle_output(DOUT17) #define io64_get_output mcu_get_output(DOUT17) -#if !defined(DOUT17_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io64_config_input mcu_config_input(DOUT17) -#else -#define io64_config_input mcu_config_input(DOUT17);mcu_config_pullup(DOUT17) -#endif #define io64_config_pullup mcu_config_pullup(DOUT17) #define io64_get_input mcu_get_input(DOUT17) #elif ASSERT_PIN_EXTENDED(DOUT17) #define io64_config_output -#define io64_set_output ic74hc595_set_pin(DOUT17);ic74hc595_shift_io_pins() -#define io64_clear_output ic74hc595_clear_pin(DOUT17);ic74hc595_shift_io_pins() -#define io64_toggle_output ic74hc595_toggle_pin(DOUT17);ic74hc595_shift_io_pins() +#define io64_set_output ic74hc595_set_pin(DOUT17) +#define io64_clear_output ic74hc595_clear_pin(DOUT17) +#define io64_toggle_output ic74hc595_toggle_pin(DOUT17) #define io64_get_output ic74hc595_get_pin(DOUT17) -#define io64_config_input -#define io64_config_pullup -#define io64_get_input 0 -#else -#define io64_config_output -#define io64_set_output -#define io64_clear_output -#define io64_toggle_output -#define io64_get_output 0 -#define io64_config_input -#define io64_config_pullup -#define io64_get_input 0 #endif #if ASSERT_PIN_IO(DOUT18) #define io65_config_output mcu_config_output(DOUT18) @@ -2062,31 +1138,15 @@ extern "C" #define io65_clear_output mcu_clear_output(DOUT18) #define io65_toggle_output mcu_toggle_output(DOUT18) #define io65_get_output mcu_get_output(DOUT18) -#if !defined(DOUT18_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io65_config_input mcu_config_input(DOUT18) -#else -#define io65_config_input mcu_config_input(DOUT18);mcu_config_pullup(DOUT18) -#endif #define io65_config_pullup mcu_config_pullup(DOUT18) #define io65_get_input mcu_get_input(DOUT18) #elif ASSERT_PIN_EXTENDED(DOUT18) #define io65_config_output -#define io65_set_output ic74hc595_set_pin(DOUT18);ic74hc595_shift_io_pins() -#define io65_clear_output ic74hc595_clear_pin(DOUT18);ic74hc595_shift_io_pins() -#define io65_toggle_output ic74hc595_toggle_pin(DOUT18);ic74hc595_shift_io_pins() +#define io65_set_output ic74hc595_set_pin(DOUT18) +#define io65_clear_output ic74hc595_clear_pin(DOUT18) +#define io65_toggle_output ic74hc595_toggle_pin(DOUT18) #define io65_get_output ic74hc595_get_pin(DOUT18) -#define io65_config_input -#define io65_config_pullup -#define io65_get_input 0 -#else -#define io65_config_output -#define io65_set_output -#define io65_clear_output -#define io65_toggle_output -#define io65_get_output 0 -#define io65_config_input -#define io65_config_pullup -#define io65_get_input 0 #endif #if ASSERT_PIN_IO(DOUT19) #define io66_config_output mcu_config_output(DOUT19) @@ -2094,31 +1154,15 @@ extern "C" #define io66_clear_output mcu_clear_output(DOUT19) #define io66_toggle_output mcu_toggle_output(DOUT19) #define io66_get_output mcu_get_output(DOUT19) -#if !defined(DOUT19_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io66_config_input mcu_config_input(DOUT19) -#else -#define io66_config_input mcu_config_input(DOUT19);mcu_config_pullup(DOUT19) -#endif #define io66_config_pullup mcu_config_pullup(DOUT19) #define io66_get_input mcu_get_input(DOUT19) #elif ASSERT_PIN_EXTENDED(DOUT19) #define io66_config_output -#define io66_set_output ic74hc595_set_pin(DOUT19);ic74hc595_shift_io_pins() -#define io66_clear_output ic74hc595_clear_pin(DOUT19);ic74hc595_shift_io_pins() -#define io66_toggle_output ic74hc595_toggle_pin(DOUT19);ic74hc595_shift_io_pins() +#define io66_set_output ic74hc595_set_pin(DOUT19) +#define io66_clear_output ic74hc595_clear_pin(DOUT19) +#define io66_toggle_output ic74hc595_toggle_pin(DOUT19) #define io66_get_output ic74hc595_get_pin(DOUT19) -#define io66_config_input -#define io66_config_pullup -#define io66_get_input 0 -#else -#define io66_config_output -#define io66_set_output -#define io66_clear_output -#define io66_toggle_output -#define io66_get_output 0 -#define io66_config_input -#define io66_config_pullup -#define io66_get_input 0 #endif #if ASSERT_PIN_IO(DOUT20) #define io67_config_output mcu_config_output(DOUT20) @@ -2126,31 +1170,15 @@ extern "C" #define io67_clear_output mcu_clear_output(DOUT20) #define io67_toggle_output mcu_toggle_output(DOUT20) #define io67_get_output mcu_get_output(DOUT20) -#if !defined(DOUT20_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io67_config_input mcu_config_input(DOUT20) -#else -#define io67_config_input mcu_config_input(DOUT20);mcu_config_pullup(DOUT20) -#endif #define io67_config_pullup mcu_config_pullup(DOUT20) #define io67_get_input mcu_get_input(DOUT20) #elif ASSERT_PIN_EXTENDED(DOUT20) #define io67_config_output -#define io67_set_output ic74hc595_set_pin(DOUT20);ic74hc595_shift_io_pins() -#define io67_clear_output ic74hc595_clear_pin(DOUT20);ic74hc595_shift_io_pins() -#define io67_toggle_output ic74hc595_toggle_pin(DOUT20);ic74hc595_shift_io_pins() +#define io67_set_output ic74hc595_set_pin(DOUT20) +#define io67_clear_output ic74hc595_clear_pin(DOUT20) +#define io67_toggle_output ic74hc595_toggle_pin(DOUT20) #define io67_get_output ic74hc595_get_pin(DOUT20) -#define io67_config_input -#define io67_config_pullup -#define io67_get_input 0 -#else -#define io67_config_output -#define io67_set_output -#define io67_clear_output -#define io67_toggle_output -#define io67_get_output 0 -#define io67_config_input -#define io67_config_pullup -#define io67_get_input 0 #endif #if ASSERT_PIN_IO(DOUT21) #define io68_config_output mcu_config_output(DOUT21) @@ -2158,31 +1186,15 @@ extern "C" #define io68_clear_output mcu_clear_output(DOUT21) #define io68_toggle_output mcu_toggle_output(DOUT21) #define io68_get_output mcu_get_output(DOUT21) -#if !defined(DOUT21_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io68_config_input mcu_config_input(DOUT21) -#else -#define io68_config_input mcu_config_input(DOUT21);mcu_config_pullup(DOUT21) -#endif #define io68_config_pullup mcu_config_pullup(DOUT21) #define io68_get_input mcu_get_input(DOUT21) #elif ASSERT_PIN_EXTENDED(DOUT21) #define io68_config_output -#define io68_set_output ic74hc595_set_pin(DOUT21);ic74hc595_shift_io_pins() -#define io68_clear_output ic74hc595_clear_pin(DOUT21);ic74hc595_shift_io_pins() -#define io68_toggle_output ic74hc595_toggle_pin(DOUT21);ic74hc595_shift_io_pins() +#define io68_set_output ic74hc595_set_pin(DOUT21) +#define io68_clear_output ic74hc595_clear_pin(DOUT21) +#define io68_toggle_output ic74hc595_toggle_pin(DOUT21) #define io68_get_output ic74hc595_get_pin(DOUT21) -#define io68_config_input -#define io68_config_pullup -#define io68_get_input 0 -#else -#define io68_config_output -#define io68_set_output -#define io68_clear_output -#define io68_toggle_output -#define io68_get_output 0 -#define io68_config_input -#define io68_config_pullup -#define io68_get_input 0 #endif #if ASSERT_PIN_IO(DOUT22) #define io69_config_output mcu_config_output(DOUT22) @@ -2190,31 +1202,15 @@ extern "C" #define io69_clear_output mcu_clear_output(DOUT22) #define io69_toggle_output mcu_toggle_output(DOUT22) #define io69_get_output mcu_get_output(DOUT22) -#if !defined(DOUT22_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io69_config_input mcu_config_input(DOUT22) -#else -#define io69_config_input mcu_config_input(DOUT22);mcu_config_pullup(DOUT22) -#endif #define io69_config_pullup mcu_config_pullup(DOUT22) #define io69_get_input mcu_get_input(DOUT22) #elif ASSERT_PIN_EXTENDED(DOUT22) #define io69_config_output -#define io69_set_output ic74hc595_set_pin(DOUT22);ic74hc595_shift_io_pins() -#define io69_clear_output ic74hc595_clear_pin(DOUT22);ic74hc595_shift_io_pins() -#define io69_toggle_output ic74hc595_toggle_pin(DOUT22);ic74hc595_shift_io_pins() +#define io69_set_output ic74hc595_set_pin(DOUT22) +#define io69_clear_output ic74hc595_clear_pin(DOUT22) +#define io69_toggle_output ic74hc595_toggle_pin(DOUT22) #define io69_get_output ic74hc595_get_pin(DOUT22) -#define io69_config_input -#define io69_config_pullup -#define io69_get_input 0 -#else -#define io69_config_output -#define io69_set_output -#define io69_clear_output -#define io69_toggle_output -#define io69_get_output 0 -#define io69_config_input -#define io69_config_pullup -#define io69_get_input 0 #endif #if ASSERT_PIN_IO(DOUT23) #define io70_config_output mcu_config_output(DOUT23) @@ -2222,31 +1218,15 @@ extern "C" #define io70_clear_output mcu_clear_output(DOUT23) #define io70_toggle_output mcu_toggle_output(DOUT23) #define io70_get_output mcu_get_output(DOUT23) -#if !defined(DOUT23_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io70_config_input mcu_config_input(DOUT23) -#else -#define io70_config_input mcu_config_input(DOUT23);mcu_config_pullup(DOUT23) -#endif #define io70_config_pullup mcu_config_pullup(DOUT23) #define io70_get_input mcu_get_input(DOUT23) #elif ASSERT_PIN_EXTENDED(DOUT23) #define io70_config_output -#define io70_set_output ic74hc595_set_pin(DOUT23);ic74hc595_shift_io_pins() -#define io70_clear_output ic74hc595_clear_pin(DOUT23);ic74hc595_shift_io_pins() -#define io70_toggle_output ic74hc595_toggle_pin(DOUT23);ic74hc595_shift_io_pins() +#define io70_set_output ic74hc595_set_pin(DOUT23) +#define io70_clear_output ic74hc595_clear_pin(DOUT23) +#define io70_toggle_output ic74hc595_toggle_pin(DOUT23) #define io70_get_output ic74hc595_get_pin(DOUT23) -#define io70_config_input -#define io70_config_pullup -#define io70_get_input 0 -#else -#define io70_config_output -#define io70_set_output -#define io70_clear_output -#define io70_toggle_output -#define io70_get_output 0 -#define io70_config_input -#define io70_config_pullup -#define io70_get_input 0 #endif #if ASSERT_PIN_IO(DOUT24) #define io71_config_output mcu_config_output(DOUT24) @@ -2254,31 +1234,15 @@ extern "C" #define io71_clear_output mcu_clear_output(DOUT24) #define io71_toggle_output mcu_toggle_output(DOUT24) #define io71_get_output mcu_get_output(DOUT24) -#if !defined(DOUT24_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io71_config_input mcu_config_input(DOUT24) -#else -#define io71_config_input mcu_config_input(DOUT24);mcu_config_pullup(DOUT24) -#endif #define io71_config_pullup mcu_config_pullup(DOUT24) #define io71_get_input mcu_get_input(DOUT24) #elif ASSERT_PIN_EXTENDED(DOUT24) #define io71_config_output -#define io71_set_output ic74hc595_set_pin(DOUT24);ic74hc595_shift_io_pins() -#define io71_clear_output ic74hc595_clear_pin(DOUT24);ic74hc595_shift_io_pins() -#define io71_toggle_output ic74hc595_toggle_pin(DOUT24);ic74hc595_shift_io_pins() +#define io71_set_output ic74hc595_set_pin(DOUT24) +#define io71_clear_output ic74hc595_clear_pin(DOUT24) +#define io71_toggle_output ic74hc595_toggle_pin(DOUT24) #define io71_get_output ic74hc595_get_pin(DOUT24) -#define io71_config_input -#define io71_config_pullup -#define io71_get_input 0 -#else -#define io71_config_output -#define io71_set_output -#define io71_clear_output -#define io71_toggle_output -#define io71_get_output 0 -#define io71_config_input -#define io71_config_pullup -#define io71_get_input 0 #endif #if ASSERT_PIN_IO(DOUT25) #define io72_config_output mcu_config_output(DOUT25) @@ -2286,31 +1250,15 @@ extern "C" #define io72_clear_output mcu_clear_output(DOUT25) #define io72_toggle_output mcu_toggle_output(DOUT25) #define io72_get_output mcu_get_output(DOUT25) -#if !defined(DOUT25_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io72_config_input mcu_config_input(DOUT25) -#else -#define io72_config_input mcu_config_input(DOUT25);mcu_config_pullup(DOUT25) -#endif #define io72_config_pullup mcu_config_pullup(DOUT25) #define io72_get_input mcu_get_input(DOUT25) #elif ASSERT_PIN_EXTENDED(DOUT25) #define io72_config_output -#define io72_set_output ic74hc595_set_pin(DOUT25);ic74hc595_shift_io_pins() -#define io72_clear_output ic74hc595_clear_pin(DOUT25);ic74hc595_shift_io_pins() -#define io72_toggle_output ic74hc595_toggle_pin(DOUT25);ic74hc595_shift_io_pins() +#define io72_set_output ic74hc595_set_pin(DOUT25) +#define io72_clear_output ic74hc595_clear_pin(DOUT25) +#define io72_toggle_output ic74hc595_toggle_pin(DOUT25) #define io72_get_output ic74hc595_get_pin(DOUT25) -#define io72_config_input -#define io72_config_pullup -#define io72_get_input 0 -#else -#define io72_config_output -#define io72_set_output -#define io72_clear_output -#define io72_toggle_output -#define io72_get_output 0 -#define io72_config_input -#define io72_config_pullup -#define io72_get_input 0 #endif #if ASSERT_PIN_IO(DOUT26) #define io73_config_output mcu_config_output(DOUT26) @@ -2318,31 +1266,15 @@ extern "C" #define io73_clear_output mcu_clear_output(DOUT26) #define io73_toggle_output mcu_toggle_output(DOUT26) #define io73_get_output mcu_get_output(DOUT26) -#if !defined(DOUT26_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io73_config_input mcu_config_input(DOUT26) -#else -#define io73_config_input mcu_config_input(DOUT26);mcu_config_pullup(DOUT26) -#endif #define io73_config_pullup mcu_config_pullup(DOUT26) #define io73_get_input mcu_get_input(DOUT26) #elif ASSERT_PIN_EXTENDED(DOUT26) #define io73_config_output -#define io73_set_output ic74hc595_set_pin(DOUT26);ic74hc595_shift_io_pins() -#define io73_clear_output ic74hc595_clear_pin(DOUT26);ic74hc595_shift_io_pins() -#define io73_toggle_output ic74hc595_toggle_pin(DOUT26);ic74hc595_shift_io_pins() +#define io73_set_output ic74hc595_set_pin(DOUT26) +#define io73_clear_output ic74hc595_clear_pin(DOUT26) +#define io73_toggle_output ic74hc595_toggle_pin(DOUT26) #define io73_get_output ic74hc595_get_pin(DOUT26) -#define io73_config_input -#define io73_config_pullup -#define io73_get_input 0 -#else -#define io73_config_output -#define io73_set_output -#define io73_clear_output -#define io73_toggle_output -#define io73_get_output 0 -#define io73_config_input -#define io73_config_pullup -#define io73_get_input 0 #endif #if ASSERT_PIN_IO(DOUT27) #define io74_config_output mcu_config_output(DOUT27) @@ -2350,31 +1282,15 @@ extern "C" #define io74_clear_output mcu_clear_output(DOUT27) #define io74_toggle_output mcu_toggle_output(DOUT27) #define io74_get_output mcu_get_output(DOUT27) -#if !defined(DOUT27_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io74_config_input mcu_config_input(DOUT27) -#else -#define io74_config_input mcu_config_input(DOUT27);mcu_config_pullup(DOUT27) -#endif #define io74_config_pullup mcu_config_pullup(DOUT27) #define io74_get_input mcu_get_input(DOUT27) #elif ASSERT_PIN_EXTENDED(DOUT27) #define io74_config_output -#define io74_set_output ic74hc595_set_pin(DOUT27);ic74hc595_shift_io_pins() -#define io74_clear_output ic74hc595_clear_pin(DOUT27);ic74hc595_shift_io_pins() -#define io74_toggle_output ic74hc595_toggle_pin(DOUT27);ic74hc595_shift_io_pins() +#define io74_set_output ic74hc595_set_pin(DOUT27) +#define io74_clear_output ic74hc595_clear_pin(DOUT27) +#define io74_toggle_output ic74hc595_toggle_pin(DOUT27) #define io74_get_output ic74hc595_get_pin(DOUT27) -#define io74_config_input -#define io74_config_pullup -#define io74_get_input 0 -#else -#define io74_config_output -#define io74_set_output -#define io74_clear_output -#define io74_toggle_output -#define io74_get_output 0 -#define io74_config_input -#define io74_config_pullup -#define io74_get_input 0 #endif #if ASSERT_PIN_IO(DOUT28) #define io75_config_output mcu_config_output(DOUT28) @@ -2382,31 +1298,15 @@ extern "C" #define io75_clear_output mcu_clear_output(DOUT28) #define io75_toggle_output mcu_toggle_output(DOUT28) #define io75_get_output mcu_get_output(DOUT28) -#if !defined(DOUT28_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io75_config_input mcu_config_input(DOUT28) -#else -#define io75_config_input mcu_config_input(DOUT28);mcu_config_pullup(DOUT28) -#endif #define io75_config_pullup mcu_config_pullup(DOUT28) #define io75_get_input mcu_get_input(DOUT28) #elif ASSERT_PIN_EXTENDED(DOUT28) #define io75_config_output -#define io75_set_output ic74hc595_set_pin(DOUT28);ic74hc595_shift_io_pins() -#define io75_clear_output ic74hc595_clear_pin(DOUT28);ic74hc595_shift_io_pins() -#define io75_toggle_output ic74hc595_toggle_pin(DOUT28);ic74hc595_shift_io_pins() +#define io75_set_output ic74hc595_set_pin(DOUT28) +#define io75_clear_output ic74hc595_clear_pin(DOUT28) +#define io75_toggle_output ic74hc595_toggle_pin(DOUT28) #define io75_get_output ic74hc595_get_pin(DOUT28) -#define io75_config_input -#define io75_config_pullup -#define io75_get_input 0 -#else -#define io75_config_output -#define io75_set_output -#define io75_clear_output -#define io75_toggle_output -#define io75_get_output 0 -#define io75_config_input -#define io75_config_pullup -#define io75_get_input 0 #endif #if ASSERT_PIN_IO(DOUT29) #define io76_config_output mcu_config_output(DOUT29) @@ -2414,31 +1314,15 @@ extern "C" #define io76_clear_output mcu_clear_output(DOUT29) #define io76_toggle_output mcu_toggle_output(DOUT29) #define io76_get_output mcu_get_output(DOUT29) -#if !defined(DOUT29_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io76_config_input mcu_config_input(DOUT29) -#else -#define io76_config_input mcu_config_input(DOUT29);mcu_config_pullup(DOUT29) -#endif #define io76_config_pullup mcu_config_pullup(DOUT29) #define io76_get_input mcu_get_input(DOUT29) #elif ASSERT_PIN_EXTENDED(DOUT29) #define io76_config_output -#define io76_set_output ic74hc595_set_pin(DOUT29);ic74hc595_shift_io_pins() -#define io76_clear_output ic74hc595_clear_pin(DOUT29);ic74hc595_shift_io_pins() -#define io76_toggle_output ic74hc595_toggle_pin(DOUT29);ic74hc595_shift_io_pins() +#define io76_set_output ic74hc595_set_pin(DOUT29) +#define io76_clear_output ic74hc595_clear_pin(DOUT29) +#define io76_toggle_output ic74hc595_toggle_pin(DOUT29) #define io76_get_output ic74hc595_get_pin(DOUT29) -#define io76_config_input -#define io76_config_pullup -#define io76_get_input 0 -#else -#define io76_config_output -#define io76_set_output -#define io76_clear_output -#define io76_toggle_output -#define io76_get_output 0 -#define io76_config_input -#define io76_config_pullup -#define io76_get_input 0 #endif #if ASSERT_PIN_IO(DOUT30) #define io77_config_output mcu_config_output(DOUT30) @@ -2446,31 +1330,15 @@ extern "C" #define io77_clear_output mcu_clear_output(DOUT30) #define io77_toggle_output mcu_toggle_output(DOUT30) #define io77_get_output mcu_get_output(DOUT30) -#if !defined(DOUT30_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io77_config_input mcu_config_input(DOUT30) -#else -#define io77_config_input mcu_config_input(DOUT30);mcu_config_pullup(DOUT30) -#endif #define io77_config_pullup mcu_config_pullup(DOUT30) #define io77_get_input mcu_get_input(DOUT30) #elif ASSERT_PIN_EXTENDED(DOUT30) #define io77_config_output -#define io77_set_output ic74hc595_set_pin(DOUT30);ic74hc595_shift_io_pins() -#define io77_clear_output ic74hc595_clear_pin(DOUT30);ic74hc595_shift_io_pins() -#define io77_toggle_output ic74hc595_toggle_pin(DOUT30);ic74hc595_shift_io_pins() +#define io77_set_output ic74hc595_set_pin(DOUT30) +#define io77_clear_output ic74hc595_clear_pin(DOUT30) +#define io77_toggle_output ic74hc595_toggle_pin(DOUT30) #define io77_get_output ic74hc595_get_pin(DOUT30) -#define io77_config_input -#define io77_config_pullup -#define io77_get_input 0 -#else -#define io77_config_output -#define io77_set_output -#define io77_clear_output -#define io77_toggle_output -#define io77_get_output 0 -#define io77_config_input -#define io77_config_pullup -#define io77_get_input 0 #endif #if ASSERT_PIN_IO(DOUT31) #define io78_config_output mcu_config_output(DOUT31) @@ -2478,31 +1346,15 @@ extern "C" #define io78_clear_output mcu_clear_output(DOUT31) #define io78_toggle_output mcu_toggle_output(DOUT31) #define io78_get_output mcu_get_output(DOUT31) -#if !defined(DOUT31_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io78_config_input mcu_config_input(DOUT31) -#else -#define io78_config_input mcu_config_input(DOUT31);mcu_config_pullup(DOUT31) -#endif #define io78_config_pullup mcu_config_pullup(DOUT31) #define io78_get_input mcu_get_input(DOUT31) #elif ASSERT_PIN_EXTENDED(DOUT31) #define io78_config_output -#define io78_set_output ic74hc595_set_pin(DOUT31);ic74hc595_shift_io_pins() -#define io78_clear_output ic74hc595_clear_pin(DOUT31);ic74hc595_shift_io_pins() -#define io78_toggle_output ic74hc595_toggle_pin(DOUT31);ic74hc595_shift_io_pins() +#define io78_set_output ic74hc595_set_pin(DOUT31) +#define io78_clear_output ic74hc595_clear_pin(DOUT31) +#define io78_toggle_output ic74hc595_toggle_pin(DOUT31) #define io78_get_output ic74hc595_get_pin(DOUT31) -#define io78_config_input -#define io78_config_pullup -#define io78_get_input 0 -#else -#define io78_config_output -#define io78_set_output -#define io78_clear_output -#define io78_toggle_output -#define io78_get_output 0 -#define io78_config_input -#define io78_config_pullup -#define io78_get_input 0 #endif #if ASSERT_PIN_IO(DOUT32) #define io79_config_output mcu_config_output(DOUT32) @@ -2510,31 +1362,15 @@ extern "C" #define io79_clear_output mcu_clear_output(DOUT32) #define io79_toggle_output mcu_toggle_output(DOUT32) #define io79_get_output mcu_get_output(DOUT32) -#if !defined(DOUT32_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io79_config_input mcu_config_input(DOUT32) -#else -#define io79_config_input mcu_config_input(DOUT32);mcu_config_pullup(DOUT32) -#endif #define io79_config_pullup mcu_config_pullup(DOUT32) #define io79_get_input mcu_get_input(DOUT32) #elif ASSERT_PIN_EXTENDED(DOUT32) #define io79_config_output -#define io79_set_output ic74hc595_set_pin(DOUT32);ic74hc595_shift_io_pins() -#define io79_clear_output ic74hc595_clear_pin(DOUT32);ic74hc595_shift_io_pins() -#define io79_toggle_output ic74hc595_toggle_pin(DOUT32);ic74hc595_shift_io_pins() +#define io79_set_output ic74hc595_set_pin(DOUT32) +#define io79_clear_output ic74hc595_clear_pin(DOUT32) +#define io79_toggle_output ic74hc595_toggle_pin(DOUT32) #define io79_get_output ic74hc595_get_pin(DOUT32) -#define io79_config_input -#define io79_config_pullup -#define io79_get_input 0 -#else -#define io79_config_output -#define io79_set_output -#define io79_clear_output -#define io79_toggle_output -#define io79_get_output 0 -#define io79_config_input -#define io79_config_pullup -#define io79_get_input 0 #endif #if ASSERT_PIN_IO(DOUT33) #define io80_config_output mcu_config_output(DOUT33) @@ -2542,31 +1378,15 @@ extern "C" #define io80_clear_output mcu_clear_output(DOUT33) #define io80_toggle_output mcu_toggle_output(DOUT33) #define io80_get_output mcu_get_output(DOUT33) -#if !defined(DOUT33_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io80_config_input mcu_config_input(DOUT33) -#else -#define io80_config_input mcu_config_input(DOUT33);mcu_config_pullup(DOUT33) -#endif #define io80_config_pullup mcu_config_pullup(DOUT33) #define io80_get_input mcu_get_input(DOUT33) #elif ASSERT_PIN_EXTENDED(DOUT33) #define io80_config_output -#define io80_set_output ic74hc595_set_pin(DOUT33);ic74hc595_shift_io_pins() -#define io80_clear_output ic74hc595_clear_pin(DOUT33);ic74hc595_shift_io_pins() -#define io80_toggle_output ic74hc595_toggle_pin(DOUT33);ic74hc595_shift_io_pins() +#define io80_set_output ic74hc595_set_pin(DOUT33) +#define io80_clear_output ic74hc595_clear_pin(DOUT33) +#define io80_toggle_output ic74hc595_toggle_pin(DOUT33) #define io80_get_output ic74hc595_get_pin(DOUT33) -#define io80_config_input -#define io80_config_pullup -#define io80_get_input 0 -#else -#define io80_config_output -#define io80_set_output -#define io80_clear_output -#define io80_toggle_output -#define io80_get_output 0 -#define io80_config_input -#define io80_config_pullup -#define io80_get_input 0 #endif #if ASSERT_PIN_IO(DOUT34) #define io81_config_output mcu_config_output(DOUT34) @@ -2574,31 +1394,15 @@ extern "C" #define io81_clear_output mcu_clear_output(DOUT34) #define io81_toggle_output mcu_toggle_output(DOUT34) #define io81_get_output mcu_get_output(DOUT34) -#if !defined(DOUT34_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io81_config_input mcu_config_input(DOUT34) -#else -#define io81_config_input mcu_config_input(DOUT34);mcu_config_pullup(DOUT34) -#endif #define io81_config_pullup mcu_config_pullup(DOUT34) #define io81_get_input mcu_get_input(DOUT34) #elif ASSERT_PIN_EXTENDED(DOUT34) #define io81_config_output -#define io81_set_output ic74hc595_set_pin(DOUT34);ic74hc595_shift_io_pins() -#define io81_clear_output ic74hc595_clear_pin(DOUT34);ic74hc595_shift_io_pins() -#define io81_toggle_output ic74hc595_toggle_pin(DOUT34);ic74hc595_shift_io_pins() +#define io81_set_output ic74hc595_set_pin(DOUT34) +#define io81_clear_output ic74hc595_clear_pin(DOUT34) +#define io81_toggle_output ic74hc595_toggle_pin(DOUT34) #define io81_get_output ic74hc595_get_pin(DOUT34) -#define io81_config_input -#define io81_config_pullup -#define io81_get_input 0 -#else -#define io81_config_output -#define io81_set_output -#define io81_clear_output -#define io81_toggle_output -#define io81_get_output 0 -#define io81_config_input -#define io81_config_pullup -#define io81_get_input 0 #endif #if ASSERT_PIN_IO(DOUT35) #define io82_config_output mcu_config_output(DOUT35) @@ -2606,31 +1410,15 @@ extern "C" #define io82_clear_output mcu_clear_output(DOUT35) #define io82_toggle_output mcu_toggle_output(DOUT35) #define io82_get_output mcu_get_output(DOUT35) -#if !defined(DOUT35_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io82_config_input mcu_config_input(DOUT35) -#else -#define io82_config_input mcu_config_input(DOUT35);mcu_config_pullup(DOUT35) -#endif #define io82_config_pullup mcu_config_pullup(DOUT35) #define io82_get_input mcu_get_input(DOUT35) #elif ASSERT_PIN_EXTENDED(DOUT35) #define io82_config_output -#define io82_set_output ic74hc595_set_pin(DOUT35);ic74hc595_shift_io_pins() -#define io82_clear_output ic74hc595_clear_pin(DOUT35);ic74hc595_shift_io_pins() -#define io82_toggle_output ic74hc595_toggle_pin(DOUT35);ic74hc595_shift_io_pins() +#define io82_set_output ic74hc595_set_pin(DOUT35) +#define io82_clear_output ic74hc595_clear_pin(DOUT35) +#define io82_toggle_output ic74hc595_toggle_pin(DOUT35) #define io82_get_output ic74hc595_get_pin(DOUT35) -#define io82_config_input -#define io82_config_pullup -#define io82_get_input 0 -#else -#define io82_config_output -#define io82_set_output -#define io82_clear_output -#define io82_toggle_output -#define io82_get_output 0 -#define io82_config_input -#define io82_config_pullup -#define io82_get_input 0 #endif #if ASSERT_PIN_IO(DOUT36) #define io83_config_output mcu_config_output(DOUT36) @@ -2638,31 +1426,15 @@ extern "C" #define io83_clear_output mcu_clear_output(DOUT36) #define io83_toggle_output mcu_toggle_output(DOUT36) #define io83_get_output mcu_get_output(DOUT36) -#if !defined(DOUT36_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io83_config_input mcu_config_input(DOUT36) -#else -#define io83_config_input mcu_config_input(DOUT36);mcu_config_pullup(DOUT36) -#endif #define io83_config_pullup mcu_config_pullup(DOUT36) #define io83_get_input mcu_get_input(DOUT36) #elif ASSERT_PIN_EXTENDED(DOUT36) #define io83_config_output -#define io83_set_output ic74hc595_set_pin(DOUT36);ic74hc595_shift_io_pins() -#define io83_clear_output ic74hc595_clear_pin(DOUT36);ic74hc595_shift_io_pins() -#define io83_toggle_output ic74hc595_toggle_pin(DOUT36);ic74hc595_shift_io_pins() +#define io83_set_output ic74hc595_set_pin(DOUT36) +#define io83_clear_output ic74hc595_clear_pin(DOUT36) +#define io83_toggle_output ic74hc595_toggle_pin(DOUT36) #define io83_get_output ic74hc595_get_pin(DOUT36) -#define io83_config_input -#define io83_config_pullup -#define io83_get_input 0 -#else -#define io83_config_output -#define io83_set_output -#define io83_clear_output -#define io83_toggle_output -#define io83_get_output 0 -#define io83_config_input -#define io83_config_pullup -#define io83_get_input 0 #endif #if ASSERT_PIN_IO(DOUT37) #define io84_config_output mcu_config_output(DOUT37) @@ -2670,31 +1442,15 @@ extern "C" #define io84_clear_output mcu_clear_output(DOUT37) #define io84_toggle_output mcu_toggle_output(DOUT37) #define io84_get_output mcu_get_output(DOUT37) -#if !defined(DOUT37_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io84_config_input mcu_config_input(DOUT37) -#else -#define io84_config_input mcu_config_input(DOUT37);mcu_config_pullup(DOUT37) -#endif #define io84_config_pullup mcu_config_pullup(DOUT37) #define io84_get_input mcu_get_input(DOUT37) #elif ASSERT_PIN_EXTENDED(DOUT37) #define io84_config_output -#define io84_set_output ic74hc595_set_pin(DOUT37);ic74hc595_shift_io_pins() -#define io84_clear_output ic74hc595_clear_pin(DOUT37);ic74hc595_shift_io_pins() -#define io84_toggle_output ic74hc595_toggle_pin(DOUT37);ic74hc595_shift_io_pins() +#define io84_set_output ic74hc595_set_pin(DOUT37) +#define io84_clear_output ic74hc595_clear_pin(DOUT37) +#define io84_toggle_output ic74hc595_toggle_pin(DOUT37) #define io84_get_output ic74hc595_get_pin(DOUT37) -#define io84_config_input -#define io84_config_pullup -#define io84_get_input 0 -#else -#define io84_config_output -#define io84_set_output -#define io84_clear_output -#define io84_toggle_output -#define io84_get_output 0 -#define io84_config_input -#define io84_config_pullup -#define io84_get_input 0 #endif #if ASSERT_PIN_IO(DOUT38) #define io85_config_output mcu_config_output(DOUT38) @@ -2702,31 +1458,15 @@ extern "C" #define io85_clear_output mcu_clear_output(DOUT38) #define io85_toggle_output mcu_toggle_output(DOUT38) #define io85_get_output mcu_get_output(DOUT38) -#if !defined(DOUT38_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io85_config_input mcu_config_input(DOUT38) -#else -#define io85_config_input mcu_config_input(DOUT38);mcu_config_pullup(DOUT38) -#endif #define io85_config_pullup mcu_config_pullup(DOUT38) #define io85_get_input mcu_get_input(DOUT38) #elif ASSERT_PIN_EXTENDED(DOUT38) #define io85_config_output -#define io85_set_output ic74hc595_set_pin(DOUT38);ic74hc595_shift_io_pins() -#define io85_clear_output ic74hc595_clear_pin(DOUT38);ic74hc595_shift_io_pins() -#define io85_toggle_output ic74hc595_toggle_pin(DOUT38);ic74hc595_shift_io_pins() +#define io85_set_output ic74hc595_set_pin(DOUT38) +#define io85_clear_output ic74hc595_clear_pin(DOUT38) +#define io85_toggle_output ic74hc595_toggle_pin(DOUT38) #define io85_get_output ic74hc595_get_pin(DOUT38) -#define io85_config_input -#define io85_config_pullup -#define io85_get_input 0 -#else -#define io85_config_output -#define io85_set_output -#define io85_clear_output -#define io85_toggle_output -#define io85_get_output 0 -#define io85_config_input -#define io85_config_pullup -#define io85_get_input 0 #endif #if ASSERT_PIN_IO(DOUT39) #define io86_config_output mcu_config_output(DOUT39) @@ -2734,31 +1474,15 @@ extern "C" #define io86_clear_output mcu_clear_output(DOUT39) #define io86_toggle_output mcu_toggle_output(DOUT39) #define io86_get_output mcu_get_output(DOUT39) -#if !defined(DOUT39_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io86_config_input mcu_config_input(DOUT39) -#else -#define io86_config_input mcu_config_input(DOUT39);mcu_config_pullup(DOUT39) -#endif #define io86_config_pullup mcu_config_pullup(DOUT39) #define io86_get_input mcu_get_input(DOUT39) #elif ASSERT_PIN_EXTENDED(DOUT39) #define io86_config_output -#define io86_set_output ic74hc595_set_pin(DOUT39);ic74hc595_shift_io_pins() -#define io86_clear_output ic74hc595_clear_pin(DOUT39);ic74hc595_shift_io_pins() -#define io86_toggle_output ic74hc595_toggle_pin(DOUT39);ic74hc595_shift_io_pins() +#define io86_set_output ic74hc595_set_pin(DOUT39) +#define io86_clear_output ic74hc595_clear_pin(DOUT39) +#define io86_toggle_output ic74hc595_toggle_pin(DOUT39) #define io86_get_output ic74hc595_get_pin(DOUT39) -#define io86_config_input -#define io86_config_pullup -#define io86_get_input 0 -#else -#define io86_config_output -#define io86_set_output -#define io86_clear_output -#define io86_toggle_output -#define io86_get_output 0 -#define io86_config_input -#define io86_config_pullup -#define io86_get_input 0 #endif #if ASSERT_PIN_IO(DOUT40) #define io87_config_output mcu_config_output(DOUT40) @@ -2766,31 +1490,15 @@ extern "C" #define io87_clear_output mcu_clear_output(DOUT40) #define io87_toggle_output mcu_toggle_output(DOUT40) #define io87_get_output mcu_get_output(DOUT40) -#if !defined(DOUT40_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io87_config_input mcu_config_input(DOUT40) -#else -#define io87_config_input mcu_config_input(DOUT40);mcu_config_pullup(DOUT40) -#endif #define io87_config_pullup mcu_config_pullup(DOUT40) #define io87_get_input mcu_get_input(DOUT40) #elif ASSERT_PIN_EXTENDED(DOUT40) #define io87_config_output -#define io87_set_output ic74hc595_set_pin(DOUT40);ic74hc595_shift_io_pins() -#define io87_clear_output ic74hc595_clear_pin(DOUT40);ic74hc595_shift_io_pins() -#define io87_toggle_output ic74hc595_toggle_pin(DOUT40);ic74hc595_shift_io_pins() +#define io87_set_output ic74hc595_set_pin(DOUT40) +#define io87_clear_output ic74hc595_clear_pin(DOUT40) +#define io87_toggle_output ic74hc595_toggle_pin(DOUT40) #define io87_get_output ic74hc595_get_pin(DOUT40) -#define io87_config_input -#define io87_config_pullup -#define io87_get_input 0 -#else -#define io87_config_output -#define io87_set_output -#define io87_clear_output -#define io87_toggle_output -#define io87_get_output 0 -#define io87_config_input -#define io87_config_pullup -#define io87_get_input 0 #endif #if ASSERT_PIN_IO(DOUT41) #define io88_config_output mcu_config_output(DOUT41) @@ -2798,31 +1506,15 @@ extern "C" #define io88_clear_output mcu_clear_output(DOUT41) #define io88_toggle_output mcu_toggle_output(DOUT41) #define io88_get_output mcu_get_output(DOUT41) -#if !defined(DOUT41_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io88_config_input mcu_config_input(DOUT41) -#else -#define io88_config_input mcu_config_input(DOUT41);mcu_config_pullup(DOUT41) -#endif #define io88_config_pullup mcu_config_pullup(DOUT41) #define io88_get_input mcu_get_input(DOUT41) #elif ASSERT_PIN_EXTENDED(DOUT41) #define io88_config_output -#define io88_set_output ic74hc595_set_pin(DOUT41);ic74hc595_shift_io_pins() -#define io88_clear_output ic74hc595_clear_pin(DOUT41);ic74hc595_shift_io_pins() -#define io88_toggle_output ic74hc595_toggle_pin(DOUT41);ic74hc595_shift_io_pins() +#define io88_set_output ic74hc595_set_pin(DOUT41) +#define io88_clear_output ic74hc595_clear_pin(DOUT41) +#define io88_toggle_output ic74hc595_toggle_pin(DOUT41) #define io88_get_output ic74hc595_get_pin(DOUT41) -#define io88_config_input -#define io88_config_pullup -#define io88_get_input 0 -#else -#define io88_config_output -#define io88_set_output -#define io88_clear_output -#define io88_toggle_output -#define io88_get_output 0 -#define io88_config_input -#define io88_config_pullup -#define io88_get_input 0 #endif #if ASSERT_PIN_IO(DOUT42) #define io89_config_output mcu_config_output(DOUT42) @@ -2830,31 +1522,15 @@ extern "C" #define io89_clear_output mcu_clear_output(DOUT42) #define io89_toggle_output mcu_toggle_output(DOUT42) #define io89_get_output mcu_get_output(DOUT42) -#if !defined(DOUT42_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io89_config_input mcu_config_input(DOUT42) -#else -#define io89_config_input mcu_config_input(DOUT42);mcu_config_pullup(DOUT42) -#endif #define io89_config_pullup mcu_config_pullup(DOUT42) #define io89_get_input mcu_get_input(DOUT42) #elif ASSERT_PIN_EXTENDED(DOUT42) #define io89_config_output -#define io89_set_output ic74hc595_set_pin(DOUT42);ic74hc595_shift_io_pins() -#define io89_clear_output ic74hc595_clear_pin(DOUT42);ic74hc595_shift_io_pins() -#define io89_toggle_output ic74hc595_toggle_pin(DOUT42);ic74hc595_shift_io_pins() +#define io89_set_output ic74hc595_set_pin(DOUT42) +#define io89_clear_output ic74hc595_clear_pin(DOUT42) +#define io89_toggle_output ic74hc595_toggle_pin(DOUT42) #define io89_get_output ic74hc595_get_pin(DOUT42) -#define io89_config_input -#define io89_config_pullup -#define io89_get_input 0 -#else -#define io89_config_output -#define io89_set_output -#define io89_clear_output -#define io89_toggle_output -#define io89_get_output 0 -#define io89_config_input -#define io89_config_pullup -#define io89_get_input 0 #endif #if ASSERT_PIN_IO(DOUT43) #define io90_config_output mcu_config_output(DOUT43) @@ -2862,31 +1538,15 @@ extern "C" #define io90_clear_output mcu_clear_output(DOUT43) #define io90_toggle_output mcu_toggle_output(DOUT43) #define io90_get_output mcu_get_output(DOUT43) -#if !defined(DOUT43_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io90_config_input mcu_config_input(DOUT43) -#else -#define io90_config_input mcu_config_input(DOUT43);mcu_config_pullup(DOUT43) -#endif #define io90_config_pullup mcu_config_pullup(DOUT43) #define io90_get_input mcu_get_input(DOUT43) #elif ASSERT_PIN_EXTENDED(DOUT43) #define io90_config_output -#define io90_set_output ic74hc595_set_pin(DOUT43);ic74hc595_shift_io_pins() -#define io90_clear_output ic74hc595_clear_pin(DOUT43);ic74hc595_shift_io_pins() -#define io90_toggle_output ic74hc595_toggle_pin(DOUT43);ic74hc595_shift_io_pins() +#define io90_set_output ic74hc595_set_pin(DOUT43) +#define io90_clear_output ic74hc595_clear_pin(DOUT43) +#define io90_toggle_output ic74hc595_toggle_pin(DOUT43) #define io90_get_output ic74hc595_get_pin(DOUT43) -#define io90_config_input -#define io90_config_pullup -#define io90_get_input 0 -#else -#define io90_config_output -#define io90_set_output -#define io90_clear_output -#define io90_toggle_output -#define io90_get_output 0 -#define io90_config_input -#define io90_config_pullup -#define io90_get_input 0 #endif #if ASSERT_PIN_IO(DOUT44) #define io91_config_output mcu_config_output(DOUT44) @@ -2894,31 +1554,15 @@ extern "C" #define io91_clear_output mcu_clear_output(DOUT44) #define io91_toggle_output mcu_toggle_output(DOUT44) #define io91_get_output mcu_get_output(DOUT44) -#if !defined(DOUT44_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io91_config_input mcu_config_input(DOUT44) -#else -#define io91_config_input mcu_config_input(DOUT44);mcu_config_pullup(DOUT44) -#endif #define io91_config_pullup mcu_config_pullup(DOUT44) #define io91_get_input mcu_get_input(DOUT44) #elif ASSERT_PIN_EXTENDED(DOUT44) #define io91_config_output -#define io91_set_output ic74hc595_set_pin(DOUT44);ic74hc595_shift_io_pins() -#define io91_clear_output ic74hc595_clear_pin(DOUT44);ic74hc595_shift_io_pins() -#define io91_toggle_output ic74hc595_toggle_pin(DOUT44);ic74hc595_shift_io_pins() +#define io91_set_output ic74hc595_set_pin(DOUT44) +#define io91_clear_output ic74hc595_clear_pin(DOUT44) +#define io91_toggle_output ic74hc595_toggle_pin(DOUT44) #define io91_get_output ic74hc595_get_pin(DOUT44) -#define io91_config_input -#define io91_config_pullup -#define io91_get_input 0 -#else -#define io91_config_output -#define io91_set_output -#define io91_clear_output -#define io91_toggle_output -#define io91_get_output 0 -#define io91_config_input -#define io91_config_pullup -#define io91_get_input 0 #endif #if ASSERT_PIN_IO(DOUT45) #define io92_config_output mcu_config_output(DOUT45) @@ -2926,31 +1570,15 @@ extern "C" #define io92_clear_output mcu_clear_output(DOUT45) #define io92_toggle_output mcu_toggle_output(DOUT45) #define io92_get_output mcu_get_output(DOUT45) -#if !defined(DOUT45_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io92_config_input mcu_config_input(DOUT45) -#else -#define io92_config_input mcu_config_input(DOUT45);mcu_config_pullup(DOUT45) -#endif #define io92_config_pullup mcu_config_pullup(DOUT45) #define io92_get_input mcu_get_input(DOUT45) #elif ASSERT_PIN_EXTENDED(DOUT45) #define io92_config_output -#define io92_set_output ic74hc595_set_pin(DOUT45);ic74hc595_shift_io_pins() -#define io92_clear_output ic74hc595_clear_pin(DOUT45);ic74hc595_shift_io_pins() -#define io92_toggle_output ic74hc595_toggle_pin(DOUT45);ic74hc595_shift_io_pins() +#define io92_set_output ic74hc595_set_pin(DOUT45) +#define io92_clear_output ic74hc595_clear_pin(DOUT45) +#define io92_toggle_output ic74hc595_toggle_pin(DOUT45) #define io92_get_output ic74hc595_get_pin(DOUT45) -#define io92_config_input -#define io92_config_pullup -#define io92_get_input 0 -#else -#define io92_config_output -#define io92_set_output -#define io92_clear_output -#define io92_toggle_output -#define io92_get_output 0 -#define io92_config_input -#define io92_config_pullup -#define io92_get_input 0 #endif #if ASSERT_PIN_IO(DOUT46) #define io93_config_output mcu_config_output(DOUT46) @@ -2958,31 +1586,15 @@ extern "C" #define io93_clear_output mcu_clear_output(DOUT46) #define io93_toggle_output mcu_toggle_output(DOUT46) #define io93_get_output mcu_get_output(DOUT46) -#if !defined(DOUT46_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io93_config_input mcu_config_input(DOUT46) -#else -#define io93_config_input mcu_config_input(DOUT46);mcu_config_pullup(DOUT46) -#endif #define io93_config_pullup mcu_config_pullup(DOUT46) #define io93_get_input mcu_get_input(DOUT46) #elif ASSERT_PIN_EXTENDED(DOUT46) #define io93_config_output -#define io93_set_output ic74hc595_set_pin(DOUT46);ic74hc595_shift_io_pins() -#define io93_clear_output ic74hc595_clear_pin(DOUT46);ic74hc595_shift_io_pins() -#define io93_toggle_output ic74hc595_toggle_pin(DOUT46);ic74hc595_shift_io_pins() +#define io93_set_output ic74hc595_set_pin(DOUT46) +#define io93_clear_output ic74hc595_clear_pin(DOUT46) +#define io93_toggle_output ic74hc595_toggle_pin(DOUT46) #define io93_get_output ic74hc595_get_pin(DOUT46) -#define io93_config_input -#define io93_config_pullup -#define io93_get_input 0 -#else -#define io93_config_output -#define io93_set_output -#define io93_clear_output -#define io93_toggle_output -#define io93_get_output 0 -#define io93_config_input -#define io93_config_pullup -#define io93_get_input 0 #endif #if ASSERT_PIN_IO(DOUT47) #define io94_config_output mcu_config_output(DOUT47) @@ -2990,31 +1602,15 @@ extern "C" #define io94_clear_output mcu_clear_output(DOUT47) #define io94_toggle_output mcu_toggle_output(DOUT47) #define io94_get_output mcu_get_output(DOUT47) -#if !defined(DOUT47_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io94_config_input mcu_config_input(DOUT47) -#else -#define io94_config_input mcu_config_input(DOUT47);mcu_config_pullup(DOUT47) -#endif #define io94_config_pullup mcu_config_pullup(DOUT47) #define io94_get_input mcu_get_input(DOUT47) #elif ASSERT_PIN_EXTENDED(DOUT47) #define io94_config_output -#define io94_set_output ic74hc595_set_pin(DOUT47);ic74hc595_shift_io_pins() -#define io94_clear_output ic74hc595_clear_pin(DOUT47);ic74hc595_shift_io_pins() -#define io94_toggle_output ic74hc595_toggle_pin(DOUT47);ic74hc595_shift_io_pins() +#define io94_set_output ic74hc595_set_pin(DOUT47) +#define io94_clear_output ic74hc595_clear_pin(DOUT47) +#define io94_toggle_output ic74hc595_toggle_pin(DOUT47) #define io94_get_output ic74hc595_get_pin(DOUT47) -#define io94_config_input -#define io94_config_pullup -#define io94_get_input 0 -#else -#define io94_config_output -#define io94_set_output -#define io94_clear_output -#define io94_toggle_output -#define io94_get_output 0 -#define io94_config_input -#define io94_config_pullup -#define io94_get_input 0 #endif #if ASSERT_PIN_IO(DOUT48) #define io95_config_output mcu_config_output(DOUT48) @@ -3022,31 +1618,15 @@ extern "C" #define io95_clear_output mcu_clear_output(DOUT48) #define io95_toggle_output mcu_toggle_output(DOUT48) #define io95_get_output mcu_get_output(DOUT48) -#if !defined(DOUT48_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io95_config_input mcu_config_input(DOUT48) -#else -#define io95_config_input mcu_config_input(DOUT48);mcu_config_pullup(DOUT48) -#endif #define io95_config_pullup mcu_config_pullup(DOUT48) #define io95_get_input mcu_get_input(DOUT48) #elif ASSERT_PIN_EXTENDED(DOUT48) #define io95_config_output -#define io95_set_output ic74hc595_set_pin(DOUT48);ic74hc595_shift_io_pins() -#define io95_clear_output ic74hc595_clear_pin(DOUT48);ic74hc595_shift_io_pins() -#define io95_toggle_output ic74hc595_toggle_pin(DOUT48);ic74hc595_shift_io_pins() +#define io95_set_output ic74hc595_set_pin(DOUT48) +#define io95_clear_output ic74hc595_clear_pin(DOUT48) +#define io95_toggle_output ic74hc595_toggle_pin(DOUT48) #define io95_get_output ic74hc595_get_pin(DOUT48) -#define io95_config_input -#define io95_config_pullup -#define io95_get_input 0 -#else -#define io95_config_output -#define io95_set_output -#define io95_clear_output -#define io95_toggle_output -#define io95_get_output 0 -#define io95_config_input -#define io95_config_pullup -#define io95_get_input 0 #endif #if ASSERT_PIN_IO(DOUT49) #define io96_config_output mcu_config_output(DOUT49) @@ -3054,31 +1634,15 @@ extern "C" #define io96_clear_output mcu_clear_output(DOUT49) #define io96_toggle_output mcu_toggle_output(DOUT49) #define io96_get_output mcu_get_output(DOUT49) -#if !defined(DOUT49_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io96_config_input mcu_config_input(DOUT49) -#else -#define io96_config_input mcu_config_input(DOUT49);mcu_config_pullup(DOUT49) -#endif #define io96_config_pullup mcu_config_pullup(DOUT49) #define io96_get_input mcu_get_input(DOUT49) #elif ASSERT_PIN_EXTENDED(DOUT49) #define io96_config_output -#define io96_set_output ic74hc595_set_pin(DOUT49);ic74hc595_shift_io_pins() -#define io96_clear_output ic74hc595_clear_pin(DOUT49);ic74hc595_shift_io_pins() -#define io96_toggle_output ic74hc595_toggle_pin(DOUT49);ic74hc595_shift_io_pins() +#define io96_set_output ic74hc595_set_pin(DOUT49) +#define io96_clear_output ic74hc595_clear_pin(DOUT49) +#define io96_toggle_output ic74hc595_toggle_pin(DOUT49) #define io96_get_output ic74hc595_get_pin(DOUT49) -#define io96_config_input -#define io96_config_pullup -#define io96_get_input 0 -#else -#define io96_config_output -#define io96_set_output -#define io96_clear_output -#define io96_toggle_output -#define io96_get_output 0 -#define io96_config_input -#define io96_config_pullup -#define io96_get_input 0 #endif #if ASSERT_PIN_IO(LIMIT_X) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3091,30 +1655,16 @@ extern "C" #if !defined(LIMIT_X_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io100_config_input mcu_config_input(LIMIT_X) #else -#define io100_config_input mcu_config_input(LIMIT_X);mcu_config_pullup(LIMIT_X) +#define io100_config_input \ + mcu_config_input(LIMIT_X); \ + mcu_config_pullup(LIMIT_X) #endif #define io100_config_pullup mcu_config_pullup(LIMIT_X) #define io100_get_input mcu_get_input(LIMIT_X) #elif ASSERT_PIN_EXTENDED(LIMIT_X) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io100_config_output -#define io100_set_output ic74hc595_set_pin(LIMIT_X);ic74hc595_shift_io_pins() -#define io100_clear_output ic74hc595_clear_pin(LIMIT_X);ic74hc595_shift_io_pins() -#define io100_toggle_output ic74hc595_toggle_pin(LIMIT_X);ic74hc595_shift_io_pins() -#define io100_get_output ic74hc595_get_pin(LIMIT_X) -#endif #define io100_config_input #define io100_config_pullup -#define io100_get_input 0 -#else -#define io100_config_output -#define io100_set_output -#define io100_clear_output -#define io100_toggle_output -#define io100_get_output 0 -#define io100_config_input -#define io100_config_pullup -#define io100_get_input 0 +#define io100_get_input ic74hc165_get_pin(LIMIT_X) #endif #if ASSERT_PIN_IO(LIMIT_Y) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3127,30 +1677,16 @@ extern "C" #if !defined(LIMIT_Y_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io101_config_input mcu_config_input(LIMIT_Y) #else -#define io101_config_input mcu_config_input(LIMIT_Y);mcu_config_pullup(LIMIT_Y) +#define io101_config_input \ + mcu_config_input(LIMIT_Y); \ + mcu_config_pullup(LIMIT_Y) #endif #define io101_config_pullup mcu_config_pullup(LIMIT_Y) #define io101_get_input mcu_get_input(LIMIT_Y) #elif ASSERT_PIN_EXTENDED(LIMIT_Y) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io101_config_output -#define io101_set_output ic74hc595_set_pin(LIMIT_Y);ic74hc595_shift_io_pins() -#define io101_clear_output ic74hc595_clear_pin(LIMIT_Y);ic74hc595_shift_io_pins() -#define io101_toggle_output ic74hc595_toggle_pin(LIMIT_Y);ic74hc595_shift_io_pins() -#define io101_get_output ic74hc595_get_pin(LIMIT_Y) -#endif -#define io101_config_input -#define io101_config_pullup -#define io101_get_input 0 -#else -#define io101_config_output -#define io101_set_output -#define io101_clear_output -#define io101_toggle_output -#define io101_get_output 0 #define io101_config_input #define io101_config_pullup -#define io101_get_input 0 +#define io101_get_input ic74hc165_get_pin(LIMIT_Y) #endif #if ASSERT_PIN_IO(LIMIT_Z) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3163,30 +1699,16 @@ extern "C" #if !defined(LIMIT_Z_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io102_config_input mcu_config_input(LIMIT_Z) #else -#define io102_config_input mcu_config_input(LIMIT_Z);mcu_config_pullup(LIMIT_Z) +#define io102_config_input \ + mcu_config_input(LIMIT_Z); \ + mcu_config_pullup(LIMIT_Z) #endif #define io102_config_pullup mcu_config_pullup(LIMIT_Z) #define io102_get_input mcu_get_input(LIMIT_Z) #elif ASSERT_PIN_EXTENDED(LIMIT_Z) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io102_config_output -#define io102_set_output ic74hc595_set_pin(LIMIT_Z);ic74hc595_shift_io_pins() -#define io102_clear_output ic74hc595_clear_pin(LIMIT_Z);ic74hc595_shift_io_pins() -#define io102_toggle_output ic74hc595_toggle_pin(LIMIT_Z);ic74hc595_shift_io_pins() -#define io102_get_output ic74hc595_get_pin(LIMIT_Z) -#endif -#define io102_config_input -#define io102_config_pullup -#define io102_get_input 0 -#else -#define io102_config_output -#define io102_set_output -#define io102_clear_output -#define io102_toggle_output -#define io102_get_output 0 #define io102_config_input #define io102_config_pullup -#define io102_get_input 0 +#define io102_get_input ic74hc165_get_pin(LIMIT_Z) #endif #if ASSERT_PIN_IO(LIMIT_X2) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3199,30 +1721,16 @@ extern "C" #if !defined(LIMIT_X2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io103_config_input mcu_config_input(LIMIT_X2) #else -#define io103_config_input mcu_config_input(LIMIT_X2);mcu_config_pullup(LIMIT_X2) +#define io103_config_input \ + mcu_config_input(LIMIT_X2); \ + mcu_config_pullup(LIMIT_X2) #endif #define io103_config_pullup mcu_config_pullup(LIMIT_X2) #define io103_get_input mcu_get_input(LIMIT_X2) #elif ASSERT_PIN_EXTENDED(LIMIT_X2) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io103_config_output -#define io103_set_output ic74hc595_set_pin(LIMIT_X2);ic74hc595_shift_io_pins() -#define io103_clear_output ic74hc595_clear_pin(LIMIT_X2);ic74hc595_shift_io_pins() -#define io103_toggle_output ic74hc595_toggle_pin(LIMIT_X2);ic74hc595_shift_io_pins() -#define io103_get_output ic74hc595_get_pin(LIMIT_X2) -#endif -#define io103_config_input -#define io103_config_pullup -#define io103_get_input 0 -#else -#define io103_config_output -#define io103_set_output -#define io103_clear_output -#define io103_toggle_output -#define io103_get_output 0 #define io103_config_input #define io103_config_pullup -#define io103_get_input 0 +#define io103_get_input ic74hc165_get_pin(LIMIT_X2) #endif #if ASSERT_PIN_IO(LIMIT_Y2) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3235,30 +1743,16 @@ extern "C" #if !defined(LIMIT_Y2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io104_config_input mcu_config_input(LIMIT_Y2) #else -#define io104_config_input mcu_config_input(LIMIT_Y2);mcu_config_pullup(LIMIT_Y2) +#define io104_config_input \ + mcu_config_input(LIMIT_Y2); \ + mcu_config_pullup(LIMIT_Y2) #endif #define io104_config_pullup mcu_config_pullup(LIMIT_Y2) #define io104_get_input mcu_get_input(LIMIT_Y2) #elif ASSERT_PIN_EXTENDED(LIMIT_Y2) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io104_config_output -#define io104_set_output ic74hc595_set_pin(LIMIT_Y2);ic74hc595_shift_io_pins() -#define io104_clear_output ic74hc595_clear_pin(LIMIT_Y2);ic74hc595_shift_io_pins() -#define io104_toggle_output ic74hc595_toggle_pin(LIMIT_Y2);ic74hc595_shift_io_pins() -#define io104_get_output ic74hc595_get_pin(LIMIT_Y2) -#endif #define io104_config_input #define io104_config_pullup -#define io104_get_input 0 -#else -#define io104_config_output -#define io104_set_output -#define io104_clear_output -#define io104_toggle_output -#define io104_get_output 0 -#define io104_config_input -#define io104_config_pullup -#define io104_get_input 0 +#define io104_get_input ic74hc165_get_pin(LIMIT_Y2) #endif #if ASSERT_PIN_IO(LIMIT_Z2) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3271,30 +1765,16 @@ extern "C" #if !defined(LIMIT_Z2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io105_config_input mcu_config_input(LIMIT_Z2) #else -#define io105_config_input mcu_config_input(LIMIT_Z2);mcu_config_pullup(LIMIT_Z2) +#define io105_config_input \ + mcu_config_input(LIMIT_Z2); \ + mcu_config_pullup(LIMIT_Z2) #endif #define io105_config_pullup mcu_config_pullup(LIMIT_Z2) #define io105_get_input mcu_get_input(LIMIT_Z2) #elif ASSERT_PIN_EXTENDED(LIMIT_Z2) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io105_config_output -#define io105_set_output ic74hc595_set_pin(LIMIT_Z2);ic74hc595_shift_io_pins() -#define io105_clear_output ic74hc595_clear_pin(LIMIT_Z2);ic74hc595_shift_io_pins() -#define io105_toggle_output ic74hc595_toggle_pin(LIMIT_Z2);ic74hc595_shift_io_pins() -#define io105_get_output ic74hc595_get_pin(LIMIT_Z2) -#endif -#define io105_config_input -#define io105_config_pullup -#define io105_get_input 0 -#else -#define io105_config_output -#define io105_set_output -#define io105_clear_output -#define io105_toggle_output -#define io105_get_output 0 #define io105_config_input #define io105_config_pullup -#define io105_get_input 0 +#define io105_get_input ic74hc165_get_pin(LIMIT_Z2) #endif #if ASSERT_PIN_IO(LIMIT_A) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3307,30 +1787,16 @@ extern "C" #if !defined(LIMIT_A_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io106_config_input mcu_config_input(LIMIT_A) #else -#define io106_config_input mcu_config_input(LIMIT_A);mcu_config_pullup(LIMIT_A) +#define io106_config_input \ + mcu_config_input(LIMIT_A); \ + mcu_config_pullup(LIMIT_A) #endif #define io106_config_pullup mcu_config_pullup(LIMIT_A) #define io106_get_input mcu_get_input(LIMIT_A) #elif ASSERT_PIN_EXTENDED(LIMIT_A) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io106_config_output -#define io106_set_output ic74hc595_set_pin(LIMIT_A);ic74hc595_shift_io_pins() -#define io106_clear_output ic74hc595_clear_pin(LIMIT_A);ic74hc595_shift_io_pins() -#define io106_toggle_output ic74hc595_toggle_pin(LIMIT_A);ic74hc595_shift_io_pins() -#define io106_get_output ic74hc595_get_pin(LIMIT_A) -#endif -#define io106_config_input -#define io106_config_pullup -#define io106_get_input 0 -#else -#define io106_config_output -#define io106_set_output -#define io106_clear_output -#define io106_toggle_output -#define io106_get_output 0 #define io106_config_input #define io106_config_pullup -#define io106_get_input 0 +#define io106_get_input ic74hc165_get_pin(LIMIT_A) #endif #if ASSERT_PIN_IO(LIMIT_B) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3343,30 +1809,16 @@ extern "C" #if !defined(LIMIT_B_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io107_config_input mcu_config_input(LIMIT_B) #else -#define io107_config_input mcu_config_input(LIMIT_B);mcu_config_pullup(LIMIT_B) +#define io107_config_input \ + mcu_config_input(LIMIT_B); \ + mcu_config_pullup(LIMIT_B) #endif #define io107_config_pullup mcu_config_pullup(LIMIT_B) #define io107_get_input mcu_get_input(LIMIT_B) #elif ASSERT_PIN_EXTENDED(LIMIT_B) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io107_config_output -#define io107_set_output ic74hc595_set_pin(LIMIT_B);ic74hc595_shift_io_pins() -#define io107_clear_output ic74hc595_clear_pin(LIMIT_B);ic74hc595_shift_io_pins() -#define io107_toggle_output ic74hc595_toggle_pin(LIMIT_B);ic74hc595_shift_io_pins() -#define io107_get_output ic74hc595_get_pin(LIMIT_B) -#endif -#define io107_config_input -#define io107_config_pullup -#define io107_get_input 0 -#else -#define io107_config_output -#define io107_set_output -#define io107_clear_output -#define io107_toggle_output -#define io107_get_output 0 #define io107_config_input #define io107_config_pullup -#define io107_get_input 0 +#define io107_get_input ic74hc165_get_pin(LIMIT_B) #endif #if ASSERT_PIN_IO(LIMIT_C) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3379,30 +1831,16 @@ extern "C" #if !defined(LIMIT_C_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io108_config_input mcu_config_input(LIMIT_C) #else -#define io108_config_input mcu_config_input(LIMIT_C);mcu_config_pullup(LIMIT_C) +#define io108_config_input \ + mcu_config_input(LIMIT_C); \ + mcu_config_pullup(LIMIT_C) #endif #define io108_config_pullup mcu_config_pullup(LIMIT_C) #define io108_get_input mcu_get_input(LIMIT_C) #elif ASSERT_PIN_EXTENDED(LIMIT_C) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io108_config_output -#define io108_set_output ic74hc595_set_pin(LIMIT_C);ic74hc595_shift_io_pins() -#define io108_clear_output ic74hc595_clear_pin(LIMIT_C);ic74hc595_shift_io_pins() -#define io108_toggle_output ic74hc595_toggle_pin(LIMIT_C);ic74hc595_shift_io_pins() -#define io108_get_output ic74hc595_get_pin(LIMIT_C) -#endif #define io108_config_input #define io108_config_pullup -#define io108_get_input 0 -#else -#define io108_config_output -#define io108_set_output -#define io108_clear_output -#define io108_toggle_output -#define io108_get_output 0 -#define io108_config_input -#define io108_config_pullup -#define io108_get_input 0 +#define io108_get_input ic74hc165_get_pin(LIMIT_C) #endif #if ASSERT_PIN_IO(PROBE) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3415,30 +1853,16 @@ extern "C" #if !defined(PROBE_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io109_config_input mcu_config_input(PROBE) #else -#define io109_config_input mcu_config_input(PROBE);mcu_config_pullup(PROBE) +#define io109_config_input \ + mcu_config_input(PROBE); \ + mcu_config_pullup(PROBE) #endif #define io109_config_pullup mcu_config_pullup(PROBE) #define io109_get_input mcu_get_input(PROBE) #elif ASSERT_PIN_EXTENDED(PROBE) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io109_config_output -#define io109_set_output ic74hc595_set_pin(PROBE);ic74hc595_shift_io_pins() -#define io109_clear_output ic74hc595_clear_pin(PROBE);ic74hc595_shift_io_pins() -#define io109_toggle_output ic74hc595_toggle_pin(PROBE);ic74hc595_shift_io_pins() -#define io109_get_output ic74hc595_get_pin(PROBE) -#endif -#define io109_config_input -#define io109_config_pullup -#define io109_get_input 0 -#else -#define io109_config_output -#define io109_set_output -#define io109_clear_output -#define io109_toggle_output -#define io109_get_output 0 #define io109_config_input #define io109_config_pullup -#define io109_get_input 0 +#define io109_get_input ic74hc165_get_pin(PROBE) #endif #if ASSERT_PIN_IO(ESTOP) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3451,30 +1875,16 @@ extern "C" #if !defined(ESTOP_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io110_config_input mcu_config_input(ESTOP) #else -#define io110_config_input mcu_config_input(ESTOP);mcu_config_pullup(ESTOP) +#define io110_config_input \ + mcu_config_input(ESTOP); \ + mcu_config_pullup(ESTOP) #endif #define io110_config_pullup mcu_config_pullup(ESTOP) #define io110_get_input mcu_get_input(ESTOP) #elif ASSERT_PIN_EXTENDED(ESTOP) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io110_config_output -#define io110_set_output ic74hc595_set_pin(ESTOP);ic74hc595_shift_io_pins() -#define io110_clear_output ic74hc595_clear_pin(ESTOP);ic74hc595_shift_io_pins() -#define io110_toggle_output ic74hc595_toggle_pin(ESTOP);ic74hc595_shift_io_pins() -#define io110_get_output ic74hc595_get_pin(ESTOP) -#endif -#define io110_config_input -#define io110_config_pullup -#define io110_get_input 0 -#else -#define io110_config_output -#define io110_set_output -#define io110_clear_output -#define io110_toggle_output -#define io110_get_output 0 #define io110_config_input #define io110_config_pullup -#define io110_get_input 0 +#define io110_get_input ic74hc165_get_pin(ESTOP) #endif #if ASSERT_PIN_IO(SAFETY_DOOR) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3487,30 +1897,16 @@ extern "C" #if !defined(SAFETY_DOOR_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io111_config_input mcu_config_input(SAFETY_DOOR) #else -#define io111_config_input mcu_config_input(SAFETY_DOOR);mcu_config_pullup(SAFETY_DOOR) +#define io111_config_input \ + mcu_config_input(SAFETY_DOOR); \ + mcu_config_pullup(SAFETY_DOOR) #endif #define io111_config_pullup mcu_config_pullup(SAFETY_DOOR) #define io111_get_input mcu_get_input(SAFETY_DOOR) #elif ASSERT_PIN_EXTENDED(SAFETY_DOOR) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io111_config_output -#define io111_set_output ic74hc595_set_pin(SAFETY_DOOR);ic74hc595_shift_io_pins() -#define io111_clear_output ic74hc595_clear_pin(SAFETY_DOOR);ic74hc595_shift_io_pins() -#define io111_toggle_output ic74hc595_toggle_pin(SAFETY_DOOR);ic74hc595_shift_io_pins() -#define io111_get_output ic74hc595_get_pin(SAFETY_DOOR) -#endif -#define io111_config_input -#define io111_config_pullup -#define io111_get_input 0 -#else -#define io111_config_output -#define io111_set_output -#define io111_clear_output -#define io111_toggle_output -#define io111_get_output 0 #define io111_config_input #define io111_config_pullup -#define io111_get_input 0 +#define io111_get_input ic74hc165_get_pin(SAFETY_DOOR) #endif #if ASSERT_PIN_IO(FHOLD) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3523,30 +1919,16 @@ extern "C" #if !defined(FHOLD_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io112_config_input mcu_config_input(FHOLD) #else -#define io112_config_input mcu_config_input(FHOLD);mcu_config_pullup(FHOLD) +#define io112_config_input \ + mcu_config_input(FHOLD); \ + mcu_config_pullup(FHOLD) #endif #define io112_config_pullup mcu_config_pullup(FHOLD) #define io112_get_input mcu_get_input(FHOLD) #elif ASSERT_PIN_EXTENDED(FHOLD) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io112_config_output -#define io112_set_output ic74hc595_set_pin(FHOLD);ic74hc595_shift_io_pins() -#define io112_clear_output ic74hc595_clear_pin(FHOLD);ic74hc595_shift_io_pins() -#define io112_toggle_output ic74hc595_toggle_pin(FHOLD);ic74hc595_shift_io_pins() -#define io112_get_output ic74hc595_get_pin(FHOLD) -#endif #define io112_config_input #define io112_config_pullup -#define io112_get_input 0 -#else -#define io112_config_output -#define io112_set_output -#define io112_clear_output -#define io112_toggle_output -#define io112_get_output 0 -#define io112_config_input -#define io112_config_pullup -#define io112_get_input 0 +#define io112_get_input ic74hc165_get_pin(FHOLD) #endif #if ASSERT_PIN_IO(CS_RES) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3559,121 +1941,175 @@ extern "C" #if !defined(CS_RES_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io113_config_input mcu_config_input(CS_RES) #else -#define io113_config_input mcu_config_input(CS_RES);mcu_config_pullup(CS_RES) +#define io113_config_input \ + mcu_config_input(CS_RES); \ + mcu_config_pullup(CS_RES) #endif #define io113_config_pullup mcu_config_pullup(CS_RES) #define io113_get_input mcu_get_input(CS_RES) #elif ASSERT_PIN_EXTENDED(CS_RES) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io113_config_output -#define io113_set_output ic74hc595_set_pin(CS_RES);ic74hc595_shift_io_pins() -#define io113_clear_output ic74hc595_clear_pin(CS_RES);ic74hc595_shift_io_pins() -#define io113_toggle_output ic74hc595_toggle_pin(CS_RES);ic74hc595_shift_io_pins() -#define io113_get_output ic74hc595_get_pin(CS_RES) -#endif -#define io113_config_input -#define io113_config_pullup -#define io113_get_input 0 -#else -#define io113_config_output -#define io113_set_output -#define io113_clear_output -#define io113_toggle_output -#define io113_get_output 0 #define io113_config_input #define io113_config_pullup -#define io113_get_input 0 +#define io113_get_input ic74hc165_get_pin(CS_RES) #endif - - - - - - - - - - - - - - - - -#if ASSERT_PIN_IO(DIN0) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io130_config_output mcu_config_output(DIN0) -#define io130_set_output mcu_set_output(DIN0) -#define io130_clear_output mcu_clear_output(DIN0) -#define io130_toggle_output mcu_toggle_output(DIN0) -#define io130_get_output mcu_get_output(DIN0) +#if ASSERT_PIN_IO(ANALOG0) +#define io114_config_analog mcu_config_analog(ANALOG0) +#define io114_get_analog mcu_get_analog(ANALOG0) +#elif ASSERT_PIN_EXTENDED(ANALOG0) +#define io114_config_analog +#define io114_get_analog 0 #endif -#if !defined(DIN0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io130_config_input mcu_config_input(DIN0) -#else -#define io130_config_input mcu_config_input(DIN0);mcu_config_pullup(DIN0) +#if ASSERT_PIN_IO(ANALOG1) +#define io115_config_analog mcu_config_analog(ANALOG1) +#define io115_get_analog mcu_get_analog(ANALOG1) +#elif ASSERT_PIN_EXTENDED(ANALOG1) +#define io115_config_analog +#define io115_get_analog 0 #endif -#define io130_config_pullup mcu_config_pullup(DIN0) -#define io130_get_input mcu_get_input(DIN0) -#elif ASSERT_PIN_EXTENDED(DIN0) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io130_config_output -#define io130_set_output ic74hc595_set_pin(DIN0);ic74hc595_shift_io_pins() -#define io130_clear_output ic74hc595_clear_pin(DIN0);ic74hc595_shift_io_pins() -#define io130_toggle_output ic74hc595_toggle_pin(DIN0);ic74hc595_shift_io_pins() -#define io130_get_output ic74hc595_get_pin(DIN0) +#if ASSERT_PIN_IO(ANALOG2) +#define io116_config_analog mcu_config_analog(ANALOG2) +#define io116_get_analog mcu_get_analog(ANALOG2) +#elif ASSERT_PIN_EXTENDED(ANALOG2) +#define io116_config_analog +#define io116_get_analog 0 #endif -#define io130_config_input -#define io130_config_pullup -#define io130_get_input 0 -#else -#define io130_config_output -#define io130_set_output -#define io130_clear_output -#define io130_toggle_output -#define io130_get_output 0 -#define io130_config_input -#define io130_config_pullup -#define io130_get_input 0 +#if ASSERT_PIN_IO(ANALOG3) +#define io117_config_analog mcu_config_analog(ANALOG3) +#define io117_get_analog mcu_get_analog(ANALOG3) +#elif ASSERT_PIN_EXTENDED(ANALOG3) +#define io117_config_analog +#define io117_get_analog 0 #endif -#if ASSERT_PIN_IO(DIN1) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io131_config_output mcu_config_output(DIN1) -#define io131_set_output mcu_set_output(DIN1) -#define io131_clear_output mcu_clear_output(DIN1) -#define io131_toggle_output mcu_toggle_output(DIN1) -#define io131_get_output mcu_get_output(DIN1) +#if ASSERT_PIN_IO(ANALOG4) +#define io118_config_analog mcu_config_analog(ANALOG4) +#define io118_get_analog mcu_get_analog(ANALOG4) +#elif ASSERT_PIN_EXTENDED(ANALOG4) +#define io118_config_analog +#define io118_get_analog 0 #endif -#if !defined(DIN1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) -#define io131_config_input mcu_config_input(DIN1) -#else -#define io131_config_input mcu_config_input(DIN1);mcu_config_pullup(DIN1) +#if ASSERT_PIN_IO(ANALOG5) +#define io119_config_analog mcu_config_analog(ANALOG5) +#define io119_get_analog mcu_get_analog(ANALOG5) +#elif ASSERT_PIN_EXTENDED(ANALOG5) +#define io119_config_analog +#define io119_get_analog 0 #endif -#define io131_config_pullup mcu_config_pullup(DIN1) -#define io131_get_input mcu_get_input(DIN1) -#elif ASSERT_PIN_EXTENDED(DIN1) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io131_config_output -#define io131_set_output ic74hc595_set_pin(DIN1);ic74hc595_shift_io_pins() -#define io131_clear_output ic74hc595_clear_pin(DIN1);ic74hc595_shift_io_pins() -#define io131_toggle_output ic74hc595_toggle_pin(DIN1);ic74hc595_shift_io_pins() -#define io131_get_output ic74hc595_get_pin(DIN1) +#if ASSERT_PIN_IO(ANALOG6) +#define io120_config_analog mcu_config_analog(ANALOG6) +#define io120_get_analog mcu_get_analog(ANALOG6) +#elif ASSERT_PIN_EXTENDED(ANALOG6) +#define io120_config_analog +#define io120_get_analog 0 #endif -#define io131_config_input -#define io131_config_pullup -#define io131_get_input 0 -#else -#define io131_config_output -#define io131_set_output -#define io131_clear_output -#define io131_toggle_output -#define io131_get_output 0 -#define io131_config_input -#define io131_config_pullup -#define io131_get_input 0 +#if ASSERT_PIN_IO(ANALOG7) +#define io121_config_analog mcu_config_analog(ANALOG7) +#define io121_get_analog mcu_get_analog(ANALOG7) +#elif ASSERT_PIN_EXTENDED(ANALOG7) +#define io121_config_analog +#define io121_get_analog 0 #endif -#if ASSERT_PIN_IO(DIN2) -#ifdef DISABLE_HAL_CONFIG_PROTECTION +#if ASSERT_PIN_IO(ANALOG8) +#define io122_config_analog mcu_config_analog(ANALOG8) +#define io122_get_analog mcu_get_analog(ANALOG8) +#elif ASSERT_PIN_EXTENDED(ANALOG8) +#define io122_config_analog +#define io122_get_analog 0 +#endif +#if ASSERT_PIN_IO(ANALOG9) +#define io123_config_analog mcu_config_analog(ANALOG9) +#define io123_get_analog mcu_get_analog(ANALOG9) +#elif ASSERT_PIN_EXTENDED(ANALOG9) +#define io123_config_analog +#define io123_get_analog 0 +#endif +#if ASSERT_PIN_IO(ANALOG10) +#define io124_config_analog mcu_config_analog(ANALOG10) +#define io124_get_analog mcu_get_analog(ANALOG10) +#elif ASSERT_PIN_EXTENDED(ANALOG10) +#define io124_config_analog +#define io124_get_analog 0 +#endif +#if ASSERT_PIN_IO(ANALOG11) +#define io125_config_analog mcu_config_analog(ANALOG11) +#define io125_get_analog mcu_get_analog(ANALOG11) +#elif ASSERT_PIN_EXTENDED(ANALOG11) +#define io125_config_analog +#define io125_get_analog 0 +#endif +#if ASSERT_PIN_IO(ANALOG12) +#define io126_config_analog mcu_config_analog(ANALOG12) +#define io126_get_analog mcu_get_analog(ANALOG12) +#elif ASSERT_PIN_EXTENDED(ANALOG12) +#define io126_config_analog +#define io126_get_analog 0 +#endif +#if ASSERT_PIN_IO(ANALOG13) +#define io127_config_analog mcu_config_analog(ANALOG13) +#define io127_get_analog mcu_get_analog(ANALOG13) +#elif ASSERT_PIN_EXTENDED(ANALOG13) +#define io127_config_analog +#define io127_get_analog 0 +#endif +#if ASSERT_PIN_IO(ANALOG14) +#define io128_config_analog mcu_config_analog(ANALOG14) +#define io128_get_analog mcu_get_analog(ANALOG14) +#elif ASSERT_PIN_EXTENDED(ANALOG14) +#define io128_config_analog +#define io128_get_analog 0 +#endif +#if ASSERT_PIN_IO(ANALOG15) +#define io129_config_analog mcu_config_analog(ANALOG15) +#define io129_get_analog mcu_get_analog(ANALOG15) +#elif ASSERT_PIN_EXTENDED(ANALOG15) +#define io129_config_analog +#define io129_get_analog 0 +#endif +#if ASSERT_PIN_IO(DIN0) +#ifdef DISABLE_HAL_CONFIG_PROTECTION +#define io130_config_output mcu_config_output(DIN0) +#define io130_set_output mcu_set_output(DIN0) +#define io130_clear_output mcu_clear_output(DIN0) +#define io130_toggle_output mcu_toggle_output(DIN0) +#define io130_get_output mcu_get_output(DIN0) +#endif +#if !defined(DIN0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) +#define io130_config_input mcu_config_input(DIN0) +#else +#define io130_config_input \ + mcu_config_input(DIN0); \ + mcu_config_pullup(DIN0) +#endif +#define io130_config_pullup mcu_config_pullup(DIN0) +#define io130_get_input mcu_get_input(DIN0) +#elif ASSERT_PIN_EXTENDED(DIN0) +#define io130_config_input +#define io130_config_pullup +#define io130_get_input ic74hc165_get_pin(DIN0) +#endif +#if ASSERT_PIN_IO(DIN1) +#ifdef DISABLE_HAL_CONFIG_PROTECTION +#define io131_config_output mcu_config_output(DIN1) +#define io131_set_output mcu_set_output(DIN1) +#define io131_clear_output mcu_clear_output(DIN1) +#define io131_toggle_output mcu_toggle_output(DIN1) +#define io131_get_output mcu_get_output(DIN1) +#endif +#if !defined(DIN1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) +#define io131_config_input mcu_config_input(DIN1) +#else +#define io131_config_input \ + mcu_config_input(DIN1); \ + mcu_config_pullup(DIN1) +#endif +#define io131_config_pullup mcu_config_pullup(DIN1) +#define io131_get_input mcu_get_input(DIN1) +#elif ASSERT_PIN_EXTENDED(DIN1) +#define io131_config_input +#define io131_config_pullup +#define io131_get_input ic74hc165_get_pin(DIN1) +#endif +#if ASSERT_PIN_IO(DIN2) +#ifdef DISABLE_HAL_CONFIG_PROTECTION #define io132_config_output mcu_config_output(DIN2) #define io132_set_output mcu_set_output(DIN2) #define io132_clear_output mcu_clear_output(DIN2) @@ -3683,30 +2119,16 @@ extern "C" #if !defined(DIN2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io132_config_input mcu_config_input(DIN2) #else -#define io132_config_input mcu_config_input(DIN2);mcu_config_pullup(DIN2) +#define io132_config_input \ + mcu_config_input(DIN2); \ + mcu_config_pullup(DIN2) #endif #define io132_config_pullup mcu_config_pullup(DIN2) #define io132_get_input mcu_get_input(DIN2) #elif ASSERT_PIN_EXTENDED(DIN2) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io132_config_output -#define io132_set_output ic74hc595_set_pin(DIN2);ic74hc595_shift_io_pins() -#define io132_clear_output ic74hc595_clear_pin(DIN2);ic74hc595_shift_io_pins() -#define io132_toggle_output ic74hc595_toggle_pin(DIN2);ic74hc595_shift_io_pins() -#define io132_get_output ic74hc595_get_pin(DIN2) -#endif #define io132_config_input #define io132_config_pullup -#define io132_get_input 0 -#else -#define io132_config_output -#define io132_set_output -#define io132_clear_output -#define io132_toggle_output -#define io132_get_output 0 -#define io132_config_input -#define io132_config_pullup -#define io132_get_input 0 +#define io132_get_input ic74hc165_get_pin(DIN2) #endif #if ASSERT_PIN_IO(DIN3) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3719,30 +2141,16 @@ extern "C" #if !defined(DIN3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io133_config_input mcu_config_input(DIN3) #else -#define io133_config_input mcu_config_input(DIN3);mcu_config_pullup(DIN3) +#define io133_config_input \ + mcu_config_input(DIN3); \ + mcu_config_pullup(DIN3) #endif #define io133_config_pullup mcu_config_pullup(DIN3) #define io133_get_input mcu_get_input(DIN3) #elif ASSERT_PIN_EXTENDED(DIN3) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io133_config_output -#define io133_set_output ic74hc595_set_pin(DIN3);ic74hc595_shift_io_pins() -#define io133_clear_output ic74hc595_clear_pin(DIN3);ic74hc595_shift_io_pins() -#define io133_toggle_output ic74hc595_toggle_pin(DIN3);ic74hc595_shift_io_pins() -#define io133_get_output ic74hc595_get_pin(DIN3) -#endif -#define io133_config_input -#define io133_config_pullup -#define io133_get_input 0 -#else -#define io133_config_output -#define io133_set_output -#define io133_clear_output -#define io133_toggle_output -#define io133_get_output 0 #define io133_config_input #define io133_config_pullup -#define io133_get_input 0 +#define io133_get_input ic74hc165_get_pin(DIN3) #endif #if ASSERT_PIN_IO(DIN4) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3755,30 +2163,16 @@ extern "C" #if !defined(DIN4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io134_config_input mcu_config_input(DIN4) #else -#define io134_config_input mcu_config_input(DIN4);mcu_config_pullup(DIN4) +#define io134_config_input \ + mcu_config_input(DIN4); \ + mcu_config_pullup(DIN4) #endif #define io134_config_pullup mcu_config_pullup(DIN4) #define io134_get_input mcu_get_input(DIN4) #elif ASSERT_PIN_EXTENDED(DIN4) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io134_config_output -#define io134_set_output ic74hc595_set_pin(DIN4);ic74hc595_shift_io_pins() -#define io134_clear_output ic74hc595_clear_pin(DIN4);ic74hc595_shift_io_pins() -#define io134_toggle_output ic74hc595_toggle_pin(DIN4);ic74hc595_shift_io_pins() -#define io134_get_output ic74hc595_get_pin(DIN4) -#endif -#define io134_config_input -#define io134_config_pullup -#define io134_get_input 0 -#else -#define io134_config_output -#define io134_set_output -#define io134_clear_output -#define io134_toggle_output -#define io134_get_output 0 #define io134_config_input #define io134_config_pullup -#define io134_get_input 0 +#define io134_get_input ic74hc165_get_pin(DIN4) #endif #if ASSERT_PIN_IO(DIN5) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3791,30 +2185,16 @@ extern "C" #if !defined(DIN5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io135_config_input mcu_config_input(DIN5) #else -#define io135_config_input mcu_config_input(DIN5);mcu_config_pullup(DIN5) +#define io135_config_input \ + mcu_config_input(DIN5); \ + mcu_config_pullup(DIN5) #endif #define io135_config_pullup mcu_config_pullup(DIN5) #define io135_get_input mcu_get_input(DIN5) #elif ASSERT_PIN_EXTENDED(DIN5) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io135_config_output -#define io135_set_output ic74hc595_set_pin(DIN5);ic74hc595_shift_io_pins() -#define io135_clear_output ic74hc595_clear_pin(DIN5);ic74hc595_shift_io_pins() -#define io135_toggle_output ic74hc595_toggle_pin(DIN5);ic74hc595_shift_io_pins() -#define io135_get_output ic74hc595_get_pin(DIN5) -#endif -#define io135_config_input -#define io135_config_pullup -#define io135_get_input 0 -#else -#define io135_config_output -#define io135_set_output -#define io135_clear_output -#define io135_toggle_output -#define io135_get_output 0 #define io135_config_input #define io135_config_pullup -#define io135_get_input 0 +#define io135_get_input ic74hc165_get_pin(DIN5) #endif #if ASSERT_PIN_IO(DIN6) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3827,30 +2207,16 @@ extern "C" #if !defined(DIN6_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io136_config_input mcu_config_input(DIN6) #else -#define io136_config_input mcu_config_input(DIN6);mcu_config_pullup(DIN6) +#define io136_config_input \ + mcu_config_input(DIN6); \ + mcu_config_pullup(DIN6) #endif #define io136_config_pullup mcu_config_pullup(DIN6) #define io136_get_input mcu_get_input(DIN6) #elif ASSERT_PIN_EXTENDED(DIN6) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io136_config_output -#define io136_set_output ic74hc595_set_pin(DIN6);ic74hc595_shift_io_pins() -#define io136_clear_output ic74hc595_clear_pin(DIN6);ic74hc595_shift_io_pins() -#define io136_toggle_output ic74hc595_toggle_pin(DIN6);ic74hc595_shift_io_pins() -#define io136_get_output ic74hc595_get_pin(DIN6) -#endif #define io136_config_input #define io136_config_pullup -#define io136_get_input 0 -#else -#define io136_config_output -#define io136_set_output -#define io136_clear_output -#define io136_toggle_output -#define io136_get_output 0 -#define io136_config_input -#define io136_config_pullup -#define io136_get_input 0 +#define io136_get_input ic74hc165_get_pin(DIN6) #endif #if ASSERT_PIN_IO(DIN7) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3863,30 +2229,16 @@ extern "C" #if !defined(DIN7_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io137_config_input mcu_config_input(DIN7) #else -#define io137_config_input mcu_config_input(DIN7);mcu_config_pullup(DIN7) +#define io137_config_input \ + mcu_config_input(DIN7); \ + mcu_config_pullup(DIN7) #endif #define io137_config_pullup mcu_config_pullup(DIN7) #define io137_get_input mcu_get_input(DIN7) #elif ASSERT_PIN_EXTENDED(DIN7) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io137_config_output -#define io137_set_output ic74hc595_set_pin(DIN7);ic74hc595_shift_io_pins() -#define io137_clear_output ic74hc595_clear_pin(DIN7);ic74hc595_shift_io_pins() -#define io137_toggle_output ic74hc595_toggle_pin(DIN7);ic74hc595_shift_io_pins() -#define io137_get_output ic74hc595_get_pin(DIN7) -#endif -#define io137_config_input -#define io137_config_pullup -#define io137_get_input 0 -#else -#define io137_config_output -#define io137_set_output -#define io137_clear_output -#define io137_toggle_output -#define io137_get_output 0 #define io137_config_input #define io137_config_pullup -#define io137_get_input 0 +#define io137_get_input ic74hc165_get_pin(DIN7) #endif #if ASSERT_PIN_IO(DIN8) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3899,30 +2251,16 @@ extern "C" #if !defined(DIN8_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io138_config_input mcu_config_input(DIN8) #else -#define io138_config_input mcu_config_input(DIN8);mcu_config_pullup(DIN8) +#define io138_config_input \ + mcu_config_input(DIN8); \ + mcu_config_pullup(DIN8) #endif #define io138_config_pullup mcu_config_pullup(DIN8) #define io138_get_input mcu_get_input(DIN8) #elif ASSERT_PIN_EXTENDED(DIN8) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io138_config_output -#define io138_set_output ic74hc595_set_pin(DIN8);ic74hc595_shift_io_pins() -#define io138_clear_output ic74hc595_clear_pin(DIN8);ic74hc595_shift_io_pins() -#define io138_toggle_output ic74hc595_toggle_pin(DIN8);ic74hc595_shift_io_pins() -#define io138_get_output ic74hc595_get_pin(DIN8) -#endif -#define io138_config_input -#define io138_config_pullup -#define io138_get_input 0 -#else -#define io138_config_output -#define io138_set_output -#define io138_clear_output -#define io138_toggle_output -#define io138_get_output 0 #define io138_config_input #define io138_config_pullup -#define io138_get_input 0 +#define io138_get_input ic74hc165_get_pin(DIN8) #endif #if ASSERT_PIN_IO(DIN9) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3935,30 +2273,16 @@ extern "C" #if !defined(DIN9_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io139_config_input mcu_config_input(DIN9) #else -#define io139_config_input mcu_config_input(DIN9);mcu_config_pullup(DIN9) +#define io139_config_input \ + mcu_config_input(DIN9); \ + mcu_config_pullup(DIN9) #endif #define io139_config_pullup mcu_config_pullup(DIN9) #define io139_get_input mcu_get_input(DIN9) #elif ASSERT_PIN_EXTENDED(DIN9) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io139_config_output -#define io139_set_output ic74hc595_set_pin(DIN9);ic74hc595_shift_io_pins() -#define io139_clear_output ic74hc595_clear_pin(DIN9);ic74hc595_shift_io_pins() -#define io139_toggle_output ic74hc595_toggle_pin(DIN9);ic74hc595_shift_io_pins() -#define io139_get_output ic74hc595_get_pin(DIN9) -#endif -#define io139_config_input -#define io139_config_pullup -#define io139_get_input 0 -#else -#define io139_config_output -#define io139_set_output -#define io139_clear_output -#define io139_toggle_output -#define io139_get_output 0 #define io139_config_input #define io139_config_pullup -#define io139_get_input 0 +#define io139_get_input ic74hc165_get_pin(DIN9) #endif #if ASSERT_PIN_IO(DIN10) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -3971,30 +2295,16 @@ extern "C" #if !defined(DIN10_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io140_config_input mcu_config_input(DIN10) #else -#define io140_config_input mcu_config_input(DIN10);mcu_config_pullup(DIN10) +#define io140_config_input \ + mcu_config_input(DIN10); \ + mcu_config_pullup(DIN10) #endif #define io140_config_pullup mcu_config_pullup(DIN10) #define io140_get_input mcu_get_input(DIN10) #elif ASSERT_PIN_EXTENDED(DIN10) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io140_config_output -#define io140_set_output ic74hc595_set_pin(DIN10);ic74hc595_shift_io_pins() -#define io140_clear_output ic74hc595_clear_pin(DIN10);ic74hc595_shift_io_pins() -#define io140_toggle_output ic74hc595_toggle_pin(DIN10);ic74hc595_shift_io_pins() -#define io140_get_output ic74hc595_get_pin(DIN10) -#endif #define io140_config_input #define io140_config_pullup -#define io140_get_input 0 -#else -#define io140_config_output -#define io140_set_output -#define io140_clear_output -#define io140_toggle_output -#define io140_get_output 0 -#define io140_config_input -#define io140_config_pullup -#define io140_get_input 0 +#define io140_get_input ic74hc165_get_pin(DIN10) #endif #if ASSERT_PIN_IO(DIN11) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4007,30 +2317,16 @@ extern "C" #if !defined(DIN11_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io141_config_input mcu_config_input(DIN11) #else -#define io141_config_input mcu_config_input(DIN11);mcu_config_pullup(DIN11) +#define io141_config_input \ + mcu_config_input(DIN11); \ + mcu_config_pullup(DIN11) #endif #define io141_config_pullup mcu_config_pullup(DIN11) #define io141_get_input mcu_get_input(DIN11) #elif ASSERT_PIN_EXTENDED(DIN11) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io141_config_output -#define io141_set_output ic74hc595_set_pin(DIN11);ic74hc595_shift_io_pins() -#define io141_clear_output ic74hc595_clear_pin(DIN11);ic74hc595_shift_io_pins() -#define io141_toggle_output ic74hc595_toggle_pin(DIN11);ic74hc595_shift_io_pins() -#define io141_get_output ic74hc595_get_pin(DIN11) -#endif -#define io141_config_input -#define io141_config_pullup -#define io141_get_input 0 -#else -#define io141_config_output -#define io141_set_output -#define io141_clear_output -#define io141_toggle_output -#define io141_get_output 0 #define io141_config_input #define io141_config_pullup -#define io141_get_input 0 +#define io141_get_input ic74hc165_get_pin(DIN11) #endif #if ASSERT_PIN_IO(DIN12) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4043,30 +2339,16 @@ extern "C" #if !defined(DIN12_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io142_config_input mcu_config_input(DIN12) #else -#define io142_config_input mcu_config_input(DIN12);mcu_config_pullup(DIN12) +#define io142_config_input \ + mcu_config_input(DIN12); \ + mcu_config_pullup(DIN12) #endif #define io142_config_pullup mcu_config_pullup(DIN12) #define io142_get_input mcu_get_input(DIN12) #elif ASSERT_PIN_EXTENDED(DIN12) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io142_config_output -#define io142_set_output ic74hc595_set_pin(DIN12);ic74hc595_shift_io_pins() -#define io142_clear_output ic74hc595_clear_pin(DIN12);ic74hc595_shift_io_pins() -#define io142_toggle_output ic74hc595_toggle_pin(DIN12);ic74hc595_shift_io_pins() -#define io142_get_output ic74hc595_get_pin(DIN12) -#endif -#define io142_config_input -#define io142_config_pullup -#define io142_get_input 0 -#else -#define io142_config_output -#define io142_set_output -#define io142_clear_output -#define io142_toggle_output -#define io142_get_output 0 #define io142_config_input #define io142_config_pullup -#define io142_get_input 0 +#define io142_get_input ic74hc165_get_pin(DIN12) #endif #if ASSERT_PIN_IO(DIN13) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4079,30 +2361,16 @@ extern "C" #if !defined(DIN13_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io143_config_input mcu_config_input(DIN13) #else -#define io143_config_input mcu_config_input(DIN13);mcu_config_pullup(DIN13) +#define io143_config_input \ + mcu_config_input(DIN13); \ + mcu_config_pullup(DIN13) #endif #define io143_config_pullup mcu_config_pullup(DIN13) #define io143_get_input mcu_get_input(DIN13) #elif ASSERT_PIN_EXTENDED(DIN13) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io143_config_output -#define io143_set_output ic74hc595_set_pin(DIN13);ic74hc595_shift_io_pins() -#define io143_clear_output ic74hc595_clear_pin(DIN13);ic74hc595_shift_io_pins() -#define io143_toggle_output ic74hc595_toggle_pin(DIN13);ic74hc595_shift_io_pins() -#define io143_get_output ic74hc595_get_pin(DIN13) -#endif -#define io143_config_input -#define io143_config_pullup -#define io143_get_input 0 -#else -#define io143_config_output -#define io143_set_output -#define io143_clear_output -#define io143_toggle_output -#define io143_get_output 0 #define io143_config_input #define io143_config_pullup -#define io143_get_input 0 +#define io143_get_input ic74hc165_get_pin(DIN13) #endif #if ASSERT_PIN_IO(DIN14) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4115,30 +2383,16 @@ extern "C" #if !defined(DIN14_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io144_config_input mcu_config_input(DIN14) #else -#define io144_config_input mcu_config_input(DIN14);mcu_config_pullup(DIN14) +#define io144_config_input \ + mcu_config_input(DIN14); \ + mcu_config_pullup(DIN14) #endif #define io144_config_pullup mcu_config_pullup(DIN14) #define io144_get_input mcu_get_input(DIN14) #elif ASSERT_PIN_EXTENDED(DIN14) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io144_config_output -#define io144_set_output ic74hc595_set_pin(DIN14);ic74hc595_shift_io_pins() -#define io144_clear_output ic74hc595_clear_pin(DIN14);ic74hc595_shift_io_pins() -#define io144_toggle_output ic74hc595_toggle_pin(DIN14);ic74hc595_shift_io_pins() -#define io144_get_output ic74hc595_get_pin(DIN14) -#endif #define io144_config_input #define io144_config_pullup -#define io144_get_input 0 -#else -#define io144_config_output -#define io144_set_output -#define io144_clear_output -#define io144_toggle_output -#define io144_get_output 0 -#define io144_config_input -#define io144_config_pullup -#define io144_get_input 0 +#define io144_get_input ic74hc165_get_pin(DIN14) #endif #if ASSERT_PIN_IO(DIN15) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4151,30 +2405,16 @@ extern "C" #if !defined(DIN15_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io145_config_input mcu_config_input(DIN15) #else -#define io145_config_input mcu_config_input(DIN15);mcu_config_pullup(DIN15) +#define io145_config_input \ + mcu_config_input(DIN15); \ + mcu_config_pullup(DIN15) #endif #define io145_config_pullup mcu_config_pullup(DIN15) #define io145_get_input mcu_get_input(DIN15) #elif ASSERT_PIN_EXTENDED(DIN15) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io145_config_output -#define io145_set_output ic74hc595_set_pin(DIN15);ic74hc595_shift_io_pins() -#define io145_clear_output ic74hc595_clear_pin(DIN15);ic74hc595_shift_io_pins() -#define io145_toggle_output ic74hc595_toggle_pin(DIN15);ic74hc595_shift_io_pins() -#define io145_get_output ic74hc595_get_pin(DIN15) -#endif -#define io145_config_input -#define io145_config_pullup -#define io145_get_input 0 -#else -#define io145_config_output -#define io145_set_output -#define io145_clear_output -#define io145_toggle_output -#define io145_get_output 0 #define io145_config_input #define io145_config_pullup -#define io145_get_input 0 +#define io145_get_input ic74hc165_get_pin(DIN15) #endif #if ASSERT_PIN_IO(DIN16) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4187,30 +2427,16 @@ extern "C" #if !defined(DIN16_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io146_config_input mcu_config_input(DIN16) #else -#define io146_config_input mcu_config_input(DIN16);mcu_config_pullup(DIN16) +#define io146_config_input \ + mcu_config_input(DIN16); \ + mcu_config_pullup(DIN16) #endif #define io146_config_pullup mcu_config_pullup(DIN16) #define io146_get_input mcu_get_input(DIN16) #elif ASSERT_PIN_EXTENDED(DIN16) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io146_config_output -#define io146_set_output ic74hc595_set_pin(DIN16);ic74hc595_shift_io_pins() -#define io146_clear_output ic74hc595_clear_pin(DIN16);ic74hc595_shift_io_pins() -#define io146_toggle_output ic74hc595_toggle_pin(DIN16);ic74hc595_shift_io_pins() -#define io146_get_output ic74hc595_get_pin(DIN16) -#endif -#define io146_config_input -#define io146_config_pullup -#define io146_get_input 0 -#else -#define io146_config_output -#define io146_set_output -#define io146_clear_output -#define io146_toggle_output -#define io146_get_output 0 #define io146_config_input #define io146_config_pullup -#define io146_get_input 0 +#define io146_get_input ic74hc165_get_pin(DIN16) #endif #if ASSERT_PIN_IO(DIN17) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4223,30 +2449,16 @@ extern "C" #if !defined(DIN17_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io147_config_input mcu_config_input(DIN17) #else -#define io147_config_input mcu_config_input(DIN17);mcu_config_pullup(DIN17) +#define io147_config_input \ + mcu_config_input(DIN17); \ + mcu_config_pullup(DIN17) #endif #define io147_config_pullup mcu_config_pullup(DIN17) #define io147_get_input mcu_get_input(DIN17) #elif ASSERT_PIN_EXTENDED(DIN17) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io147_config_output -#define io147_set_output ic74hc595_set_pin(DIN17);ic74hc595_shift_io_pins() -#define io147_clear_output ic74hc595_clear_pin(DIN17);ic74hc595_shift_io_pins() -#define io147_toggle_output ic74hc595_toggle_pin(DIN17);ic74hc595_shift_io_pins() -#define io147_get_output ic74hc595_get_pin(DIN17) -#endif -#define io147_config_input -#define io147_config_pullup -#define io147_get_input 0 -#else -#define io147_config_output -#define io147_set_output -#define io147_clear_output -#define io147_toggle_output -#define io147_get_output 0 #define io147_config_input #define io147_config_pullup -#define io147_get_input 0 +#define io147_get_input ic74hc165_get_pin(DIN17) #endif #if ASSERT_PIN_IO(DIN18) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4259,30 +2471,16 @@ extern "C" #if !defined(DIN18_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io148_config_input mcu_config_input(DIN18) #else -#define io148_config_input mcu_config_input(DIN18);mcu_config_pullup(DIN18) +#define io148_config_input \ + mcu_config_input(DIN18); \ + mcu_config_pullup(DIN18) #endif #define io148_config_pullup mcu_config_pullup(DIN18) #define io148_get_input mcu_get_input(DIN18) #elif ASSERT_PIN_EXTENDED(DIN18) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io148_config_output -#define io148_set_output ic74hc595_set_pin(DIN18);ic74hc595_shift_io_pins() -#define io148_clear_output ic74hc595_clear_pin(DIN18);ic74hc595_shift_io_pins() -#define io148_toggle_output ic74hc595_toggle_pin(DIN18);ic74hc595_shift_io_pins() -#define io148_get_output ic74hc595_get_pin(DIN18) -#endif #define io148_config_input #define io148_config_pullup -#define io148_get_input 0 -#else -#define io148_config_output -#define io148_set_output -#define io148_clear_output -#define io148_toggle_output -#define io148_get_output 0 -#define io148_config_input -#define io148_config_pullup -#define io148_get_input 0 +#define io148_get_input ic74hc165_get_pin(DIN18) #endif #if ASSERT_PIN_IO(DIN19) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4295,30 +2493,16 @@ extern "C" #if !defined(DIN19_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io149_config_input mcu_config_input(DIN19) #else -#define io149_config_input mcu_config_input(DIN19);mcu_config_pullup(DIN19) +#define io149_config_input \ + mcu_config_input(DIN19); \ + mcu_config_pullup(DIN19) #endif #define io149_config_pullup mcu_config_pullup(DIN19) #define io149_get_input mcu_get_input(DIN19) #elif ASSERT_PIN_EXTENDED(DIN19) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io149_config_output -#define io149_set_output ic74hc595_set_pin(DIN19);ic74hc595_shift_io_pins() -#define io149_clear_output ic74hc595_clear_pin(DIN19);ic74hc595_shift_io_pins() -#define io149_toggle_output ic74hc595_toggle_pin(DIN19);ic74hc595_shift_io_pins() -#define io149_get_output ic74hc595_get_pin(DIN19) -#endif -#define io149_config_input -#define io149_config_pullup -#define io149_get_input 0 -#else -#define io149_config_output -#define io149_set_output -#define io149_clear_output -#define io149_toggle_output -#define io149_get_output 0 #define io149_config_input #define io149_config_pullup -#define io149_get_input 0 +#define io149_get_input ic74hc165_get_pin(DIN19) #endif #if ASSERT_PIN_IO(DIN20) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4331,30 +2515,16 @@ extern "C" #if !defined(DIN20_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io150_config_input mcu_config_input(DIN20) #else -#define io150_config_input mcu_config_input(DIN20);mcu_config_pullup(DIN20) +#define io150_config_input \ + mcu_config_input(DIN20); \ + mcu_config_pullup(DIN20) #endif #define io150_config_pullup mcu_config_pullup(DIN20) #define io150_get_input mcu_get_input(DIN20) #elif ASSERT_PIN_EXTENDED(DIN20) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io150_config_output -#define io150_set_output ic74hc595_set_pin(DIN20);ic74hc595_shift_io_pins() -#define io150_clear_output ic74hc595_clear_pin(DIN20);ic74hc595_shift_io_pins() -#define io150_toggle_output ic74hc595_toggle_pin(DIN20);ic74hc595_shift_io_pins() -#define io150_get_output ic74hc595_get_pin(DIN20) -#endif -#define io150_config_input -#define io150_config_pullup -#define io150_get_input 0 -#else -#define io150_config_output -#define io150_set_output -#define io150_clear_output -#define io150_toggle_output -#define io150_get_output 0 #define io150_config_input #define io150_config_pullup -#define io150_get_input 0 +#define io150_get_input ic74hc165_get_pin(DIN20) #endif #if ASSERT_PIN_IO(DIN21) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4367,30 +2537,16 @@ extern "C" #if !defined(DIN21_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io151_config_input mcu_config_input(DIN21) #else -#define io151_config_input mcu_config_input(DIN21);mcu_config_pullup(DIN21) +#define io151_config_input \ + mcu_config_input(DIN21); \ + mcu_config_pullup(DIN21) #endif #define io151_config_pullup mcu_config_pullup(DIN21) #define io151_get_input mcu_get_input(DIN21) #elif ASSERT_PIN_EXTENDED(DIN21) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io151_config_output -#define io151_set_output ic74hc595_set_pin(DIN21);ic74hc595_shift_io_pins() -#define io151_clear_output ic74hc595_clear_pin(DIN21);ic74hc595_shift_io_pins() -#define io151_toggle_output ic74hc595_toggle_pin(DIN21);ic74hc595_shift_io_pins() -#define io151_get_output ic74hc595_get_pin(DIN21) -#endif -#define io151_config_input -#define io151_config_pullup -#define io151_get_input 0 -#else -#define io151_config_output -#define io151_set_output -#define io151_clear_output -#define io151_toggle_output -#define io151_get_output 0 #define io151_config_input #define io151_config_pullup -#define io151_get_input 0 +#define io151_get_input ic74hc165_get_pin(DIN21) #endif #if ASSERT_PIN_IO(DIN22) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4403,30 +2559,16 @@ extern "C" #if !defined(DIN22_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io152_config_input mcu_config_input(DIN22) #else -#define io152_config_input mcu_config_input(DIN22);mcu_config_pullup(DIN22) +#define io152_config_input \ + mcu_config_input(DIN22); \ + mcu_config_pullup(DIN22) #endif #define io152_config_pullup mcu_config_pullup(DIN22) #define io152_get_input mcu_get_input(DIN22) #elif ASSERT_PIN_EXTENDED(DIN22) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io152_config_output -#define io152_set_output ic74hc595_set_pin(DIN22);ic74hc595_shift_io_pins() -#define io152_clear_output ic74hc595_clear_pin(DIN22);ic74hc595_shift_io_pins() -#define io152_toggle_output ic74hc595_toggle_pin(DIN22);ic74hc595_shift_io_pins() -#define io152_get_output ic74hc595_get_pin(DIN22) -#endif #define io152_config_input #define io152_config_pullup -#define io152_get_input 0 -#else -#define io152_config_output -#define io152_set_output -#define io152_clear_output -#define io152_toggle_output -#define io152_get_output 0 -#define io152_config_input -#define io152_config_pullup -#define io152_get_input 0 +#define io152_get_input ic74hc165_get_pin(DIN22) #endif #if ASSERT_PIN_IO(DIN23) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4439,30 +2581,16 @@ extern "C" #if !defined(DIN23_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io153_config_input mcu_config_input(DIN23) #else -#define io153_config_input mcu_config_input(DIN23);mcu_config_pullup(DIN23) +#define io153_config_input \ + mcu_config_input(DIN23); \ + mcu_config_pullup(DIN23) #endif #define io153_config_pullup mcu_config_pullup(DIN23) #define io153_get_input mcu_get_input(DIN23) #elif ASSERT_PIN_EXTENDED(DIN23) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io153_config_output -#define io153_set_output ic74hc595_set_pin(DIN23);ic74hc595_shift_io_pins() -#define io153_clear_output ic74hc595_clear_pin(DIN23);ic74hc595_shift_io_pins() -#define io153_toggle_output ic74hc595_toggle_pin(DIN23);ic74hc595_shift_io_pins() -#define io153_get_output ic74hc595_get_pin(DIN23) -#endif -#define io153_config_input -#define io153_config_pullup -#define io153_get_input 0 -#else -#define io153_config_output -#define io153_set_output -#define io153_clear_output -#define io153_toggle_output -#define io153_get_output 0 #define io153_config_input #define io153_config_pullup -#define io153_get_input 0 +#define io153_get_input ic74hc165_get_pin(DIN23) #endif #if ASSERT_PIN_IO(DIN24) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4475,30 +2603,16 @@ extern "C" #if !defined(DIN24_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io154_config_input mcu_config_input(DIN24) #else -#define io154_config_input mcu_config_input(DIN24);mcu_config_pullup(DIN24) +#define io154_config_input \ + mcu_config_input(DIN24); \ + mcu_config_pullup(DIN24) #endif #define io154_config_pullup mcu_config_pullup(DIN24) #define io154_get_input mcu_get_input(DIN24) #elif ASSERT_PIN_EXTENDED(DIN24) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io154_config_output -#define io154_set_output ic74hc595_set_pin(DIN24);ic74hc595_shift_io_pins() -#define io154_clear_output ic74hc595_clear_pin(DIN24);ic74hc595_shift_io_pins() -#define io154_toggle_output ic74hc595_toggle_pin(DIN24);ic74hc595_shift_io_pins() -#define io154_get_output ic74hc595_get_pin(DIN24) -#endif -#define io154_config_input -#define io154_config_pullup -#define io154_get_input 0 -#else -#define io154_config_output -#define io154_set_output -#define io154_clear_output -#define io154_toggle_output -#define io154_get_output 0 #define io154_config_input #define io154_config_pullup -#define io154_get_input 0 +#define io154_get_input ic74hc165_get_pin(DIN24) #endif #if ASSERT_PIN_IO(DIN25) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4511,30 +2625,16 @@ extern "C" #if !defined(DIN25_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io155_config_input mcu_config_input(DIN25) #else -#define io155_config_input mcu_config_input(DIN25);mcu_config_pullup(DIN25) +#define io155_config_input \ + mcu_config_input(DIN25); \ + mcu_config_pullup(DIN25) #endif #define io155_config_pullup mcu_config_pullup(DIN25) #define io155_get_input mcu_get_input(DIN25) #elif ASSERT_PIN_EXTENDED(DIN25) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io155_config_output -#define io155_set_output ic74hc595_set_pin(DIN25);ic74hc595_shift_io_pins() -#define io155_clear_output ic74hc595_clear_pin(DIN25);ic74hc595_shift_io_pins() -#define io155_toggle_output ic74hc595_toggle_pin(DIN25);ic74hc595_shift_io_pins() -#define io155_get_output ic74hc595_get_pin(DIN25) -#endif -#define io155_config_input -#define io155_config_pullup -#define io155_get_input 0 -#else -#define io155_config_output -#define io155_set_output -#define io155_clear_output -#define io155_toggle_output -#define io155_get_output 0 #define io155_config_input #define io155_config_pullup -#define io155_get_input 0 +#define io155_get_input ic74hc165_get_pin(DIN25) #endif #if ASSERT_PIN_IO(DIN26) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4547,30 +2647,16 @@ extern "C" #if !defined(DIN26_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io156_config_input mcu_config_input(DIN26) #else -#define io156_config_input mcu_config_input(DIN26);mcu_config_pullup(DIN26) +#define io156_config_input \ + mcu_config_input(DIN26); \ + mcu_config_pullup(DIN26) #endif #define io156_config_pullup mcu_config_pullup(DIN26) #define io156_get_input mcu_get_input(DIN26) #elif ASSERT_PIN_EXTENDED(DIN26) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io156_config_output -#define io156_set_output ic74hc595_set_pin(DIN26);ic74hc595_shift_io_pins() -#define io156_clear_output ic74hc595_clear_pin(DIN26);ic74hc595_shift_io_pins() -#define io156_toggle_output ic74hc595_toggle_pin(DIN26);ic74hc595_shift_io_pins() -#define io156_get_output ic74hc595_get_pin(DIN26) -#endif #define io156_config_input #define io156_config_pullup -#define io156_get_input 0 -#else -#define io156_config_output -#define io156_set_output -#define io156_clear_output -#define io156_toggle_output -#define io156_get_output 0 -#define io156_config_input -#define io156_config_pullup -#define io156_get_input 0 +#define io156_get_input ic74hc165_get_pin(DIN26) #endif #if ASSERT_PIN_IO(DIN27) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4583,30 +2669,16 @@ extern "C" #if !defined(DIN27_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io157_config_input mcu_config_input(DIN27) #else -#define io157_config_input mcu_config_input(DIN27);mcu_config_pullup(DIN27) +#define io157_config_input \ + mcu_config_input(DIN27); \ + mcu_config_pullup(DIN27) #endif #define io157_config_pullup mcu_config_pullup(DIN27) #define io157_get_input mcu_get_input(DIN27) #elif ASSERT_PIN_EXTENDED(DIN27) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io157_config_output -#define io157_set_output ic74hc595_set_pin(DIN27);ic74hc595_shift_io_pins() -#define io157_clear_output ic74hc595_clear_pin(DIN27);ic74hc595_shift_io_pins() -#define io157_toggle_output ic74hc595_toggle_pin(DIN27);ic74hc595_shift_io_pins() -#define io157_get_output ic74hc595_get_pin(DIN27) -#endif -#define io157_config_input -#define io157_config_pullup -#define io157_get_input 0 -#else -#define io157_config_output -#define io157_set_output -#define io157_clear_output -#define io157_toggle_output -#define io157_get_output 0 #define io157_config_input #define io157_config_pullup -#define io157_get_input 0 +#define io157_get_input ic74hc165_get_pin(DIN27) #endif #if ASSERT_PIN_IO(DIN28) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4619,30 +2691,16 @@ extern "C" #if !defined(DIN28_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io158_config_input mcu_config_input(DIN28) #else -#define io158_config_input mcu_config_input(DIN28);mcu_config_pullup(DIN28) +#define io158_config_input \ + mcu_config_input(DIN28); \ + mcu_config_pullup(DIN28) #endif #define io158_config_pullup mcu_config_pullup(DIN28) #define io158_get_input mcu_get_input(DIN28) #elif ASSERT_PIN_EXTENDED(DIN28) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io158_config_output -#define io158_set_output ic74hc595_set_pin(DIN28);ic74hc595_shift_io_pins() -#define io158_clear_output ic74hc595_clear_pin(DIN28);ic74hc595_shift_io_pins() -#define io158_toggle_output ic74hc595_toggle_pin(DIN28);ic74hc595_shift_io_pins() -#define io158_get_output ic74hc595_get_pin(DIN28) -#endif -#define io158_config_input -#define io158_config_pullup -#define io158_get_input 0 -#else -#define io158_config_output -#define io158_set_output -#define io158_clear_output -#define io158_toggle_output -#define io158_get_output 0 #define io158_config_input #define io158_config_pullup -#define io158_get_input 0 +#define io158_get_input ic74hc165_get_pin(DIN28) #endif #if ASSERT_PIN_IO(DIN29) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4655,30 +2713,16 @@ extern "C" #if !defined(DIN29_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io159_config_input mcu_config_input(DIN29) #else -#define io159_config_input mcu_config_input(DIN29);mcu_config_pullup(DIN29) +#define io159_config_input \ + mcu_config_input(DIN29); \ + mcu_config_pullup(DIN29) #endif #define io159_config_pullup mcu_config_pullup(DIN29) #define io159_get_input mcu_get_input(DIN29) #elif ASSERT_PIN_EXTENDED(DIN29) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io159_config_output -#define io159_set_output ic74hc595_set_pin(DIN29);ic74hc595_shift_io_pins() -#define io159_clear_output ic74hc595_clear_pin(DIN29);ic74hc595_shift_io_pins() -#define io159_toggle_output ic74hc595_toggle_pin(DIN29);ic74hc595_shift_io_pins() -#define io159_get_output ic74hc595_get_pin(DIN29) -#endif -#define io159_config_input -#define io159_config_pullup -#define io159_get_input 0 -#else -#define io159_config_output -#define io159_set_output -#define io159_clear_output -#define io159_toggle_output -#define io159_get_output 0 #define io159_config_input #define io159_config_pullup -#define io159_get_input 0 +#define io159_get_input ic74hc165_get_pin(DIN29) #endif #if ASSERT_PIN_IO(DIN30) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4691,30 +2735,16 @@ extern "C" #if !defined(DIN30_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io160_config_input mcu_config_input(DIN30) #else -#define io160_config_input mcu_config_input(DIN30);mcu_config_pullup(DIN30) +#define io160_config_input \ + mcu_config_input(DIN30); \ + mcu_config_pullup(DIN30) #endif #define io160_config_pullup mcu_config_pullup(DIN30) #define io160_get_input mcu_get_input(DIN30) #elif ASSERT_PIN_EXTENDED(DIN30) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io160_config_output -#define io160_set_output ic74hc595_set_pin(DIN30);ic74hc595_shift_io_pins() -#define io160_clear_output ic74hc595_clear_pin(DIN30);ic74hc595_shift_io_pins() -#define io160_toggle_output ic74hc595_toggle_pin(DIN30);ic74hc595_shift_io_pins() -#define io160_get_output ic74hc595_get_pin(DIN30) -#endif #define io160_config_input #define io160_config_pullup -#define io160_get_input 0 -#else -#define io160_config_output -#define io160_set_output -#define io160_clear_output -#define io160_toggle_output -#define io160_get_output 0 -#define io160_config_input -#define io160_config_pullup -#define io160_get_input 0 +#define io160_get_input ic74hc165_get_pin(DIN30) #endif #if ASSERT_PIN_IO(DIN31) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4727,30 +2757,16 @@ extern "C" #if !defined(DIN31_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io161_config_input mcu_config_input(DIN31) #else -#define io161_config_input mcu_config_input(DIN31);mcu_config_pullup(DIN31) +#define io161_config_input \ + mcu_config_input(DIN31); \ + mcu_config_pullup(DIN31) #endif #define io161_config_pullup mcu_config_pullup(DIN31) #define io161_get_input mcu_get_input(DIN31) #elif ASSERT_PIN_EXTENDED(DIN31) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io161_config_output -#define io161_set_output ic74hc595_set_pin(DIN31);ic74hc595_shift_io_pins() -#define io161_clear_output ic74hc595_clear_pin(DIN31);ic74hc595_shift_io_pins() -#define io161_toggle_output ic74hc595_toggle_pin(DIN31);ic74hc595_shift_io_pins() -#define io161_get_output ic74hc595_get_pin(DIN31) -#endif -#define io161_config_input -#define io161_config_pullup -#define io161_get_input 0 -#else -#define io161_config_output -#define io161_set_output -#define io161_clear_output -#define io161_toggle_output -#define io161_get_output 0 #define io161_config_input #define io161_config_pullup -#define io161_get_input 0 +#define io161_get_input ic74hc165_get_pin(DIN31) #endif #if ASSERT_PIN_IO(DIN32) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4763,30 +2779,16 @@ extern "C" #if !defined(DIN32_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io162_config_input mcu_config_input(DIN32) #else -#define io162_config_input mcu_config_input(DIN32);mcu_config_pullup(DIN32) +#define io162_config_input \ + mcu_config_input(DIN32); \ + mcu_config_pullup(DIN32) #endif #define io162_config_pullup mcu_config_pullup(DIN32) #define io162_get_input mcu_get_input(DIN32) #elif ASSERT_PIN_EXTENDED(DIN32) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io162_config_output -#define io162_set_output ic74hc595_set_pin(DIN32);ic74hc595_shift_io_pins() -#define io162_clear_output ic74hc595_clear_pin(DIN32);ic74hc595_shift_io_pins() -#define io162_toggle_output ic74hc595_toggle_pin(DIN32);ic74hc595_shift_io_pins() -#define io162_get_output ic74hc595_get_pin(DIN32) -#endif -#define io162_config_input -#define io162_config_pullup -#define io162_get_input 0 -#else -#define io162_config_output -#define io162_set_output -#define io162_clear_output -#define io162_toggle_output -#define io162_get_output 0 #define io162_config_input #define io162_config_pullup -#define io162_get_input 0 +#define io162_get_input ic74hc165_get_pin(DIN32) #endif #if ASSERT_PIN_IO(DIN33) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4799,30 +2801,16 @@ extern "C" #if !defined(DIN33_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io163_config_input mcu_config_input(DIN33) #else -#define io163_config_input mcu_config_input(DIN33);mcu_config_pullup(DIN33) +#define io163_config_input \ + mcu_config_input(DIN33); \ + mcu_config_pullup(DIN33) #endif #define io163_config_pullup mcu_config_pullup(DIN33) #define io163_get_input mcu_get_input(DIN33) #elif ASSERT_PIN_EXTENDED(DIN33) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io163_config_output -#define io163_set_output ic74hc595_set_pin(DIN33);ic74hc595_shift_io_pins() -#define io163_clear_output ic74hc595_clear_pin(DIN33);ic74hc595_shift_io_pins() -#define io163_toggle_output ic74hc595_toggle_pin(DIN33);ic74hc595_shift_io_pins() -#define io163_get_output ic74hc595_get_pin(DIN33) -#endif -#define io163_config_input -#define io163_config_pullup -#define io163_get_input 0 -#else -#define io163_config_output -#define io163_set_output -#define io163_clear_output -#define io163_toggle_output -#define io163_get_output 0 #define io163_config_input #define io163_config_pullup -#define io163_get_input 0 +#define io163_get_input ic74hc165_get_pin(DIN33) #endif #if ASSERT_PIN_IO(DIN34) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4835,30 +2823,16 @@ extern "C" #if !defined(DIN34_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io164_config_input mcu_config_input(DIN34) #else -#define io164_config_input mcu_config_input(DIN34);mcu_config_pullup(DIN34) +#define io164_config_input \ + mcu_config_input(DIN34); \ + mcu_config_pullup(DIN34) #endif #define io164_config_pullup mcu_config_pullup(DIN34) #define io164_get_input mcu_get_input(DIN34) #elif ASSERT_PIN_EXTENDED(DIN34) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io164_config_output -#define io164_set_output ic74hc595_set_pin(DIN34);ic74hc595_shift_io_pins() -#define io164_clear_output ic74hc595_clear_pin(DIN34);ic74hc595_shift_io_pins() -#define io164_toggle_output ic74hc595_toggle_pin(DIN34);ic74hc595_shift_io_pins() -#define io164_get_output ic74hc595_get_pin(DIN34) -#endif #define io164_config_input #define io164_config_pullup -#define io164_get_input 0 -#else -#define io164_config_output -#define io164_set_output -#define io164_clear_output -#define io164_toggle_output -#define io164_get_output 0 -#define io164_config_input -#define io164_config_pullup -#define io164_get_input 0 +#define io164_get_input ic74hc165_get_pin(DIN34) #endif #if ASSERT_PIN_IO(DIN35) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4871,30 +2845,16 @@ extern "C" #if !defined(DIN35_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io165_config_input mcu_config_input(DIN35) #else -#define io165_config_input mcu_config_input(DIN35);mcu_config_pullup(DIN35) +#define io165_config_input \ + mcu_config_input(DIN35); \ + mcu_config_pullup(DIN35) #endif #define io165_config_pullup mcu_config_pullup(DIN35) #define io165_get_input mcu_get_input(DIN35) #elif ASSERT_PIN_EXTENDED(DIN35) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io165_config_output -#define io165_set_output ic74hc595_set_pin(DIN35);ic74hc595_shift_io_pins() -#define io165_clear_output ic74hc595_clear_pin(DIN35);ic74hc595_shift_io_pins() -#define io165_toggle_output ic74hc595_toggle_pin(DIN35);ic74hc595_shift_io_pins() -#define io165_get_output ic74hc595_get_pin(DIN35) -#endif -#define io165_config_input -#define io165_config_pullup -#define io165_get_input 0 -#else -#define io165_config_output -#define io165_set_output -#define io165_clear_output -#define io165_toggle_output -#define io165_get_output 0 #define io165_config_input #define io165_config_pullup -#define io165_get_input 0 +#define io165_get_input ic74hc165_get_pin(DIN35) #endif #if ASSERT_PIN_IO(DIN36) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4907,30 +2867,16 @@ extern "C" #if !defined(DIN36_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io166_config_input mcu_config_input(DIN36) #else -#define io166_config_input mcu_config_input(DIN36);mcu_config_pullup(DIN36) +#define io166_config_input \ + mcu_config_input(DIN36); \ + mcu_config_pullup(DIN36) #endif #define io166_config_pullup mcu_config_pullup(DIN36) #define io166_get_input mcu_get_input(DIN36) #elif ASSERT_PIN_EXTENDED(DIN36) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io166_config_output -#define io166_set_output ic74hc595_set_pin(DIN36);ic74hc595_shift_io_pins() -#define io166_clear_output ic74hc595_clear_pin(DIN36);ic74hc595_shift_io_pins() -#define io166_toggle_output ic74hc595_toggle_pin(DIN36);ic74hc595_shift_io_pins() -#define io166_get_output ic74hc595_get_pin(DIN36) -#endif -#define io166_config_input -#define io166_config_pullup -#define io166_get_input 0 -#else -#define io166_config_output -#define io166_set_output -#define io166_clear_output -#define io166_toggle_output -#define io166_get_output 0 #define io166_config_input #define io166_config_pullup -#define io166_get_input 0 +#define io166_get_input ic74hc165_get_pin(DIN36) #endif #if ASSERT_PIN_IO(DIN37) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4943,30 +2889,16 @@ extern "C" #if !defined(DIN37_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io167_config_input mcu_config_input(DIN37) #else -#define io167_config_input mcu_config_input(DIN37);mcu_config_pullup(DIN37) +#define io167_config_input \ + mcu_config_input(DIN37); \ + mcu_config_pullup(DIN37) #endif #define io167_config_pullup mcu_config_pullup(DIN37) #define io167_get_input mcu_get_input(DIN37) #elif ASSERT_PIN_EXTENDED(DIN37) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io167_config_output -#define io167_set_output ic74hc595_set_pin(DIN37);ic74hc595_shift_io_pins() -#define io167_clear_output ic74hc595_clear_pin(DIN37);ic74hc595_shift_io_pins() -#define io167_toggle_output ic74hc595_toggle_pin(DIN37);ic74hc595_shift_io_pins() -#define io167_get_output ic74hc595_get_pin(DIN37) -#endif -#define io167_config_input -#define io167_config_pullup -#define io167_get_input 0 -#else -#define io167_config_output -#define io167_set_output -#define io167_clear_output -#define io167_toggle_output -#define io167_get_output 0 #define io167_config_input #define io167_config_pullup -#define io167_get_input 0 +#define io167_get_input ic74hc165_get_pin(DIN37) #endif #if ASSERT_PIN_IO(DIN38) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -4979,30 +2911,16 @@ extern "C" #if !defined(DIN38_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io168_config_input mcu_config_input(DIN38) #else -#define io168_config_input mcu_config_input(DIN38);mcu_config_pullup(DIN38) +#define io168_config_input \ + mcu_config_input(DIN38); \ + mcu_config_pullup(DIN38) #endif #define io168_config_pullup mcu_config_pullup(DIN38) #define io168_get_input mcu_get_input(DIN38) #elif ASSERT_PIN_EXTENDED(DIN38) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io168_config_output -#define io168_set_output ic74hc595_set_pin(DIN38);ic74hc595_shift_io_pins() -#define io168_clear_output ic74hc595_clear_pin(DIN38);ic74hc595_shift_io_pins() -#define io168_toggle_output ic74hc595_toggle_pin(DIN38);ic74hc595_shift_io_pins() -#define io168_get_output ic74hc595_get_pin(DIN38) -#endif #define io168_config_input #define io168_config_pullup -#define io168_get_input 0 -#else -#define io168_config_output -#define io168_set_output -#define io168_clear_output -#define io168_toggle_output -#define io168_get_output 0 -#define io168_config_input -#define io168_config_pullup -#define io168_get_input 0 +#define io168_get_input ic74hc165_get_pin(DIN38) #endif #if ASSERT_PIN_IO(DIN39) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -5015,30 +2933,16 @@ extern "C" #if !defined(DIN39_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io169_config_input mcu_config_input(DIN39) #else -#define io169_config_input mcu_config_input(DIN39);mcu_config_pullup(DIN39) +#define io169_config_input \ + mcu_config_input(DIN39); \ + mcu_config_pullup(DIN39) #endif #define io169_config_pullup mcu_config_pullup(DIN39) #define io169_get_input mcu_get_input(DIN39) #elif ASSERT_PIN_EXTENDED(DIN39) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io169_config_output -#define io169_set_output ic74hc595_set_pin(DIN39);ic74hc595_shift_io_pins() -#define io169_clear_output ic74hc595_clear_pin(DIN39);ic74hc595_shift_io_pins() -#define io169_toggle_output ic74hc595_toggle_pin(DIN39);ic74hc595_shift_io_pins() -#define io169_get_output ic74hc595_get_pin(DIN39) -#endif -#define io169_config_input -#define io169_config_pullup -#define io169_get_input 0 -#else -#define io169_config_output -#define io169_set_output -#define io169_clear_output -#define io169_toggle_output -#define io169_get_output 0 #define io169_config_input #define io169_config_pullup -#define io169_get_input 0 +#define io169_get_input ic74hc165_get_pin(DIN39) #endif #if ASSERT_PIN_IO(DIN40) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -5051,30 +2955,16 @@ extern "C" #if !defined(DIN40_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io170_config_input mcu_config_input(DIN40) #else -#define io170_config_input mcu_config_input(DIN40);mcu_config_pullup(DIN40) +#define io170_config_input \ + mcu_config_input(DIN40); \ + mcu_config_pullup(DIN40) #endif #define io170_config_pullup mcu_config_pullup(DIN40) #define io170_get_input mcu_get_input(DIN40) #elif ASSERT_PIN_EXTENDED(DIN40) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io170_config_output -#define io170_set_output ic74hc595_set_pin(DIN40);ic74hc595_shift_io_pins() -#define io170_clear_output ic74hc595_clear_pin(DIN40);ic74hc595_shift_io_pins() -#define io170_toggle_output ic74hc595_toggle_pin(DIN40);ic74hc595_shift_io_pins() -#define io170_get_output ic74hc595_get_pin(DIN40) -#endif -#define io170_config_input -#define io170_config_pullup -#define io170_get_input 0 -#else -#define io170_config_output -#define io170_set_output -#define io170_clear_output -#define io170_toggle_output -#define io170_get_output 0 #define io170_config_input #define io170_config_pullup -#define io170_get_input 0 +#define io170_get_input ic74hc165_get_pin(DIN40) #endif #if ASSERT_PIN_IO(DIN41) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -5087,30 +2977,16 @@ extern "C" #if !defined(DIN41_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io171_config_input mcu_config_input(DIN41) #else -#define io171_config_input mcu_config_input(DIN41);mcu_config_pullup(DIN41) +#define io171_config_input \ + mcu_config_input(DIN41); \ + mcu_config_pullup(DIN41) #endif #define io171_config_pullup mcu_config_pullup(DIN41) #define io171_get_input mcu_get_input(DIN41) #elif ASSERT_PIN_EXTENDED(DIN41) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io171_config_output -#define io171_set_output ic74hc595_set_pin(DIN41);ic74hc595_shift_io_pins() -#define io171_clear_output ic74hc595_clear_pin(DIN41);ic74hc595_shift_io_pins() -#define io171_toggle_output ic74hc595_toggle_pin(DIN41);ic74hc595_shift_io_pins() -#define io171_get_output ic74hc595_get_pin(DIN41) -#endif -#define io171_config_input -#define io171_config_pullup -#define io171_get_input 0 -#else -#define io171_config_output -#define io171_set_output -#define io171_clear_output -#define io171_toggle_output -#define io171_get_output 0 #define io171_config_input #define io171_config_pullup -#define io171_get_input 0 +#define io171_get_input ic74hc165_get_pin(DIN41) #endif #if ASSERT_PIN_IO(DIN42) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -5123,30 +2999,16 @@ extern "C" #if !defined(DIN42_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io172_config_input mcu_config_input(DIN42) #else -#define io172_config_input mcu_config_input(DIN42);mcu_config_pullup(DIN42) +#define io172_config_input \ + mcu_config_input(DIN42); \ + mcu_config_pullup(DIN42) #endif #define io172_config_pullup mcu_config_pullup(DIN42) #define io172_get_input mcu_get_input(DIN42) #elif ASSERT_PIN_EXTENDED(DIN42) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io172_config_output -#define io172_set_output ic74hc595_set_pin(DIN42);ic74hc595_shift_io_pins() -#define io172_clear_output ic74hc595_clear_pin(DIN42);ic74hc595_shift_io_pins() -#define io172_toggle_output ic74hc595_toggle_pin(DIN42);ic74hc595_shift_io_pins() -#define io172_get_output ic74hc595_get_pin(DIN42) -#endif #define io172_config_input #define io172_config_pullup -#define io172_get_input 0 -#else -#define io172_config_output -#define io172_set_output -#define io172_clear_output -#define io172_toggle_output -#define io172_get_output 0 -#define io172_config_input -#define io172_config_pullup -#define io172_get_input 0 +#define io172_get_input ic74hc165_get_pin(DIN42) #endif #if ASSERT_PIN_IO(DIN43) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -5159,30 +3021,16 @@ extern "C" #if !defined(DIN43_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io173_config_input mcu_config_input(DIN43) #else -#define io173_config_input mcu_config_input(DIN43);mcu_config_pullup(DIN43) +#define io173_config_input \ + mcu_config_input(DIN43); \ + mcu_config_pullup(DIN43) #endif #define io173_config_pullup mcu_config_pullup(DIN43) #define io173_get_input mcu_get_input(DIN43) #elif ASSERT_PIN_EXTENDED(DIN43) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io173_config_output -#define io173_set_output ic74hc595_set_pin(DIN43);ic74hc595_shift_io_pins() -#define io173_clear_output ic74hc595_clear_pin(DIN43);ic74hc595_shift_io_pins() -#define io173_toggle_output ic74hc595_toggle_pin(DIN43);ic74hc595_shift_io_pins() -#define io173_get_output ic74hc595_get_pin(DIN43) -#endif -#define io173_config_input -#define io173_config_pullup -#define io173_get_input 0 -#else -#define io173_config_output -#define io173_set_output -#define io173_clear_output -#define io173_toggle_output -#define io173_get_output 0 #define io173_config_input #define io173_config_pullup -#define io173_get_input 0 +#define io173_get_input ic74hc165_get_pin(DIN43) #endif #if ASSERT_PIN_IO(DIN44) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -5195,30 +3043,16 @@ extern "C" #if !defined(DIN44_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io174_config_input mcu_config_input(DIN44) #else -#define io174_config_input mcu_config_input(DIN44);mcu_config_pullup(DIN44) +#define io174_config_input \ + mcu_config_input(DIN44); \ + mcu_config_pullup(DIN44) #endif #define io174_config_pullup mcu_config_pullup(DIN44) #define io174_get_input mcu_get_input(DIN44) #elif ASSERT_PIN_EXTENDED(DIN44) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io174_config_output -#define io174_set_output ic74hc595_set_pin(DIN44);ic74hc595_shift_io_pins() -#define io174_clear_output ic74hc595_clear_pin(DIN44);ic74hc595_shift_io_pins() -#define io174_toggle_output ic74hc595_toggle_pin(DIN44);ic74hc595_shift_io_pins() -#define io174_get_output ic74hc595_get_pin(DIN44) -#endif -#define io174_config_input -#define io174_config_pullup -#define io174_get_input 0 -#else -#define io174_config_output -#define io174_set_output -#define io174_clear_output -#define io174_toggle_output -#define io174_get_output 0 #define io174_config_input #define io174_config_pullup -#define io174_get_input 0 +#define io174_get_input ic74hc165_get_pin(DIN44) #endif #if ASSERT_PIN_IO(DIN45) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -5231,30 +3065,16 @@ extern "C" #if !defined(DIN45_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io175_config_input mcu_config_input(DIN45) #else -#define io175_config_input mcu_config_input(DIN45);mcu_config_pullup(DIN45) +#define io175_config_input \ + mcu_config_input(DIN45); \ + mcu_config_pullup(DIN45) #endif #define io175_config_pullup mcu_config_pullup(DIN45) #define io175_get_input mcu_get_input(DIN45) #elif ASSERT_PIN_EXTENDED(DIN45) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io175_config_output -#define io175_set_output ic74hc595_set_pin(DIN45);ic74hc595_shift_io_pins() -#define io175_clear_output ic74hc595_clear_pin(DIN45);ic74hc595_shift_io_pins() -#define io175_toggle_output ic74hc595_toggle_pin(DIN45);ic74hc595_shift_io_pins() -#define io175_get_output ic74hc595_get_pin(DIN45) -#endif -#define io175_config_input -#define io175_config_pullup -#define io175_get_input 0 -#else -#define io175_config_output -#define io175_set_output -#define io175_clear_output -#define io175_toggle_output -#define io175_get_output 0 #define io175_config_input #define io175_config_pullup -#define io175_get_input 0 +#define io175_get_input ic74hc165_get_pin(DIN45) #endif #if ASSERT_PIN_IO(DIN46) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -5267,30 +3087,16 @@ extern "C" #if !defined(DIN46_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io176_config_input mcu_config_input(DIN46) #else -#define io176_config_input mcu_config_input(DIN46);mcu_config_pullup(DIN46) +#define io176_config_input \ + mcu_config_input(DIN46); \ + mcu_config_pullup(DIN46) #endif #define io176_config_pullup mcu_config_pullup(DIN46) #define io176_get_input mcu_get_input(DIN46) #elif ASSERT_PIN_EXTENDED(DIN46) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io176_config_output -#define io176_set_output ic74hc595_set_pin(DIN46);ic74hc595_shift_io_pins() -#define io176_clear_output ic74hc595_clear_pin(DIN46);ic74hc595_shift_io_pins() -#define io176_toggle_output ic74hc595_toggle_pin(DIN46);ic74hc595_shift_io_pins() -#define io176_get_output ic74hc595_get_pin(DIN46) -#endif #define io176_config_input #define io176_config_pullup -#define io176_get_input 0 -#else -#define io176_config_output -#define io176_set_output -#define io176_clear_output -#define io176_toggle_output -#define io176_get_output 0 -#define io176_config_input -#define io176_config_pullup -#define io176_get_input 0 +#define io176_get_input ic74hc165_get_pin(DIN46) #endif #if ASSERT_PIN_IO(DIN47) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -5303,30 +3109,16 @@ extern "C" #if !defined(DIN47_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io177_config_input mcu_config_input(DIN47) #else -#define io177_config_input mcu_config_input(DIN47);mcu_config_pullup(DIN47) +#define io177_config_input \ + mcu_config_input(DIN47); \ + mcu_config_pullup(DIN47) #endif #define io177_config_pullup mcu_config_pullup(DIN47) #define io177_get_input mcu_get_input(DIN47) #elif ASSERT_PIN_EXTENDED(DIN47) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io177_config_output -#define io177_set_output ic74hc595_set_pin(DIN47);ic74hc595_shift_io_pins() -#define io177_clear_output ic74hc595_clear_pin(DIN47);ic74hc595_shift_io_pins() -#define io177_toggle_output ic74hc595_toggle_pin(DIN47);ic74hc595_shift_io_pins() -#define io177_get_output ic74hc595_get_pin(DIN47) -#endif -#define io177_config_input -#define io177_config_pullup -#define io177_get_input 0 -#else -#define io177_config_output -#define io177_set_output -#define io177_clear_output -#define io177_toggle_output -#define io177_get_output 0 #define io177_config_input #define io177_config_pullup -#define io177_get_input 0 +#define io177_get_input ic74hc165_get_pin(DIN47) #endif #if ASSERT_PIN_IO(DIN48) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -5339,30 +3131,16 @@ extern "C" #if !defined(DIN48_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io178_config_input mcu_config_input(DIN48) #else -#define io178_config_input mcu_config_input(DIN48);mcu_config_pullup(DIN48) +#define io178_config_input \ + mcu_config_input(DIN48); \ + mcu_config_pullup(DIN48) #endif #define io178_config_pullup mcu_config_pullup(DIN48) #define io178_get_input mcu_get_input(DIN48) #elif ASSERT_PIN_EXTENDED(DIN48) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io178_config_output -#define io178_set_output ic74hc595_set_pin(DIN48);ic74hc595_shift_io_pins() -#define io178_clear_output ic74hc595_clear_pin(DIN48);ic74hc595_shift_io_pins() -#define io178_toggle_output ic74hc595_toggle_pin(DIN48);ic74hc595_shift_io_pins() -#define io178_get_output ic74hc595_get_pin(DIN48) -#endif -#define io178_config_input -#define io178_config_pullup -#define io178_get_input 0 -#else -#define io178_config_output -#define io178_set_output -#define io178_clear_output -#define io178_toggle_output -#define io178_get_output 0 #define io178_config_input #define io178_config_pullup -#define io178_get_input 0 +#define io178_get_input ic74hc165_get_pin(DIN48) #endif #if ASSERT_PIN_IO(DIN49) #ifdef DISABLE_HAL_CONFIG_PROTECTION @@ -5375,30 +3153,16 @@ extern "C" #if !defined(DIN49_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io179_config_input mcu_config_input(DIN49) #else -#define io179_config_input mcu_config_input(DIN49);mcu_config_pullup(DIN49) +#define io179_config_input \ + mcu_config_input(DIN49); \ + mcu_config_pullup(DIN49) #endif #define io179_config_pullup mcu_config_pullup(DIN49) #define io179_get_input mcu_get_input(DIN49) #elif ASSERT_PIN_EXTENDED(DIN49) -#ifdef DISABLE_HAL_CONFIG_PROTECTION -#define io179_config_output -#define io179_set_output ic74hc595_set_pin(DIN49);ic74hc595_shift_io_pins() -#define io179_clear_output ic74hc595_clear_pin(DIN49);ic74hc595_shift_io_pins() -#define io179_toggle_output ic74hc595_toggle_pin(DIN49);ic74hc595_shift_io_pins() -#define io179_get_output ic74hc595_get_pin(DIN49) -#endif -#define io179_config_input -#define io179_config_pullup -#define io179_get_input 0 -#else -#define io179_config_output -#define io179_set_output -#define io179_clear_output -#define io179_toggle_output -#define io179_get_output 0 #define io179_config_input #define io179_config_pullup -#define io179_get_input 0 +#define io179_get_input ic74hc165_get_pin(DIN49) #endif #if ASSERT_PIN_IO(SPI_CS) #define io207_config_output mcu_config_output(SPI_CS) @@ -5406,31 +3170,15 @@ extern "C" #define io207_clear_output mcu_clear_output(SPI_CS) #define io207_toggle_output mcu_toggle_output(SPI_CS) #define io207_get_output mcu_get_output(SPI_CS) -#if !defined(SPI_CS_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io207_config_input mcu_config_input(SPI_CS) -#else -#define io207_config_input mcu_config_input(SPI_CS);mcu_config_pullup(SPI_CS) -#endif #define io207_config_pullup mcu_config_pullup(SPI_CS) #define io207_get_input mcu_get_input(SPI_CS) #elif ASSERT_PIN_EXTENDED(SPI_CS) #define io207_config_output -#define io207_set_output ic74hc595_set_pin(SPI_CS);ic74hc595_shift_io_pins() -#define io207_clear_output ic74hc595_clear_pin(SPI_CS);ic74hc595_shift_io_pins() -#define io207_toggle_output ic74hc595_toggle_pin(SPI_CS);ic74hc595_shift_io_pins() +#define io207_set_output ic74hc595_set_pin(SPI_CS) +#define io207_clear_output ic74hc595_clear_pin(SPI_CS) +#define io207_toggle_output ic74hc595_toggle_pin(SPI_CS) #define io207_get_output ic74hc595_get_pin(SPI_CS) -#define io207_config_input -#define io207_config_pullup -#define io207_get_input 0 -#else -#define io207_config_output -#define io207_set_output -#define io207_clear_output -#define io207_toggle_output -#define io207_get_output 0 -#define io207_config_input -#define io207_config_pullup -#define io207_get_input 0 #endif #if ASSERT_PIN_IO(SPI2_CS) #define io215_config_output mcu_config_output(SPI2_CS) @@ -5438,565 +3186,15 @@ extern "C" #define io215_clear_output mcu_clear_output(SPI2_CS) #define io215_toggle_output mcu_toggle_output(SPI2_CS) #define io215_get_output mcu_get_output(SPI2_CS) -#if !defined(SPI2_CS_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST) #define io215_config_input mcu_config_input(SPI2_CS) -#else -#define io215_config_input mcu_config_input(SPI2_CS);mcu_config_pullup(SPI2_CS) -#endif #define io215_config_pullup mcu_config_pullup(SPI2_CS) #define io215_get_input mcu_get_input(SPI2_CS) #elif ASSERT_PIN_EXTENDED(SPI2_CS) #define io215_config_output -#define io215_set_output ic74hc595_set_pin(SPI2_CS);ic74hc595_shift_io_pins() -#define io215_clear_output ic74hc595_clear_pin(SPI2_CS);ic74hc595_shift_io_pins() -#define io215_toggle_output ic74hc595_toggle_pin(SPI2_CS);ic74hc595_shift_io_pins() +#define io215_set_output ic74hc595_set_pin(SPI2_CS) +#define io215_clear_output ic74hc595_clear_pin(SPI2_CS) +#define io215_toggle_output ic74hc595_toggle_pin(SPI2_CS) #define io215_get_output ic74hc595_get_pin(SPI2_CS) -#define io215_config_input -#define io215_config_pullup -#define io215_get_input 0 -#else -#define io215_config_output -#define io215_set_output -#define io215_clear_output -#define io215_toggle_output -#define io215_get_output 0 -#define io215_config_input -#define io215_config_pullup -#define io215_get_input 0 -#endif - - /*PWM*/ - extern uint8_t g_soft_pwm_res; - extern uint8_t g_io_soft_pwm[16]; - extern uint8_t mcu_softpwm_freq_config(uint16_t freq); - -#if ASSERT_PIN_IO(PWM0) -#define io25_config_pwm(freq) mcu_config_pwm(PWM0, freq) -#define io25_set_pwm(value) mcu_set_pwm(PWM0, value) -#define io25_get_pwm mcu_get_pwm(PWM0) -#elif ASSERT_PIN_EXTENDED(PWM0) -#define io25_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io25_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM0 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io25_get_pwm g_io_soft_pwm[PWM0 - PWM_PINS_OFFSET] -#else -#define io25_config_pwm(freq) -#define io25_set_pwm(value) -#define io25_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM1) -#define io26_config_pwm(freq) mcu_config_pwm(PWM1, freq) -#define io26_set_pwm(value) mcu_set_pwm(PWM1, value) -#define io26_get_pwm mcu_get_pwm(PWM1) -#elif ASSERT_PIN_EXTENDED(PWM1) -#define io26_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io26_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM1 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io26_get_pwm g_io_soft_pwm[PWM1 - PWM_PINS_OFFSET] -#else -#define io26_config_pwm(freq) -#define io26_set_pwm(value) -#define io26_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM2) -#define io27_config_pwm(freq) mcu_config_pwm(PWM2, freq) -#define io27_set_pwm(value) mcu_set_pwm(PWM2, value) -#define io27_get_pwm mcu_get_pwm(PWM2) -#elif ASSERT_PIN_EXTENDED(PWM2) -#define io27_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io27_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM2 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io27_get_pwm g_io_soft_pwm[PWM2 - PWM_PINS_OFFSET] -#else -#define io27_config_pwm(freq) -#define io27_set_pwm(value) -#define io27_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM3) -#define io28_config_pwm(freq) mcu_config_pwm(PWM3, freq) -#define io28_set_pwm(value) mcu_set_pwm(PWM3, value) -#define io28_get_pwm mcu_get_pwm(PWM3) -#elif ASSERT_PIN_EXTENDED(PWM3) -#define io28_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io28_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM3 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io28_get_pwm g_io_soft_pwm[PWM3 - PWM_PINS_OFFSET] -#else -#define io28_config_pwm(freq) -#define io28_set_pwm(value) -#define io28_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM4) -#define io29_config_pwm(freq) mcu_config_pwm(PWM4, freq) -#define io29_set_pwm(value) mcu_set_pwm(PWM4, value) -#define io29_get_pwm mcu_get_pwm(PWM4) -#elif ASSERT_PIN_EXTENDED(PWM4) -#define io29_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io29_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM4 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io29_get_pwm g_io_soft_pwm[PWM4 - PWM_PINS_OFFSET] -#else -#define io29_config_pwm(freq) -#define io29_set_pwm(value) -#define io29_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM5) -#define io30_config_pwm(freq) mcu_config_pwm(PWM5, freq) -#define io30_set_pwm(value) mcu_set_pwm(PWM5, value) -#define io30_get_pwm mcu_get_pwm(PWM5) -#elif ASSERT_PIN_EXTENDED(PWM5) -#define io30_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io30_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM5 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io30_get_pwm g_io_soft_pwm[PWM5 - PWM_PINS_OFFSET] -#else -#define io30_config_pwm(freq) -#define io30_set_pwm(value) -#define io30_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM6) -#define io31_config_pwm(freq) mcu_config_pwm(PWM6, freq) -#define io31_set_pwm(value) mcu_set_pwm(PWM6, value) -#define io31_get_pwm mcu_get_pwm(PWM6) -#elif ASSERT_PIN_EXTENDED(PWM6) -#define io31_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io31_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM6 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io31_get_pwm g_io_soft_pwm[PWM6 - PWM_PINS_OFFSET] -#else -#define io31_config_pwm(freq) -#define io31_set_pwm(value) -#define io31_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM7) -#define io32_config_pwm(freq) mcu_config_pwm(PWM7, freq) -#define io32_set_pwm(value) mcu_set_pwm(PWM7, value) -#define io32_get_pwm mcu_get_pwm(PWM7) -#elif ASSERT_PIN_EXTENDED(PWM7) -#define io32_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io32_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM7 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io32_get_pwm g_io_soft_pwm[PWM7 - PWM_PINS_OFFSET] -#else -#define io32_config_pwm(freq) -#define io32_set_pwm(value) -#define io32_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM8) -#define io33_config_pwm(freq) mcu_config_pwm(PWM8, freq) -#define io33_set_pwm(value) mcu_set_pwm(PWM8, value) -#define io33_get_pwm mcu_get_pwm(PWM8) -#elif ASSERT_PIN_EXTENDED(PWM8) -#define io33_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io33_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM8 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io33_get_pwm g_io_soft_pwm[PWM8 - PWM_PINS_OFFSET] -#else -#define io33_config_pwm(freq) -#define io33_set_pwm(value) -#define io33_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM9) -#define io34_config_pwm(freq) mcu_config_pwm(PWM9, freq) -#define io34_set_pwm(value) mcu_set_pwm(PWM9, value) -#define io34_get_pwm mcu_get_pwm(PWM9) -#elif ASSERT_PIN_EXTENDED(PWM9) -#define io34_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io34_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM9 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io34_get_pwm g_io_soft_pwm[PWM9 - PWM_PINS_OFFSET] -#else -#define io34_config_pwm(freq) -#define io34_set_pwm(value) -#define io34_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM10) -#define io35_config_pwm(freq) mcu_config_pwm(PWM10, freq) -#define io35_set_pwm(value) mcu_set_pwm(PWM10, value) -#define io35_get_pwm mcu_get_pwm(PWM10) -#elif ASSERT_PIN_EXTENDED(PWM10) -#define io35_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io35_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM10 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io35_get_pwm g_io_soft_pwm[PWM10 - PWM_PINS_OFFSET] -#else -#define io35_config_pwm(freq) -#define io35_set_pwm(value) -#define io35_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM11) -#define io36_config_pwm(freq) mcu_config_pwm(PWM11, freq) -#define io36_set_pwm(value) mcu_set_pwm(PWM11, value) -#define io36_get_pwm mcu_get_pwm(PWM11) -#elif ASSERT_PIN_EXTENDED(PWM11) -#define io36_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io36_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM11 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io36_get_pwm g_io_soft_pwm[PWM11 - PWM_PINS_OFFSET] -#else -#define io36_config_pwm(freq) -#define io36_set_pwm(value) -#define io36_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM12) -#define io37_config_pwm(freq) mcu_config_pwm(PWM12, freq) -#define io37_set_pwm(value) mcu_set_pwm(PWM12, value) -#define io37_get_pwm mcu_get_pwm(PWM12) -#elif ASSERT_PIN_EXTENDED(PWM12) -#define io37_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io37_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM12 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io37_get_pwm g_io_soft_pwm[PWM12 - PWM_PINS_OFFSET] -#else -#define io37_config_pwm(freq) -#define io37_set_pwm(value) -#define io37_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM13) -#define io38_config_pwm(freq) mcu_config_pwm(PWM13, freq) -#define io38_set_pwm(value) mcu_set_pwm(PWM13, value) -#define io38_get_pwm mcu_get_pwm(PWM13) -#elif ASSERT_PIN_EXTENDED(PWM13) -#define io38_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io38_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM13 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io38_get_pwm g_io_soft_pwm[PWM13 - PWM_PINS_OFFSET] -#else -#define io38_config_pwm(freq) -#define io38_set_pwm(value) -#define io38_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM14) -#define io39_config_pwm(freq) mcu_config_pwm(PWM14, freq) -#define io39_set_pwm(value) mcu_set_pwm(PWM14, value) -#define io39_get_pwm mcu_get_pwm(PWM14) -#elif ASSERT_PIN_EXTENDED(PWM14) -#define io39_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io39_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM14 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io39_get_pwm g_io_soft_pwm[PWM14 - PWM_PINS_OFFSET] -#else -#define io39_config_pwm(freq) -#define io39_set_pwm(value) -#define io39_get_pwm 0 -#endif -#if ASSERT_PIN_IO(PWM15) -#define io40_config_pwm(freq) mcu_config_pwm(PWM15, freq) -#define io40_set_pwm(value) mcu_set_pwm(PWM15, value) -#define io40_get_pwm mcu_get_pwm(PWM15) -#elif ASSERT_PIN_EXTENDED(PWM15) -#define io40_config_pwm(freq) \ - { \ - g_soft_pwm_res = mcu_softpwm_freq_config(freq); \ - } -#define io40_set_pwm(value) \ - { \ - g_io_soft_pwm[PWM15 - PWM_PINS_OFFSET] = (0xFF & value); \ - } -#define io40_get_pwm g_io_soft_pwm[PWM15 - PWM_PINS_OFFSET] -#else -#define io40_config_pwm(freq) -#define io40_set_pwm(value) -#define io40_get_pwm 0 -#endif - -/*SERVO*/ -#if ASSERT_PIN_IO(SERVO0) -#define io41_set_pwm(value) mcu_set_servo(SERVO0, value) -#define io41_get_pwm mcu_get_servo(SERVO0) -#elif ASSERT_PIN_EXTENDED(SERVO0) -#define io41_set_pwm(value) -#define io41_get_pwm 0 -#else -#define io41_set_pwm(value) -#define io41_get_pwm 0 -#endif -#if ASSERT_PIN_IO(SERVO1) -#define io42_set_pwm(value) mcu_set_servo(SERVO1, value) -#define io42_get_pwm mcu_get_servo(SERVO1) -#elif ASSERT_PIN_EXTENDED(SERVO1) -#define io42_set_pwm(value) -#define io42_get_pwm 0 -#else -#define io42_set_pwm(value) -#define io42_get_pwm 0 -#endif -#if ASSERT_PIN_IO(SERVO2) -#define io43_set_pwm(value) mcu_set_servo(SERVO2, value) -#define io43_get_pwm mcu_get_servo(SERVO2) -#elif ASSERT_PIN_EXTENDED(SERVO2) -#define io43_set_pwm(value) -#define io43_get_pwm 0 -#else -#define io43_set_pwm(value) -#define io43_get_pwm 0 -#endif -#if ASSERT_PIN_IO(SERVO3) -#define io44_set_pwm(value) mcu_set_servo(SERVO3, value) -#define io44_get_pwm mcu_get_servo(SERVO3) -#elif ASSERT_PIN_EXTENDED(SERVO3) -#define io44_set_pwm(value) -#define io44_get_pwm 0 -#else -#define io44_set_pwm(value) -#define io44_get_pwm 0 -#endif -#if ASSERT_PIN_IO(SERVO4) -#define io45_set_pwm(value) mcu_set_servo(SERVO4, value) -#define io45_get_pwm mcu_get_servo(SERVO4) -#elif ASSERT_PIN_EXTENDED(SERVO4) -#define io45_set_pwm(value) -#define io45_get_pwm 0 -#else -#define io45_set_pwm(value) -#define io45_get_pwm 0 -#endif -#if ASSERT_PIN_IO(SERVO5) -#define io46_set_pwm(value) mcu_set_servo(SERVO5, value) -#define io46_get_pwm mcu_get_servo(SERVO5) -#elif ASSERT_PIN_EXTENDED(SERVO5) -#define io46_set_pwm(value) -#define io46_get_pwm 0 -#else -#define io46_set_pwm(value) -#define io46_get_pwm 0 -#endif - -/*ANALOG*/ -#if ASSERT_PIN_IO(ANALOG0) -#define io114_config_analog mcu_config_analog(ANALOG0) -#define io114_get_analog mcu_get_analog(ANALOG0) -#elif ASSERT_PIN_EXTENDED(ANALOG0) -#define io114_config_analog -#define io114_get_analog 0 -#else -#define io114_config_analog -#define io114_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG1) -#define io115_config_analog mcu_config_analog(ANALOG1) -#define io115_get_analog mcu_get_analog(ANALOG1) -#elif ASSERT_PIN_EXTENDED(ANALOG1) -#define io115_config_analog -#define io115_get_analog 0 -#else -#define io115_config_analog -#define io115_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG2) -#define io116_config_analog mcu_config_analog(ANALOG2) -#define io116_get_analog mcu_get_analog(ANALOG2) -#elif ASSERT_PIN_EXTENDED(ANALOG2) -#define io116_config_analog -#define io116_get_analog 0 -#else -#define io116_config_analog -#define io116_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG3) -#define io117_config_analog mcu_config_analog(ANALOG3) -#define io117_get_analog mcu_get_analog(ANALOG3) -#elif ASSERT_PIN_EXTENDED(ANALOG3) -#define io117_config_analog -#define io117_get_analog 0 -#else -#define io117_config_analog -#define io117_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG4) -#define io118_config_analog mcu_config_analog(ANALOG4) -#define io118_get_analog mcu_get_analog(ANALOG4) -#elif ASSERT_PIN_EXTENDED(ANALOG4) -#define io118_config_analog -#define io118_get_analog 0 -#else -#define io118_config_analog -#define io118_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG5) -#define io119_config_analog mcu_config_analog(ANALOG5) -#define io119_get_analog mcu_get_analog(ANALOG5) -#elif ASSERT_PIN_EXTENDED(ANALOG5) -#define io119_config_analog -#define io119_get_analog 0 -#else -#define io119_config_analog -#define io119_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG6) -#define io120_config_analog mcu_config_analog(ANALOG6) -#define io120_get_analog mcu_get_analog(ANALOG6) -#elif ASSERT_PIN_EXTENDED(ANALOG6) -#define io120_config_analog -#define io120_get_analog 0 -#else -#define io120_config_analog -#define io120_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG7) -#define io121_config_analog mcu_config_analog(ANALOG7) -#define io121_get_analog mcu_get_analog(ANALOG7) -#elif ASSERT_PIN_EXTENDED(ANALOG7) -#define io121_config_analog -#define io121_get_analog 0 -#else -#define io121_config_analog -#define io121_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG8) -#define io122_config_analog mcu_config_analog(ANALOG8) -#define io122_get_analog mcu_get_analog(ANALOG8) -#elif ASSERT_PIN_EXTENDED(ANALOG8) -#define io122_config_analog -#define io122_get_analog 0 -#else -#define io122_config_analog -#define io122_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG9) -#define io123_config_analog mcu_config_analog(ANALOG9) -#define io123_get_analog mcu_get_analog(ANALOG9) -#elif ASSERT_PIN_EXTENDED(ANALOG9) -#define io123_config_analog -#define io123_get_analog 0 -#else -#define io123_config_analog -#define io123_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG10) -#define io124_config_analog mcu_config_analog(ANALOG10) -#define io124_get_analog mcu_get_analog(ANALOG10) -#elif ASSERT_PIN_EXTENDED(ANALOG10) -#define io124_config_analog -#define io124_get_analog 0 -#else -#define io124_config_analog -#define io124_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG11) -#define io125_config_analog mcu_config_analog(ANALOG11) -#define io125_get_analog mcu_get_analog(ANALOG11) -#elif ASSERT_PIN_EXTENDED(ANALOG11) -#define io125_config_analog -#define io125_get_analog 0 -#else -#define io125_config_analog -#define io125_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG12) -#define io126_config_analog mcu_config_analog(ANALOG12) -#define io126_get_analog mcu_get_analog(ANALOG12) -#elif ASSERT_PIN_EXTENDED(ANALOG12) -#define io126_config_analog -#define io126_get_analog 0 -#else -#define io126_config_analog -#define io126_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG13) -#define io127_config_analog mcu_config_analog(ANALOG13) -#define io127_get_analog mcu_get_analog(ANALOG13) -#elif ASSERT_PIN_EXTENDED(ANALOG13) -#define io127_config_analog -#define io127_get_analog 0 -#else -#define io127_config_analog -#define io127_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG14) -#define io128_config_analog mcu_config_analog(ANALOG14) -#define io128_get_analog mcu_get_analog(ANALOG14) -#elif ASSERT_PIN_EXTENDED(ANALOG14) -#define io128_config_analog -#define io128_get_analog 0 -#else -#define io128_config_analog -#define io128_get_analog 0 -#endif -#if ASSERT_PIN_IO(ANALOG15) -#define io129_config_analog mcu_config_analog(ANALOG15) -#define io129_get_analog mcu_get_analog(ANALOG15) -#elif ASSERT_PIN_EXTENDED(ANALOG15) -#define io129_config_analog -#define io129_get_analog 0 -#else -#define io129_config_analog -#define io129_get_analog 0 #endif /*output HAL*/ diff --git a/uCNC/src/hal/mcus/esp32/mcu_esp32.c b/uCNC/src/hal/mcus/esp32/mcu_esp32.c index 5c14e7cbf..3e2cf80dc 100644 --- a/uCNC/src/hal/mcus/esp32/mcu_esp32.c +++ b/uCNC/src/hal/mcus/esp32/mcu_esp32.c @@ -139,13 +139,16 @@ static FORCEINLINE void mcu_gen_oneshot(void) uint8_t itp_set_step_mode(uint8_t mode) { uint8_t last_mode = I2S_MODE; - itp_sync(); + if (mode) + { + itp_sync(); #ifdef USE_I2S_REALTIME_MODE_ONLY - __atomic_store_n((uint32_t *)&i2s_mode, (ITP_STEP_MODE_SYNC | ITP_STEP_MODE_REALTIME), __ATOMIC_RELAXED); + __atomic_store_n((uint32_t *)&i2s_mode, (ITP_STEP_MODE_SYNC | ITP_STEP_MODE_REALTIME), __ATOMIC_RELAXED); #else - __atomic_store_n((uint32_t *)&i2s_mode, (ITP_STEP_MODE_SYNC | mode), __ATOMIC_RELAXED); + __atomic_store_n((uint32_t *)&i2s_mode, (ITP_STEP_MODE_SYNC | mode), __ATOMIC_RELAXED); #endif - cnc_delay_ms(20); + cnc_delay_ms(20); + } return last_mode; } @@ -1059,7 +1062,7 @@ uint8_t mcu_eeprom_getc(uint16_t address) { if (NVM_STORAGE_SIZE <= address) { - DBGMSG("EEPROM invalid address @ %u",address); + DBGMSG("EEPROM invalid address @ %u", address); return 0; } #ifndef RAM_ONLY_SETTINGS @@ -1080,7 +1083,7 @@ void mcu_eeprom_putc(uint16_t address, uint8_t value) { if (NVM_STORAGE_SIZE <= address) { - DBGMSG("EEPROM invalid address @ %u",address); + DBGMSG("EEPROM invalid address @ %u", address); } #ifndef RAM_ONLY_SETTINGS // esp32_eeprom_write(address, value); diff --git a/uCNC/src/hal/mcus/esp32/mcumap_esp32.h b/uCNC/src/hal/mcus/esp32/mcumap_esp32.h index aa7250030..6abc0fcaa 100644 --- a/uCNC/src/hal/mcus/esp32/mcumap_esp32.h +++ b/uCNC/src/hal/mcus/esp32/mcumap_esp32.h @@ -3470,6 +3470,40 @@ extern "C" ; \ } +#define __FREERTOS_MUTEX_TAKE__(mutex, timeout) ((xPortInIsrContext()) ? (xSemaphoreTakeFromISR(mutex, NULL)) : (xSemaphoreTake(mutex, timeout))) +#define __FREERTOS_MUTEX_GIVE__(mutex) ((xPortInIsrContext()) ? (xSemaphoreGiveFromISR(mutex, NULL)) : (xSemaphoreGive(mutex))) + +#define MUTEX_CLEANUP(name) \ + static void name##_mutex_cleanup(uint8_t *m) \ + { \ + if (*m /*can unlock*/) \ + { \ + __FREERTOS_MUTEX_GIVE__(name##_mutex_lock); \ + } \ + } +#define DECL_MUTEX(name) \ + static SemaphoreHandle_t name##_mutex_lock = NULL; \ + MUTEX_CLEANUP(name) + +#define MUTEX_INIT(name) \ + if (name##_mutex_lock == NULL) \ + { \ + name##_mutex_lock = xSemaphoreCreateMutex(); \ + } \ + uint8_t __attribute__((__cleanup__(name##_mutex_cleanup))) name##_mutex_temp = 0 +#define MUTEX_RELEASE(name) \ + if (name##_mutex_temp) \ + { \ + name##_mutex_temp = 0; \ + __FREERTOS_MUTEX_GIVE__(name##_mutex_lock); \ + } +#define MUTEX_TAKE(name) \ + name##_mutex_temp = (__FREERTOS_MUTEX_TAKE__(name##_mutex_lock, portMAX_DELAY) == pdTRUE) ? 1 : 0; \ + if (name##_mutex_temp) +#define MUTEX_WAIT(name, timeout_ms) \ + name##_mutex_temp = (__FREERTOS_MUTEX_TAKE__(name##_mutex_lock, (timeout_us / portTICK_PERIOD_MS)) == pdTRUE) ? 1 : 0; \ + if (name##_mutex_temp) + #ifdef __cplusplus } #endif diff --git a/uCNC/src/hal/mcus/esp8266/mcu_esp8266.c b/uCNC/src/hal/mcus/esp8266/mcu_esp8266.c index 428c837c0..6bf5b927b 100644 --- a/uCNC/src/hal/mcus/esp8266/mcu_esp8266.c +++ b/uCNC/src/hal/mcus/esp8266/mcu_esp8266.c @@ -263,7 +263,7 @@ IRAM_ATTR void mcu_itp_isr(void) mcu_gen_pwm_and_servo(); mcu_gen_oneshot(); #if defined(IC74HC595_HAS_STEPS) || defined(IC74HC595_HAS_DIRS) || defined(IC74HC595_HAS_PWMS) || defined(IC74HC595_HAS_SERVOS) - ic74hc595_shift_io_pins(); + shift_register_io_pins(); #endif } diff --git a/uCNC/src/hal/mcus/mcu.c b/uCNC/src/hal/mcus/mcu.c index e80551f56..999989ad2 100644 --- a/uCNC/src/hal/mcus/mcu.c +++ b/uCNC/src/hal/mcus/mcu.c @@ -1117,3 +1117,13 @@ void __attribute__((weak)) mcu_spi2_stop(void) spi_port_t __attribute__((used)) mcu_spi2_port = {.isbusy = false, .start = mcu_spi2_start, .xmit = mcu_spi2_xmit, .bulk_xmit = mcu_spi2_bulk_transfer, .stop = mcu_spi2_stop}; #endif + +uint8_t __attribute__((weak)) mcu_softpwm_freq_config(uint16_t freq) +{ + // keeps 8 bit resolution up to 500Hz + // reduces bit resolution for higher frequencies + + // determines the bit resolution (7 - esp32_pwm_res); + uint8_t res = (uint8_t)MAX((int8_t)ceilf(log2(freq * 0.002f)), 0); + return res; +} diff --git a/uCNC/src/hal/mcus/rp2040/mcu_rp2040.c b/uCNC/src/hal/mcus/rp2040/mcu_rp2040.c index 0c84bf2df..353f5478a 100644 --- a/uCNC/src/hal/mcus/rp2040/mcu_rp2040.c +++ b/uCNC/src/hal/mcus/rp2040/mcu_rp2040.c @@ -66,7 +66,7 @@ void ic74hc595_pio_init() // disable this function // IO will be updated at a fixed rate -MCU_CALLBACK void ic74hc595_shift_io_pins(void) +MCU_CALLBACK void shift_register_io_pins(void) { ic74hc595_program_write(pio_ic74hc595, sm_ic74hc595, *((volatile uint32_t *)&ic74hc595_io_pins[0])); } diff --git a/uCNC/src/hal/mcus/rp2350/mcu_rp2350.c b/uCNC/src/hal/mcus/rp2350/mcu_rp2350.c index 93f4ab4ae..b60db41bd 100644 --- a/uCNC/src/hal/mcus/rp2350/mcu_rp2350.c +++ b/uCNC/src/hal/mcus/rp2350/mcu_rp2350.c @@ -66,7 +66,7 @@ void ic74hc595_pio_init() // disable this function // IO will be updated at a fixed rate -MCU_CALLBACK void ic74hc595_shift_io_pins(void) +MCU_CALLBACK void shift_register_io_pins(void) { ic74hc595_program_write(pio_ic74hc595, sm_ic74hc595, *((volatile uint32_t *)&ic74hc595_io_pins[0])); } diff --git a/uCNC/src/hal/mcus/virtual/mcumap_virtual.h b/uCNC/src/hal/mcus/virtual/mcumap_virtual.h index 4614338e2..4fab754ac 100644 --- a/uCNC/src/hal/mcus/virtual/mcumap_virtual.h +++ b/uCNC/src/hal/mcus/virtual/mcumap_virtual.h @@ -36,6 +36,8 @@ #define rom_memcpy memcpy #define rom_read_byte * +#define MCU_WEAK __attribute__((weak,weakref)) + /* 7.18.2.1 Limits of exact-width integer types */ #define INT8_MIN (-128) #define INT16_MIN (-32768) @@ -258,6 +260,8 @@ #define DIO77 77 #define DOUT31 78 #define DIO78 78 + +#ifndef EMULATE_74HC165 #define LIMIT_X 100 #define DIO100 100 #define LIMIT_Y 101 @@ -286,38 +290,6 @@ #define DIO112 112 #define CS_RES 113 #define DIO113 113 -#define ANALOG0 114 -#define DIO114 114 -#define ANALOG1 115 -#define DIO115 115 -#define ANALOG2 116 -#define DIO116 116 -#define ANALOG3 117 -#define DIO117 117 -#define ANALOG4 118 -#define DIO118 118 -#define ANALOG5 119 -#define DIO119 119 -#define ANALOG6 120 -#define DIO120 120 -#define ANALOG7 121 -#define DIO121 121 -#define ANALOG8 122 -#define DIO122 122 -#define ANALOG9 123 -#define DIO123 123 -#define ANALOG10 124 -#define DIO124 124 -#define ANALOG11 125 -#define DIO125 125 -#define ANALOG12 126 -#define DIO126 126 -#define ANALOG13 127 -#define DIO127 127 -#define ANALOG14 128 -#define DIO128 128 -#define ANALOG15 129 -#define DIO129 129 #define DIN0 130 #define DIO130 130 #define DIN1 131 @@ -334,6 +306,30 @@ #define DIO136 136 #define DIN7 137 #define DIO137 137 +#else +#define IC74HC165_COUNT 4 +#define LIMIT_X_IO_OFFSET 0 +#define LIMIT_Y_IO_OFFSET 1 +#define LIMIT_Z_IO_OFFSET 2 +#define LIMIT_A_IO_OFFSET 3 +#define LIMIT_B_IO_OFFSET 4 +#define LIMIT_C_IO_OFFSET 5 +#define PROBE_IO_OFFSET 6 +#define ESTOP_IO_OFFSET 7 +#define SAFETY_DOOR_IO_OFFSET 8 +#define FHOLD_IO_OFFSET 9 +#define CS_RES_IO_OFFSET 10 +#define DIN0_IO_OFFSET 11 +#define DIN1_IO_OFFSET 12 +#define DIN2_IO_OFFSET 13 +#define DIN3_IO_OFFSET 14 +#define DIN4_IO_OFFSET 15 +#define DIN5_IO_OFFSET 16 +#define DIN6_IO_OFFSET 17 +#define DIN7_IO_OFFSET 18 +// #define PWM0_IO_OFFSET 24 +#endif + #define DIN8 138 #define DIO138 138 #define DIN9 139 @@ -382,6 +378,38 @@ #define DIO160 160 #define DIN31 161 #define DIO161 161 +#define ANALOG0 114 +#define DIO114 114 +#define ANALOG1 115 +#define DIO115 115 +#define ANALOG2 116 +#define DIO116 116 +#define ANALOG3 117 +#define DIO117 117 +#define ANALOG4 118 +#define DIO118 118 +#define ANALOG5 119 +#define DIO119 119 +#define ANALOG6 120 +#define DIO120 120 +#define ANALOG7 121 +#define DIO121 121 +#define ANALOG8 122 +#define DIO122 122 +#define ANALOG9 123 +#define DIO123 123 +#define ANALOG10 124 +#define DIO124 124 +#define ANALOG11 125 +#define DIO125 125 +#define ANALOG12 126 +#define DIO126 126 +#define ANALOG13 127 +#define DIO127 127 +#define ANALOG14 128 +#define DIO128 128 +#define ANALOG15 129 +#define DIO129 129 #define TX 200 #define DIO200 200 #define RX 201 diff --git a/uCNC/src/module.c b/uCNC/src/module.c index 95f5f2146..664013b05 100644 --- a/uCNC/src/module.c +++ b/uCNC/src/module.c @@ -22,7 +22,7 @@ #include "modules/digipot.h" #include "modules/encoder.h" #include "modules/pid.h" -#include "modules/ic74hc595.h" +#include "modules/shift_register.h" #include "modules/modbus.h" #include "modules/softi2c.h" #include "modules/softspi.h" @@ -48,6 +48,7 @@ static FORCEINLINE void load_modules(void) void mod_init(void) { g_module_lockguard = 0; + #ifdef ENABLE_DIGITAL_MSTEP LOAD_MODULE(digimstep); #endif diff --git a/uCNC/src/modules/ic74hc165.h b/uCNC/src/modules/ic74hc165.h new file mode 100644 index 000000000..7cf046042 --- /dev/null +++ b/uCNC/src/modules/ic74hc165.h @@ -0,0 +1,1400 @@ +/* + Name: ic74hc165.h + Description: This module adds the ability to control the IC74HC165 shift register controller on µCNC. + Up to 56 input generic pins can be assigned. + + Copyright: Copyright (c) João Martins + Author: João Martins + Date: 12-02-2025 + + µCNC is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. Please see + + µCNC is distributed WITHOUT ANY WARRANTY; + Also without the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. +*/ + +#ifndef IC74HC165_H +#define IC74HC165_H + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include +#include + +#ifndef LIMIT_X_IO_OFFSET +#define LIMIT_X_IO_OFFSET -1 +#define DIO100_IO_OFFSET -1 +#else +#define DIO100_IO_OFFSET LIMIT_X_IO_OFFSET +#ifdef LIMIT_X +#undef LIMIT_X +#endif +#ifdef DIO100 +#undef DIO100 +#endif +#define LIMIT_X 100 +#define DIO100 -100 +#define LIMIT_X_IO_BYTEOFFSET (LIMIT_X_IO_OFFSET >> 3) +#define LIMIT_X_IO_BITMASK (1 << (LIMIT_X_IO_OFFSET & 0x7)) +#define DIO100_IO_BYTEOFFSET LIMIT_X_IO_BYTEOFFSET +#define DIO100_IO_BITMASK LIMIT_X_IO_BITMASK +#ifndef IC74HC165_HAS_LIMITS +#define IC74HC165_HAS_LIMITS +#endif +#endif +#ifndef LIMIT_Y_IO_OFFSET +#define LIMIT_Y_IO_OFFSET -1 +#define DIO101_IO_OFFSET -1 +#else +#define DIO101_IO_OFFSET LIMIT_Y_IO_OFFSET +#ifdef LIMIT_Y +#undef LIMIT_Y +#endif +#ifdef DIO101 +#undef DIO101 +#endif +#define LIMIT_Y 101 +#define DIO101 -101 +#define LIMIT_Y_IO_BYTEOFFSET (LIMIT_Y_IO_OFFSET >> 3) +#define LIMIT_Y_IO_BITMASK (1 << (LIMIT_Y_IO_OFFSET & 0x7)) +#define DIO101_IO_BYTEOFFSET LIMIT_Y_IO_BYTEOFFSET +#define DIO101_IO_BITMASK LIMIT_Y_IO_BITMASK +#ifndef IC74HC165_HAS_LIMITS +#define IC74HC165_HAS_LIMITS +#endif +#endif +#ifndef LIMIT_Z_IO_OFFSET +#define LIMIT_Z_IO_OFFSET -1 +#define DIO102_IO_OFFSET -1 +#else +#define DIO102_IO_OFFSET LIMIT_Z_IO_OFFSET +#ifdef LIMIT_Z +#undef LIMIT_Z +#endif +#ifdef DIO102 +#undef DIO102 +#endif +#define LIMIT_Z 102 +#define DIO102 -102 +#define LIMIT_Z_IO_BYTEOFFSET (LIMIT_Z_IO_OFFSET >> 3) +#define LIMIT_Z_IO_BITMASK (1 << (LIMIT_Z_IO_OFFSET & 0x7)) +#define DIO102_IO_BYTEOFFSET LIMIT_Z_IO_BYTEOFFSET +#define DIO102_IO_BITMASK LIMIT_Z_IO_BITMASK +#ifndef IC74HC165_HAS_LIMITS +#define IC74HC165_HAS_LIMITS +#endif +#endif +#ifndef LIMIT_X2_IO_OFFSET +#define LIMIT_X2_IO_OFFSET -1 +#define DIO103_IO_OFFSET -1 +#else +#define DIO103_IO_OFFSET LIMIT_X2_IO_OFFSET +#ifdef LIMIT_X2 +#undef LIMIT_X2 +#endif +#ifdef DIO103 +#undef DIO103 +#endif +#define LIMIT_X2 103 +#define DIO103 -103 +#define LIMIT_X2_IO_BYTEOFFSET (LIMIT_X2_IO_OFFSET >> 3) +#define LIMIT_X2_IO_BITMASK (1 << (LIMIT_X2_IO_OFFSET & 0x7)) +#define DIO103_IO_BYTEOFFSET LIMIT_X2_IO_BYTEOFFSET +#define DIO103_IO_BITMASK LIMIT_X2_IO_BITMASK +#ifndef IC74HC165_HAS_LIMITS +#define IC74HC165_HAS_LIMITS +#endif +#endif +#ifndef LIMIT_Y2_IO_OFFSET +#define LIMIT_Y2_IO_OFFSET -1 +#define DIO104_IO_OFFSET -1 +#else +#define DIO104_IO_OFFSET LIMIT_Y2_IO_OFFSET +#ifdef LIMIT_Y2 +#undef LIMIT_Y2 +#endif +#ifdef DIO104 +#undef DIO104 +#endif +#define LIMIT_Y2 104 +#define DIO104 -104 +#define LIMIT_Y2_IO_BYTEOFFSET (LIMIT_Y2_IO_OFFSET >> 3) +#define LIMIT_Y2_IO_BITMASK (1 << (LIMIT_Y2_IO_OFFSET & 0x7)) +#define DIO104_IO_BYTEOFFSET LIMIT_Y2_IO_BYTEOFFSET +#define DIO104_IO_BITMASK LIMIT_Y2_IO_BITMASK +#ifndef IC74HC165_HAS_LIMITS +#define IC74HC165_HAS_LIMITS +#endif +#endif +#ifndef LIMIT_Z2_IO_OFFSET +#define LIMIT_Z2_IO_OFFSET -1 +#define DIO105_IO_OFFSET -1 +#else +#define DIO105_IO_OFFSET LIMIT_Z2_IO_OFFSET +#ifdef LIMIT_Z2 +#undef LIMIT_Z2 +#endif +#ifdef DIO105 +#undef DIO105 +#endif +#define LIMIT_Z2 105 +#define DIO105 -105 +#define LIMIT_Z2_IO_BYTEOFFSET (LIMIT_Z2_IO_OFFSET >> 3) +#define LIMIT_Z2_IO_BITMASK (1 << (LIMIT_Z2_IO_OFFSET & 0x7)) +#define DIO105_IO_BYTEOFFSET LIMIT_Z2_IO_BYTEOFFSET +#define DIO105_IO_BITMASK LIMIT_Z2_IO_BITMASK +#ifndef IC74HC165_HAS_LIMITS +#define IC74HC165_HAS_LIMITS +#endif +#endif +#ifndef LIMIT_A_IO_OFFSET +#define LIMIT_A_IO_OFFSET -1 +#define DIO106_IO_OFFSET -1 +#else +#define DIO106_IO_OFFSET LIMIT_A_IO_OFFSET +#ifdef LIMIT_A +#undef LIMIT_A +#endif +#ifdef DIO106 +#undef DIO106 +#endif +#define LIMIT_A 106 +#define DIO106 -106 +#define LIMIT_A_IO_BYTEOFFSET (LIMIT_A_IO_OFFSET >> 3) +#define LIMIT_A_IO_BITMASK (1 << (LIMIT_A_IO_OFFSET & 0x7)) +#define DIO106_IO_BYTEOFFSET LIMIT_A_IO_BYTEOFFSET +#define DIO106_IO_BITMASK LIMIT_A_IO_BITMASK +#ifndef IC74HC165_HAS_LIMITS +#define IC74HC165_HAS_LIMITS +#endif +#endif +#ifndef LIMIT_B_IO_OFFSET +#define LIMIT_B_IO_OFFSET -1 +#define DIO107_IO_OFFSET -1 +#else +#define DIO107_IO_OFFSET LIMIT_B_IO_OFFSET +#ifdef LIMIT_B +#undef LIMIT_B +#endif +#ifdef DIO107 +#undef DIO107 +#endif +#define LIMIT_B 107 +#define DIO107 -107 +#define LIMIT_B_IO_BYTEOFFSET (LIMIT_B_IO_OFFSET >> 3) +#define LIMIT_B_IO_BITMASK (1 << (LIMIT_B_IO_OFFSET & 0x7)) +#define DIO107_IO_BYTEOFFSET LIMIT_B_IO_BYTEOFFSET +#define DIO107_IO_BITMASK LIMIT_B_IO_BITMASK +#ifndef IC74HC165_HAS_LIMITS +#define IC74HC165_HAS_LIMITS +#endif +#endif +#ifndef LIMIT_C_IO_OFFSET +#define LIMIT_C_IO_OFFSET -1 +#define DIO108_IO_OFFSET -1 +#else +#define DIO108_IO_OFFSET LIMIT_C_IO_OFFSET +#ifdef LIMIT_C +#undef LIMIT_C +#endif +#ifdef DIO108 +#undef DIO108 +#endif +#define LIMIT_C 108 +#define DIO108 -108 +#define LIMIT_C_IO_BYTEOFFSET (LIMIT_C_IO_OFFSET >> 3) +#define LIMIT_C_IO_BITMASK (1 << (LIMIT_C_IO_OFFSET & 0x7)) +#define DIO108_IO_BYTEOFFSET LIMIT_C_IO_BYTEOFFSET +#define DIO108_IO_BITMASK LIMIT_C_IO_BITMASK +#ifndef IC74HC165_HAS_LIMITS +#define IC74HC165_HAS_LIMITS +#endif +#endif +#ifndef PROBE_IO_OFFSET +#define PROBE_IO_OFFSET -1 +#define DIO109_IO_OFFSET -1 +#else +#define DIO109_IO_OFFSET PROBE_IO_OFFSET +#ifdef PROBE +#undef PROBE +#endif +#ifdef DIO109 +#undef DIO109 +#endif +#define PROBE 109 +#define DIO109 -109 +#define PROBE_IO_BYTEOFFSET (PROBE_IO_OFFSET >> 3) +#define PROBE_IO_BITMASK (1 << (PROBE_IO_OFFSET & 0x7)) +#define DIO109_IO_BYTEOFFSET PROBE_IO_BYTEOFFSET +#define DIO109_IO_BITMASK PROBE_IO_BITMASK +#ifndef IC74HC165_HAS_PROBE +#define IC74HC165_HAS_PROBE +#endif +#endif +#ifndef ESTOP_IO_OFFSET +#define ESTOP_IO_OFFSET -1 +#define DIO110_IO_OFFSET -1 +#else +#define DIO110_IO_OFFSET ESTOP_IO_OFFSET +#ifdef ESTOP +#undef ESTOP +#endif +#ifdef DIO110 +#undef DIO110 +#endif +#define ESTOP 110 +#define DIO110 -110 +#define ESTOP_IO_BYTEOFFSET (ESTOP_IO_OFFSET >> 3) +#define ESTOP_IO_BITMASK (1 << (ESTOP_IO_OFFSET & 0x7)) +#define DIO110_IO_BYTEOFFSET ESTOP_IO_BYTEOFFSET +#define DIO110_IO_BITMASK ESTOP_IO_BITMASK +#ifndef IC74HC165_HAS_CONTROLS +#define IC74HC165_HAS_CONTROLS +#endif +#endif +#ifndef SAFETY_DOOR_IO_OFFSET +#define SAFETY_DOOR_IO_OFFSET -1 +#define DIO111_IO_OFFSET -1 +#else +#define DIO111_IO_OFFSET SAFETY_DOOR_IO_OFFSET +#ifdef SAFETY_DOOR +#undef SAFETY_DOOR +#endif +#ifdef DIO111 +#undef DIO111 +#endif +#define SAFETY_DOOR 111 +#define DIO111 -111 +#define SAFETY_DOOR_IO_BYTEOFFSET (SAFETY_DOOR_IO_OFFSET >> 3) +#define SAFETY_DOOR_IO_BITMASK (1 << (SAFETY_DOOR_IO_OFFSET & 0x7)) +#define DIO111_IO_BYTEOFFSET SAFETY_DOOR_IO_BYTEOFFSET +#define DIO111_IO_BITMASK SAFETY_DOOR_IO_BITMASK +#ifndef IC74HC165_HAS_CONTROLS +#define IC74HC165_HAS_CONTROLS +#endif +#endif +#ifndef FHOLD_IO_OFFSET +#define FHOLD_IO_OFFSET -1 +#define DIO112_IO_OFFSET -1 +#else +#define DIO112_IO_OFFSET FHOLD_IO_OFFSET +#ifdef FHOLD +#undef FHOLD +#endif +#ifdef DIO112 +#undef DIO112 +#endif +#define FHOLD 112 +#define DIO112 -112 +#define FHOLD_IO_BYTEOFFSET (FHOLD_IO_OFFSET >> 3) +#define FHOLD_IO_BITMASK (1 << (FHOLD_IO_OFFSET & 0x7)) +#define DIO112_IO_BYTEOFFSET FHOLD_IO_BYTEOFFSET +#define DIO112_IO_BITMASK FHOLD_IO_BITMASK +#ifndef IC74HC165_HAS_CONTROLS +#define IC74HC165_HAS_CONTROLS +#endif +#endif +#ifndef CS_RES_IO_OFFSET +#define CS_RES_IO_OFFSET -1 +#define DIO113_IO_OFFSET -1 +#else +#define DIO113_IO_OFFSET CS_RES_IO_OFFSET +#ifdef CS_RES +#undef CS_RES +#endif +#ifdef DIO113 +#undef DIO113 +#endif +#define CS_RES 113 +#define DIO113 -113 +#define CS_RES_IO_BYTEOFFSET (CS_RES_IO_OFFSET >> 3) +#define CS_RES_IO_BITMASK (1 << (CS_RES_IO_OFFSET & 0x7)) +#define DIO113_IO_BYTEOFFSET CS_RES_IO_BYTEOFFSET +#define DIO113_IO_BITMASK CS_RES_IO_BITMASK +#ifndef IC74HC165_HAS_CONTROLS +#define IC74HC165_HAS_CONTROLS +#endif +#endif +#ifndef DIN0_IO_OFFSET +#define DIN0_IO_OFFSET -1 +#define DIO130_IO_OFFSET -1 +#else +#define DIO130_IO_OFFSET DIN0_IO_OFFSET +#ifdef DIN0 +#undef DIN0 +#endif +#ifdef DIO130 +#undef DIO130 +#endif +#define DIN0 130 +#define DIO130 -130 +#define DIN0_IO_BYTEOFFSET (DIN0_IO_OFFSET >> 3) +#define DIN0_IO_BITMASK (1 << (DIN0_IO_OFFSET & 0x7)) +#define DIO130_IO_BYTEOFFSET DIN0_IO_BYTEOFFSET +#define DIO130_IO_BITMASK DIN0_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN1_IO_OFFSET +#define DIN1_IO_OFFSET -1 +#define DIO131_IO_OFFSET -1 +#else +#define DIO131_IO_OFFSET DIN1_IO_OFFSET +#ifdef DIN1 +#undef DIN1 +#endif +#ifdef DIO131 +#undef DIO131 +#endif +#define DIN1 131 +#define DIO131 -131 +#define DIN1_IO_BYTEOFFSET (DIN1_IO_OFFSET >> 3) +#define DIN1_IO_BITMASK (1 << (DIN1_IO_OFFSET & 0x7)) +#define DIO131_IO_BYTEOFFSET DIN1_IO_BYTEOFFSET +#define DIO131_IO_BITMASK DIN1_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN2_IO_OFFSET +#define DIN2_IO_OFFSET -1 +#define DIO132_IO_OFFSET -1 +#else +#define DIO132_IO_OFFSET DIN2_IO_OFFSET +#ifdef DIN2 +#undef DIN2 +#endif +#ifdef DIO132 +#undef DIO132 +#endif +#define DIN2 132 +#define DIO132 -132 +#define DIN2_IO_BYTEOFFSET (DIN2_IO_OFFSET >> 3) +#define DIN2_IO_BITMASK (1 << (DIN2_IO_OFFSET & 0x7)) +#define DIO132_IO_BYTEOFFSET DIN2_IO_BYTEOFFSET +#define DIO132_IO_BITMASK DIN2_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN3_IO_OFFSET +#define DIN3_IO_OFFSET -1 +#define DIO133_IO_OFFSET -1 +#else +#define DIO133_IO_OFFSET DIN3_IO_OFFSET +#ifdef DIN3 +#undef DIN3 +#endif +#ifdef DIO133 +#undef DIO133 +#endif +#define DIN3 133 +#define DIO133 -133 +#define DIN3_IO_BYTEOFFSET (DIN3_IO_OFFSET >> 3) +#define DIN3_IO_BITMASK (1 << (DIN3_IO_OFFSET & 0x7)) +#define DIO133_IO_BYTEOFFSET DIN3_IO_BYTEOFFSET +#define DIO133_IO_BITMASK DIN3_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN4_IO_OFFSET +#define DIN4_IO_OFFSET -1 +#define DIO134_IO_OFFSET -1 +#else +#define DIO134_IO_OFFSET DIN4_IO_OFFSET +#ifdef DIN4 +#undef DIN4 +#endif +#ifdef DIO134 +#undef DIO134 +#endif +#define DIN4 134 +#define DIO134 -134 +#define DIN4_IO_BYTEOFFSET (DIN4_IO_OFFSET >> 3) +#define DIN4_IO_BITMASK (1 << (DIN4_IO_OFFSET & 0x7)) +#define DIO134_IO_BYTEOFFSET DIN4_IO_BYTEOFFSET +#define DIO134_IO_BITMASK DIN4_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN5_IO_OFFSET +#define DIN5_IO_OFFSET -1 +#define DIO135_IO_OFFSET -1 +#else +#define DIO135_IO_OFFSET DIN5_IO_OFFSET +#ifdef DIN5 +#undef DIN5 +#endif +#ifdef DIO135 +#undef DIO135 +#endif +#define DIN5 135 +#define DIO135 -135 +#define DIN5_IO_BYTEOFFSET (DIN5_IO_OFFSET >> 3) +#define DIN5_IO_BITMASK (1 << (DIN5_IO_OFFSET & 0x7)) +#define DIO135_IO_BYTEOFFSET DIN5_IO_BYTEOFFSET +#define DIO135_IO_BITMASK DIN5_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN6_IO_OFFSET +#define DIN6_IO_OFFSET -1 +#define DIO136_IO_OFFSET -1 +#else +#define DIO136_IO_OFFSET DIN6_IO_OFFSET +#ifdef DIN6 +#undef DIN6 +#endif +#ifdef DIO136 +#undef DIO136 +#endif +#define DIN6 136 +#define DIO136 -136 +#define DIN6_IO_BYTEOFFSET (DIN6_IO_OFFSET >> 3) +#define DIN6_IO_BITMASK (1 << (DIN6_IO_OFFSET & 0x7)) +#define DIO136_IO_BYTEOFFSET DIN6_IO_BYTEOFFSET +#define DIO136_IO_BITMASK DIN6_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN7_IO_OFFSET +#define DIN7_IO_OFFSET -1 +#define DIO137_IO_OFFSET -1 +#else +#define DIO137_IO_OFFSET DIN7_IO_OFFSET +#ifdef DIN7 +#undef DIN7 +#endif +#ifdef DIO137 +#undef DIO137 +#endif +#define DIN7 137 +#define DIO137 -137 +#define DIN7_IO_BYTEOFFSET (DIN7_IO_OFFSET >> 3) +#define DIN7_IO_BITMASK (1 << (DIN7_IO_OFFSET & 0x7)) +#define DIO137_IO_BYTEOFFSET DIN7_IO_BYTEOFFSET +#define DIO137_IO_BITMASK DIN7_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN8_IO_OFFSET +#define DIN8_IO_OFFSET -1 +#define DIO138_IO_OFFSET -1 +#else +#define DIO138_IO_OFFSET DIN8_IO_OFFSET +#ifdef DIN8 +#undef DIN8 +#endif +#ifdef DIO138 +#undef DIO138 +#endif +#define DIN8 138 +#define DIO138 -138 +#define DIN8_IO_BYTEOFFSET (DIN8_IO_OFFSET >> 3) +#define DIN8_IO_BITMASK (1 << (DIN8_IO_OFFSET & 0x7)) +#define DIO138_IO_BYTEOFFSET DIN8_IO_BYTEOFFSET +#define DIO138_IO_BITMASK DIN8_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN9_IO_OFFSET +#define DIN9_IO_OFFSET -1 +#define DIO139_IO_OFFSET -1 +#else +#define DIO139_IO_OFFSET DIN9_IO_OFFSET +#ifdef DIN9 +#undef DIN9 +#endif +#ifdef DIO139 +#undef DIO139 +#endif +#define DIN9 139 +#define DIO139 -139 +#define DIN9_IO_BYTEOFFSET (DIN9_IO_OFFSET >> 3) +#define DIN9_IO_BITMASK (1 << (DIN9_IO_OFFSET & 0x7)) +#define DIO139_IO_BYTEOFFSET DIN9_IO_BYTEOFFSET +#define DIO139_IO_BITMASK DIN9_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN10_IO_OFFSET +#define DIN10_IO_OFFSET -1 +#define DIO140_IO_OFFSET -1 +#else +#define DIO140_IO_OFFSET DIN10_IO_OFFSET +#ifdef DIN10 +#undef DIN10 +#endif +#ifdef DIO140 +#undef DIO140 +#endif +#define DIN10 140 +#define DIO140 -140 +#define DIN10_IO_BYTEOFFSET (DIN10_IO_OFFSET >> 3) +#define DIN10_IO_BITMASK (1 << (DIN10_IO_OFFSET & 0x7)) +#define DIO140_IO_BYTEOFFSET DIN10_IO_BYTEOFFSET +#define DIO140_IO_BITMASK DIN10_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN11_IO_OFFSET +#define DIN11_IO_OFFSET -1 +#define DIO141_IO_OFFSET -1 +#else +#define DIO141_IO_OFFSET DIN11_IO_OFFSET +#ifdef DIN11 +#undef DIN11 +#endif +#ifdef DIO141 +#undef DIO141 +#endif +#define DIN11 141 +#define DIO141 -141 +#define DIN11_IO_BYTEOFFSET (DIN11_IO_OFFSET >> 3) +#define DIN11_IO_BITMASK (1 << (DIN11_IO_OFFSET & 0x7)) +#define DIO141_IO_BYTEOFFSET DIN11_IO_BYTEOFFSET +#define DIO141_IO_BITMASK DIN11_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN12_IO_OFFSET +#define DIN12_IO_OFFSET -1 +#define DIO142_IO_OFFSET -1 +#else +#define DIO142_IO_OFFSET DIN12_IO_OFFSET +#ifdef DIN12 +#undef DIN12 +#endif +#ifdef DIO142 +#undef DIO142 +#endif +#define DIN12 142 +#define DIO142 -142 +#define DIN12_IO_BYTEOFFSET (DIN12_IO_OFFSET >> 3) +#define DIN12_IO_BITMASK (1 << (DIN12_IO_OFFSET & 0x7)) +#define DIO142_IO_BYTEOFFSET DIN12_IO_BYTEOFFSET +#define DIO142_IO_BITMASK DIN12_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN13_IO_OFFSET +#define DIN13_IO_OFFSET -1 +#define DIO143_IO_OFFSET -1 +#else +#define DIO143_IO_OFFSET DIN13_IO_OFFSET +#ifdef DIN13 +#undef DIN13 +#endif +#ifdef DIO143 +#undef DIO143 +#endif +#define DIN13 143 +#define DIO143 -143 +#define DIN13_IO_BYTEOFFSET (DIN13_IO_OFFSET >> 3) +#define DIN13_IO_BITMASK (1 << (DIN13_IO_OFFSET & 0x7)) +#define DIO143_IO_BYTEOFFSET DIN13_IO_BYTEOFFSET +#define DIO143_IO_BITMASK DIN13_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN14_IO_OFFSET +#define DIN14_IO_OFFSET -1 +#define DIO144_IO_OFFSET -1 +#else +#define DIO144_IO_OFFSET DIN14_IO_OFFSET +#ifdef DIN14 +#undef DIN14 +#endif +#ifdef DIO144 +#undef DIO144 +#endif +#define DIN14 144 +#define DIO144 -144 +#define DIN14_IO_BYTEOFFSET (DIN14_IO_OFFSET >> 3) +#define DIN14_IO_BITMASK (1 << (DIN14_IO_OFFSET & 0x7)) +#define DIO144_IO_BYTEOFFSET DIN14_IO_BYTEOFFSET +#define DIO144_IO_BITMASK DIN14_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN15_IO_OFFSET +#define DIN15_IO_OFFSET -1 +#define DIO145_IO_OFFSET -1 +#else +#define DIO145_IO_OFFSET DIN15_IO_OFFSET +#ifdef DIN15 +#undef DIN15 +#endif +#ifdef DIO145 +#undef DIO145 +#endif +#define DIN15 145 +#define DIO145 -145 +#define DIN15_IO_BYTEOFFSET (DIN15_IO_OFFSET >> 3) +#define DIN15_IO_BITMASK (1 << (DIN15_IO_OFFSET & 0x7)) +#define DIO145_IO_BYTEOFFSET DIN15_IO_BYTEOFFSET +#define DIO145_IO_BITMASK DIN15_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN16_IO_OFFSET +#define DIN16_IO_OFFSET -1 +#define DIO146_IO_OFFSET -1 +#else +#define DIO146_IO_OFFSET DIN16_IO_OFFSET +#ifdef DIN16 +#undef DIN16 +#endif +#ifdef DIO146 +#undef DIO146 +#endif +#define DIN16 146 +#define DIO146 -146 +#define DIN16_IO_BYTEOFFSET (DIN16_IO_OFFSET >> 3) +#define DIN16_IO_BITMASK (1 << (DIN16_IO_OFFSET & 0x7)) +#define DIO146_IO_BYTEOFFSET DIN16_IO_BYTEOFFSET +#define DIO146_IO_BITMASK DIN16_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN17_IO_OFFSET +#define DIN17_IO_OFFSET -1 +#define DIO147_IO_OFFSET -1 +#else +#define DIO147_IO_OFFSET DIN17_IO_OFFSET +#ifdef DIN17 +#undef DIN17 +#endif +#ifdef DIO147 +#undef DIO147 +#endif +#define DIN17 147 +#define DIO147 -147 +#define DIN17_IO_BYTEOFFSET (DIN17_IO_OFFSET >> 3) +#define DIN17_IO_BITMASK (1 << (DIN17_IO_OFFSET & 0x7)) +#define DIO147_IO_BYTEOFFSET DIN17_IO_BYTEOFFSET +#define DIO147_IO_BITMASK DIN17_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN18_IO_OFFSET +#define DIN18_IO_OFFSET -1 +#define DIO148_IO_OFFSET -1 +#else +#define DIO148_IO_OFFSET DIN18_IO_OFFSET +#ifdef DIN18 +#undef DIN18 +#endif +#ifdef DIO148 +#undef DIO148 +#endif +#define DIN18 148 +#define DIO148 -148 +#define DIN18_IO_BYTEOFFSET (DIN18_IO_OFFSET >> 3) +#define DIN18_IO_BITMASK (1 << (DIN18_IO_OFFSET & 0x7)) +#define DIO148_IO_BYTEOFFSET DIN18_IO_BYTEOFFSET +#define DIO148_IO_BITMASK DIN18_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN19_IO_OFFSET +#define DIN19_IO_OFFSET -1 +#define DIO149_IO_OFFSET -1 +#else +#define DIO149_IO_OFFSET DIN19_IO_OFFSET +#ifdef DIN19 +#undef DIN19 +#endif +#ifdef DIO149 +#undef DIO149 +#endif +#define DIN19 149 +#define DIO149 -149 +#define DIN19_IO_BYTEOFFSET (DIN19_IO_OFFSET >> 3) +#define DIN19_IO_BITMASK (1 << (DIN19_IO_OFFSET & 0x7)) +#define DIO149_IO_BYTEOFFSET DIN19_IO_BYTEOFFSET +#define DIO149_IO_BITMASK DIN19_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN20_IO_OFFSET +#define DIN20_IO_OFFSET -1 +#define DIO150_IO_OFFSET -1 +#else +#define DIO150_IO_OFFSET DIN20_IO_OFFSET +#ifdef DIN20 +#undef DIN20 +#endif +#ifdef DIO150 +#undef DIO150 +#endif +#define DIN20 150 +#define DIO150 -150 +#define DIN20_IO_BYTEOFFSET (DIN20_IO_OFFSET >> 3) +#define DIN20_IO_BITMASK (1 << (DIN20_IO_OFFSET & 0x7)) +#define DIO150_IO_BYTEOFFSET DIN20_IO_BYTEOFFSET +#define DIO150_IO_BITMASK DIN20_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN21_IO_OFFSET +#define DIN21_IO_OFFSET -1 +#define DIO151_IO_OFFSET -1 +#else +#define DIO151_IO_OFFSET DIN21_IO_OFFSET +#ifdef DIN21 +#undef DIN21 +#endif +#ifdef DIO151 +#undef DIO151 +#endif +#define DIN21 151 +#define DIO151 -151 +#define DIN21_IO_BYTEOFFSET (DIN21_IO_OFFSET >> 3) +#define DIN21_IO_BITMASK (1 << (DIN21_IO_OFFSET & 0x7)) +#define DIO151_IO_BYTEOFFSET DIN21_IO_BYTEOFFSET +#define DIO151_IO_BITMASK DIN21_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN22_IO_OFFSET +#define DIN22_IO_OFFSET -1 +#define DIO152_IO_OFFSET -1 +#else +#define DIO152_IO_OFFSET DIN22_IO_OFFSET +#ifdef DIN22 +#undef DIN22 +#endif +#ifdef DIO152 +#undef DIO152 +#endif +#define DIN22 152 +#define DIO152 -152 +#define DIN22_IO_BYTEOFFSET (DIN22_IO_OFFSET >> 3) +#define DIN22_IO_BITMASK (1 << (DIN22_IO_OFFSET & 0x7)) +#define DIO152_IO_BYTEOFFSET DIN22_IO_BYTEOFFSET +#define DIO152_IO_BITMASK DIN22_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN23_IO_OFFSET +#define DIN23_IO_OFFSET -1 +#define DIO153_IO_OFFSET -1 +#else +#define DIO153_IO_OFFSET DIN23_IO_OFFSET +#ifdef DIN23 +#undef DIN23 +#endif +#ifdef DIO153 +#undef DIO153 +#endif +#define DIN23 153 +#define DIO153 -153 +#define DIN23_IO_BYTEOFFSET (DIN23_IO_OFFSET >> 3) +#define DIN23_IO_BITMASK (1 << (DIN23_IO_OFFSET & 0x7)) +#define DIO153_IO_BYTEOFFSET DIN23_IO_BYTEOFFSET +#define DIO153_IO_BITMASK DIN23_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN24_IO_OFFSET +#define DIN24_IO_OFFSET -1 +#define DIO154_IO_OFFSET -1 +#else +#define DIO154_IO_OFFSET DIN24_IO_OFFSET +#ifdef DIN24 +#undef DIN24 +#endif +#ifdef DIO154 +#undef DIO154 +#endif +#define DIN24 154 +#define DIO154 -154 +#define DIN24_IO_BYTEOFFSET (DIN24_IO_OFFSET >> 3) +#define DIN24_IO_BITMASK (1 << (DIN24_IO_OFFSET & 0x7)) +#define DIO154_IO_BYTEOFFSET DIN24_IO_BYTEOFFSET +#define DIO154_IO_BITMASK DIN24_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN25_IO_OFFSET +#define DIN25_IO_OFFSET -1 +#define DIO155_IO_OFFSET -1 +#else +#define DIO155_IO_OFFSET DIN25_IO_OFFSET +#ifdef DIN25 +#undef DIN25 +#endif +#ifdef DIO155 +#undef DIO155 +#endif +#define DIN25 155 +#define DIO155 -155 +#define DIN25_IO_BYTEOFFSET (DIN25_IO_OFFSET >> 3) +#define DIN25_IO_BITMASK (1 << (DIN25_IO_OFFSET & 0x7)) +#define DIO155_IO_BYTEOFFSET DIN25_IO_BYTEOFFSET +#define DIO155_IO_BITMASK DIN25_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN26_IO_OFFSET +#define DIN26_IO_OFFSET -1 +#define DIO156_IO_OFFSET -1 +#else +#define DIO156_IO_OFFSET DIN26_IO_OFFSET +#ifdef DIN26 +#undef DIN26 +#endif +#ifdef DIO156 +#undef DIO156 +#endif +#define DIN26 156 +#define DIO156 -156 +#define DIN26_IO_BYTEOFFSET (DIN26_IO_OFFSET >> 3) +#define DIN26_IO_BITMASK (1 << (DIN26_IO_OFFSET & 0x7)) +#define DIO156_IO_BYTEOFFSET DIN26_IO_BYTEOFFSET +#define DIO156_IO_BITMASK DIN26_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN27_IO_OFFSET +#define DIN27_IO_OFFSET -1 +#define DIO157_IO_OFFSET -1 +#else +#define DIO157_IO_OFFSET DIN27_IO_OFFSET +#ifdef DIN27 +#undef DIN27 +#endif +#ifdef DIO157 +#undef DIO157 +#endif +#define DIN27 157 +#define DIO157 -157 +#define DIN27_IO_BYTEOFFSET (DIN27_IO_OFFSET >> 3) +#define DIN27_IO_BITMASK (1 << (DIN27_IO_OFFSET & 0x7)) +#define DIO157_IO_BYTEOFFSET DIN27_IO_BYTEOFFSET +#define DIO157_IO_BITMASK DIN27_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN28_IO_OFFSET +#define DIN28_IO_OFFSET -1 +#define DIO158_IO_OFFSET -1 +#else +#define DIO158_IO_OFFSET DIN28_IO_OFFSET +#ifdef DIN28 +#undef DIN28 +#endif +#ifdef DIO158 +#undef DIO158 +#endif +#define DIN28 158 +#define DIO158 -158 +#define DIN28_IO_BYTEOFFSET (DIN28_IO_OFFSET >> 3) +#define DIN28_IO_BITMASK (1 << (DIN28_IO_OFFSET & 0x7)) +#define DIO158_IO_BYTEOFFSET DIN28_IO_BYTEOFFSET +#define DIO158_IO_BITMASK DIN28_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN29_IO_OFFSET +#define DIN29_IO_OFFSET -1 +#define DIO159_IO_OFFSET -1 +#else +#define DIO159_IO_OFFSET DIN29_IO_OFFSET +#ifdef DIN29 +#undef DIN29 +#endif +#ifdef DIO159 +#undef DIO159 +#endif +#define DIN29 159 +#define DIO159 -159 +#define DIN29_IO_BYTEOFFSET (DIN29_IO_OFFSET >> 3) +#define DIN29_IO_BITMASK (1 << (DIN29_IO_OFFSET & 0x7)) +#define DIO159_IO_BYTEOFFSET DIN29_IO_BYTEOFFSET +#define DIO159_IO_BITMASK DIN29_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN30_IO_OFFSET +#define DIN30_IO_OFFSET -1 +#define DIO160_IO_OFFSET -1 +#else +#define DIO160_IO_OFFSET DIN30_IO_OFFSET +#ifdef DIN30 +#undef DIN30 +#endif +#ifdef DIO160 +#undef DIO160 +#endif +#define DIN30 160 +#define DIO160 -160 +#define DIN30_IO_BYTEOFFSET (DIN30_IO_OFFSET >> 3) +#define DIN30_IO_BITMASK (1 << (DIN30_IO_OFFSET & 0x7)) +#define DIO160_IO_BYTEOFFSET DIN30_IO_BYTEOFFSET +#define DIO160_IO_BITMASK DIN30_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN31_IO_OFFSET +#define DIN31_IO_OFFSET -1 +#define DIO161_IO_OFFSET -1 +#else +#define DIO161_IO_OFFSET DIN31_IO_OFFSET +#ifdef DIN31 +#undef DIN31 +#endif +#ifdef DIO161 +#undef DIO161 +#endif +#define DIN31 161 +#define DIO161 -161 +#define DIN31_IO_BYTEOFFSET (DIN31_IO_OFFSET >> 3) +#define DIN31_IO_BITMASK (1 << (DIN31_IO_OFFSET & 0x7)) +#define DIO161_IO_BYTEOFFSET DIN31_IO_BYTEOFFSET +#define DIO161_IO_BITMASK DIN31_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN32_IO_OFFSET +#define DIN32_IO_OFFSET -1 +#define DIO162_IO_OFFSET -1 +#else +#define DIO162_IO_OFFSET DIN32_IO_OFFSET +#ifdef DIN32 +#undef DIN32 +#endif +#ifdef DIO162 +#undef DIO162 +#endif +#define DIN32 162 +#define DIO162 -162 +#define DIN32_IO_BYTEOFFSET (DIN32_IO_OFFSET >> 3) +#define DIN32_IO_BITMASK (1 << (DIN32_IO_OFFSET & 0x7)) +#define DIO162_IO_BYTEOFFSET DIN32_IO_BYTEOFFSET +#define DIO162_IO_BITMASK DIN32_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN33_IO_OFFSET +#define DIN33_IO_OFFSET -1 +#define DIO163_IO_OFFSET -1 +#else +#define DIO163_IO_OFFSET DIN33_IO_OFFSET +#ifdef DIN33 +#undef DIN33 +#endif +#ifdef DIO163 +#undef DIO163 +#endif +#define DIN33 163 +#define DIO163 -163 +#define DIN33_IO_BYTEOFFSET (DIN33_IO_OFFSET >> 3) +#define DIN33_IO_BITMASK (1 << (DIN33_IO_OFFSET & 0x7)) +#define DIO163_IO_BYTEOFFSET DIN33_IO_BYTEOFFSET +#define DIO163_IO_BITMASK DIN33_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN34_IO_OFFSET +#define DIN34_IO_OFFSET -1 +#define DIO164_IO_OFFSET -1 +#else +#define DIO164_IO_OFFSET DIN34_IO_OFFSET +#ifdef DIN34 +#undef DIN34 +#endif +#ifdef DIO164 +#undef DIO164 +#endif +#define DIN34 164 +#define DIO164 -164 +#define DIN34_IO_BYTEOFFSET (DIN34_IO_OFFSET >> 3) +#define DIN34_IO_BITMASK (1 << (DIN34_IO_OFFSET & 0x7)) +#define DIO164_IO_BYTEOFFSET DIN34_IO_BYTEOFFSET +#define DIO164_IO_BITMASK DIN34_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN35_IO_OFFSET +#define DIN35_IO_OFFSET -1 +#define DIO165_IO_OFFSET -1 +#else +#define DIO165_IO_OFFSET DIN35_IO_OFFSET +#ifdef DIN35 +#undef DIN35 +#endif +#ifdef DIO165 +#undef DIO165 +#endif +#define DIN35 165 +#define DIO165 -165 +#define DIN35_IO_BYTEOFFSET (DIN35_IO_OFFSET >> 3) +#define DIN35_IO_BITMASK (1 << (DIN35_IO_OFFSET & 0x7)) +#define DIO165_IO_BYTEOFFSET DIN35_IO_BYTEOFFSET +#define DIO165_IO_BITMASK DIN35_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN36_IO_OFFSET +#define DIN36_IO_OFFSET -1 +#define DIO166_IO_OFFSET -1 +#else +#define DIO166_IO_OFFSET DIN36_IO_OFFSET +#ifdef DIN36 +#undef DIN36 +#endif +#ifdef DIO166 +#undef DIO166 +#endif +#define DIN36 166 +#define DIO166 -166 +#define DIN36_IO_BYTEOFFSET (DIN36_IO_OFFSET >> 3) +#define DIN36_IO_BITMASK (1 << (DIN36_IO_OFFSET & 0x7)) +#define DIO166_IO_BYTEOFFSET DIN36_IO_BYTEOFFSET +#define DIO166_IO_BITMASK DIN36_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN37_IO_OFFSET +#define DIN37_IO_OFFSET -1 +#define DIO167_IO_OFFSET -1 +#else +#define DIO167_IO_OFFSET DIN37_IO_OFFSET +#ifdef DIN37 +#undef DIN37 +#endif +#ifdef DIO167 +#undef DIO167 +#endif +#define DIN37 167 +#define DIO167 -167 +#define DIN37_IO_BYTEOFFSET (DIN37_IO_OFFSET >> 3) +#define DIN37_IO_BITMASK (1 << (DIN37_IO_OFFSET & 0x7)) +#define DIO167_IO_BYTEOFFSET DIN37_IO_BYTEOFFSET +#define DIO167_IO_BITMASK DIN37_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN38_IO_OFFSET +#define DIN38_IO_OFFSET -1 +#define DIO168_IO_OFFSET -1 +#else +#define DIO168_IO_OFFSET DIN38_IO_OFFSET +#ifdef DIN38 +#undef DIN38 +#endif +#ifdef DIO168 +#undef DIO168 +#endif +#define DIN38 168 +#define DIO168 -168 +#define DIN38_IO_BYTEOFFSET (DIN38_IO_OFFSET >> 3) +#define DIN38_IO_BITMASK (1 << (DIN38_IO_OFFSET & 0x7)) +#define DIO168_IO_BYTEOFFSET DIN38_IO_BYTEOFFSET +#define DIO168_IO_BITMASK DIN38_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN39_IO_OFFSET +#define DIN39_IO_OFFSET -1 +#define DIO169_IO_OFFSET -1 +#else +#define DIO169_IO_OFFSET DIN39_IO_OFFSET +#ifdef DIN39 +#undef DIN39 +#endif +#ifdef DIO169 +#undef DIO169 +#endif +#define DIN39 169 +#define DIO169 -169 +#define DIN39_IO_BYTEOFFSET (DIN39_IO_OFFSET >> 3) +#define DIN39_IO_BITMASK (1 << (DIN39_IO_OFFSET & 0x7)) +#define DIO169_IO_BYTEOFFSET DIN39_IO_BYTEOFFSET +#define DIO169_IO_BITMASK DIN39_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN40_IO_OFFSET +#define DIN40_IO_OFFSET -1 +#define DIO170_IO_OFFSET -1 +#else +#define DIO170_IO_OFFSET DIN40_IO_OFFSET +#ifdef DIN40 +#undef DIN40 +#endif +#ifdef DIO170 +#undef DIO170 +#endif +#define DIN40 170 +#define DIO170 -170 +#define DIN40_IO_BYTEOFFSET (DIN40_IO_OFFSET >> 3) +#define DIN40_IO_BITMASK (1 << (DIN40_IO_OFFSET & 0x7)) +#define DIO170_IO_BYTEOFFSET DIN40_IO_BYTEOFFSET +#define DIO170_IO_BITMASK DIN40_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN41_IO_OFFSET +#define DIN41_IO_OFFSET -1 +#define DIO171_IO_OFFSET -1 +#else +#define DIO171_IO_OFFSET DIN41_IO_OFFSET +#ifdef DIN41 +#undef DIN41 +#endif +#ifdef DIO171 +#undef DIO171 +#endif +#define DIN41 171 +#define DIO171 -171 +#define DIN41_IO_BYTEOFFSET (DIN41_IO_OFFSET >> 3) +#define DIN41_IO_BITMASK (1 << (DIN41_IO_OFFSET & 0x7)) +#define DIO171_IO_BYTEOFFSET DIN41_IO_BYTEOFFSET +#define DIO171_IO_BITMASK DIN41_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN42_IO_OFFSET +#define DIN42_IO_OFFSET -1 +#define DIO172_IO_OFFSET -1 +#else +#define DIO172_IO_OFFSET DIN42_IO_OFFSET +#ifdef DIN42 +#undef DIN42 +#endif +#ifdef DIO172 +#undef DIO172 +#endif +#define DIN42 172 +#define DIO172 -172 +#define DIN42_IO_BYTEOFFSET (DIN42_IO_OFFSET >> 3) +#define DIN42_IO_BITMASK (1 << (DIN42_IO_OFFSET & 0x7)) +#define DIO172_IO_BYTEOFFSET DIN42_IO_BYTEOFFSET +#define DIO172_IO_BITMASK DIN42_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN43_IO_OFFSET +#define DIN43_IO_OFFSET -1 +#define DIO173_IO_OFFSET -1 +#else +#define DIO173_IO_OFFSET DIN43_IO_OFFSET +#ifdef DIN43 +#undef DIN43 +#endif +#ifdef DIO173 +#undef DIO173 +#endif +#define DIN43 173 +#define DIO173 -173 +#define DIN43_IO_BYTEOFFSET (DIN43_IO_OFFSET >> 3) +#define DIN43_IO_BITMASK (1 << (DIN43_IO_OFFSET & 0x7)) +#define DIO173_IO_BYTEOFFSET DIN43_IO_BYTEOFFSET +#define DIO173_IO_BITMASK DIN43_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN44_IO_OFFSET +#define DIN44_IO_OFFSET -1 +#define DIO174_IO_OFFSET -1 +#else +#define DIO174_IO_OFFSET DIN44_IO_OFFSET +#ifdef DIN44 +#undef DIN44 +#endif +#ifdef DIO174 +#undef DIO174 +#endif +#define DIN44 174 +#define DIO174 -174 +#define DIN44_IO_BYTEOFFSET (DIN44_IO_OFFSET >> 3) +#define DIN44_IO_BITMASK (1 << (DIN44_IO_OFFSET & 0x7)) +#define DIO174_IO_BYTEOFFSET DIN44_IO_BYTEOFFSET +#define DIO174_IO_BITMASK DIN44_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN45_IO_OFFSET +#define DIN45_IO_OFFSET -1 +#define DIO175_IO_OFFSET -1 +#else +#define DIO175_IO_OFFSET DIN45_IO_OFFSET +#ifdef DIN45 +#undef DIN45 +#endif +#ifdef DIO175 +#undef DIO175 +#endif +#define DIN45 175 +#define DIO175 -175 +#define DIN45_IO_BYTEOFFSET (DIN45_IO_OFFSET >> 3) +#define DIN45_IO_BITMASK (1 << (DIN45_IO_OFFSET & 0x7)) +#define DIO175_IO_BYTEOFFSET DIN45_IO_BYTEOFFSET +#define DIO175_IO_BITMASK DIN45_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN46_IO_OFFSET +#define DIN46_IO_OFFSET -1 +#define DIO176_IO_OFFSET -1 +#else +#define DIO176_IO_OFFSET DIN46_IO_OFFSET +#ifdef DIN46 +#undef DIN46 +#endif +#ifdef DIO176 +#undef DIO176 +#endif +#define DIN46 176 +#define DIO176 -176 +#define DIN46_IO_BYTEOFFSET (DIN46_IO_OFFSET >> 3) +#define DIN46_IO_BITMASK (1 << (DIN46_IO_OFFSET & 0x7)) +#define DIO176_IO_BYTEOFFSET DIN46_IO_BYTEOFFSET +#define DIO176_IO_BITMASK DIN46_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN47_IO_OFFSET +#define DIN47_IO_OFFSET -1 +#define DIO177_IO_OFFSET -1 +#else +#define DIO177_IO_OFFSET DIN47_IO_OFFSET +#ifdef DIN47 +#undef DIN47 +#endif +#ifdef DIO177 +#undef DIO177 +#endif +#define DIN47 177 +#define DIO177 -177 +#define DIN47_IO_BYTEOFFSET (DIN47_IO_OFFSET >> 3) +#define DIN47_IO_BITMASK (1 << (DIN47_IO_OFFSET & 0x7)) +#define DIO177_IO_BYTEOFFSET DIN47_IO_BYTEOFFSET +#define DIO177_IO_BITMASK DIN47_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN48_IO_OFFSET +#define DIN48_IO_OFFSET -1 +#define DIO178_IO_OFFSET -1 +#else +#define DIO178_IO_OFFSET DIN48_IO_OFFSET +#ifdef DIN48 +#undef DIN48 +#endif +#ifdef DIO178 +#undef DIO178 +#endif +#define DIN48 178 +#define DIO178 -178 +#define DIN48_IO_BYTEOFFSET (DIN48_IO_OFFSET >> 3) +#define DIN48_IO_BITMASK (1 << (DIN48_IO_OFFSET & 0x7)) +#define DIO178_IO_BYTEOFFSET DIN48_IO_BYTEOFFSET +#define DIO178_IO_BITMASK DIN48_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif +#ifndef DIN49_IO_OFFSET +#define DIN49_IO_OFFSET -1 +#define DIO179_IO_OFFSET -1 +#else +#define DIO179_IO_OFFSET DIN49_IO_OFFSET +#ifdef DIN49 +#undef DIN49 +#endif +#ifdef DIO179 +#undef DIO179 +#endif +#define DIN49 179 +#define DIO179 -179 +#define DIN49_IO_BYTEOFFSET (DIN49_IO_OFFSET >> 3) +#define DIN49_IO_BITMASK (1 << (DIN49_IO_OFFSET & 0x7)) +#define DIO179_IO_BYTEOFFSET DIN49_IO_BYTEOFFSET +#define DIO179_IO_BITMASK DIN49_IO_BITMASK +#ifndef IC74HC165_HAS_DINS +#define IC74HC165_HAS_DINS +#endif +#endif + +#if (IC74HC165_COUNT < 0) +#undef IC74HC165_COUNT +#define IC74HC165_COUNT 0 +#elif (IC74HC165_COUNT > 4) +#error "The maximum number of chained IC74HC165 is 4" +#endif + +#if (IC74HC165_COUNT > 0) +#ifndef __indirect__ +#define __indirect__ex__(X, Y) DIO##X##_##Y +#define __indirect__(X, Y) __indirect__ex__(X, Y) +#endif + extern volatile uint8_t ic74hc165_io_pins[IC74HC165_COUNT]; +#ifndef ic74hc165_get_pin +#define ic74hc165_get_pin(pin) (ic74hc165_io_pins[(__indirect__(pin, IO_BYTEOFFSET))] & (__indirect__(pin, IO_BITMASK))) +#endif +#else +#define ic74hc165_get_pin(pin) 0 +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/uCNC/src/modules/ic74hc595.c b/uCNC/src/modules/ic74hc595.c deleted file mode 100644 index 8c1f2bffa..000000000 --- a/uCNC/src/modules/ic74hc595.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - Name: ic74hc595.c - Description: This module adds the ability to control the IC74HC595 shift register controller (used for example in the MKS-DLC32 board) to µCNC. - Up to 56 output pins can be assigned. - - Copyright: Copyright (c) João Martins - Author: João Martins - Date: 01/09/2022 - - µCNC is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. Please see - - µCNC is distributed WITHOUT ANY WARRANTY; - Also without the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. -*/ - -#include "../cnc.h" -#include -#include - -#ifndef IC74HC595_COUNT -#define IC74HC595_COUNT 0 -#endif - -#ifndef IC74HC595_DATA -#define IC74HC595_DATA DOUT8 -#endif - -#ifndef IC74HC595_CLK -#define IC74HC595_CLK DOUT9 -#endif - -#ifndef IC74HC595_LATCH -#define IC74HC595_LATCH DOUT10 -#endif - -#ifndef IC74HC595_DELAY_CYCLES -#define IC74HC595_DELAY_CYCLES 0 -#endif - -#define ic74hc595_delay() mcu_delay_cycles(IC74HC595_DELAY_CYCLES) -#if (IC74HC595_COUNT != 0) -volatile uint8_t ic74hc595_io_pins[IC74HC595_COUNT]; -#ifndef IC74HC595_CUSTOM_SHIFT_IO -MCU_CALLBACK void __attribute__((weak)) ic74hc595_shift_io_pins(void) -{ - - uint8_t pins[IC74HC595_COUNT]; - __ATOMIC__ - { - memcpy(pins, (const void *)ic74hc595_io_pins, IC74HC595_COUNT); - mcu_clear_output(IC74HC595_LATCH); - for (uint8_t i = IC74HC595_COUNT; i != 0;) - { - i--; -#if (defined(IC74HC595_USE_HW_SPI) && defined(MCU_HAS_SPI)) - mcu_spi_xmit(pins[i]); -#else - uint8_t pinbyte = pins[i]; - for (uint8_t j = 0x80; j != 0; j >>= 1) - { -#if (IC74HC595_DELAY_CYCLES) - ic74hc595_delay(); -#endif - mcu_clear_output(IC74HC595_CLK); - if (pinbyte & j) - { - mcu_set_output(IC74HC595_DATA); - } - else - { - mcu_clear_output(IC74HC595_DATA); - } - mcu_set_output(IC74HC595_CLK); - } -#endif - } -#if (IC74HC595_DELAY_CYCLES) - ic74hc595_delay(); -#endif - mcu_set_output(IC74HC595_LATCH); - } -} -#else -MCU_CALLBACK void __attribute__((weak)) ic74hc595_shift_io_pins(void) -{ -} -#endif -#endif diff --git a/uCNC/src/modules/ic74hc595.h b/uCNC/src/modules/ic74hc595.h index 5368cdba8..76c7eb6cf 100644 --- a/uCNC/src/modules/ic74hc595.h +++ b/uCNC/src/modules/ic74hc595.h @@ -2045,7 +2045,6 @@ extern "C" #endif #endif - #if (IC74HC595_COUNT < 0) #undef IC74HC595_COUNT #define IC74HC595_COUNT 0 @@ -2078,7 +2077,28 @@ extern "C" #define ic74hc595_get_pin(pin) 0 #endif - void ic74hc595_shift_io_pins(void); +/** + * Backward compatibility + */ +#ifdef IC74HC595_DATA +#define SHIFT_REGISTER_SDO IC74HC595_DATA +#endif + +#ifdef IC74HC595_CLK +#define SHIFT_REGISTER_CLK IC74HC595_CLK +#endif + +#ifdef IC74HC595_DELAY_CYCLES +#define SHIFT_REGISTER_DELAY_CYCLES IC74HC595_DELAY_CYCLES +#endif + +#ifdef IC74HC595_CUSTOM_SHIFT_IO +#define SHIFT_REGISTER_CUSTOM_CALLBACK +#endif + +#ifdef IC74HC595_USE_HW_SPI +#define SHIFT_REGISTER_USE_HW_SPI +#endif #ifdef __cplusplus } diff --git a/uCNC/src/modules/shift_register.c b/uCNC/src/modules/shift_register.c new file mode 100644 index 000000000..3cf2ed8f2 --- /dev/null +++ b/uCNC/src/modules/shift_register.c @@ -0,0 +1,161 @@ +/* + Name: ic74hc595.c + Description: This module adds the ability to control the IC74HC595 shift register controller (used for example in the MKS-DLC32 board) to µCNC. + Up to 56 output pins can be assigned. + + Copyright: Copyright (c) João Martins + Author: João Martins + Date: 01/09/2022 + + µCNC is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. Please see + + µCNC is distributed WITHOUT ANY WARRANTY; + Also without the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. +*/ + +#include "../cnc.h" +#include +#include + +#ifndef IC74HC595_COUNT +#define IC74HC595_COUNT 0 +#endif + +#ifndef IC74HC165_COUNT +#define IC74HC165_COUNT 0 +#endif + +#ifndef SHIFT_REGISTER_SDO +#define SHIFT_REGISTER_SDO DOUT8 +#endif + +#ifndef SHIFT_REGISTER_SDI +#define SHIFT_REGISTER_SDI DIN8 +#endif + +#ifndef SHIFT_REGISTER_CLK +#define SHIFT_REGISTER_CLK DOUT9 +#endif + +#ifndef IC74HC595_LATCH +#define IC74HC595_LATCH DOUT10 +#endif + +#ifndef IC74HC165_LOAD +#define IC74HC165_LOAD DOUT11 +#endif + +#ifndef SHIFT_REGISTER_DELAY_CYCLES +#define SHIFT_REGISTER_DELAY_CYCLES 0 +#endif + +#if (IC74HC595_COUNT >= IC74HC165_COUNT) +#define SHIFT_REGISTER_BYTES IC74HC595_COUNT +#else +#define SHIFT_REGISTER_BYTES IC74HC165_COUNT +#endif + +#define shift_register_delay() mcu_delay_cycles(SHIFT_REGISTER_DELAY_CYCLES) +#if (IC74HC595_COUNT != 0) || (IC74HC165_COUNT != 0) +#if (IC74HC595_COUNT != 0) +volatile uint8_t __attribute__((used)) ic74hc595_io_pins[IC74HC595_COUNT]; +#endif +#if (IC74HC165_COUNT != 0) +volatile uint8_t __attribute__((used)) ic74hc165_io_pins[IC74HC165_COUNT]; +#endif +#ifndef SHIFT_REGISTER_CUSTOM_CALLBACK + +DECL_MUTEX(shifter_running); + +MCU_CALLBACK void __attribute__((weak)) shift_register_io_pins(void) +{ + MUTEX_INIT(shifter_running); + + MUTEX_TAKE(shifter_running) + { + uint8_t pins[SHIFT_REGISTER_BYTES]; + +#if (IC74HC165_COUNT > 0) + memset(pins, 0, IC74HC165_COUNT); + mcu_set_output(IC74HC165_LOAD); +#endif +#if (IC74HC595_COUNT > 0) + __ATOMIC__ + { + + memcpy(pins, (const void *)ic74hc595_io_pins, IC74HC595_COUNT); + } + mcu_clear_output(IC74HC595_LATCH); +#endif + /** + * shift bytes + */ + for (uint8_t i = SHIFT_REGISTER_BYTES; i != 0;) + { + i--; +#if (defined(SHIFT_REGISTER_USE_HW_SPI) && defined(MCU_HAS_SPI)) + pins[i] = mcu_spi_xmit(pins[i]); +#else + uint8_t pinbyte = pins[i]; + for (uint8_t j = 0x80; j != 0; j >>= 1) + { +#if (SHIFT_REGISTER_DELAY_CYCLES) + shift_register_delay(); +#endif + mcu_clear_output(SHIFT_REGISTER_CLK); +#if (IC74HC595_COUNT > 0) + // write + if (pinbyte & j) + { + mcu_set_output(SHIFT_REGISTER_SDO); + } + else + { + mcu_clear_output(SHIFT_REGISTER_SDO); + } +#endif +// read +#if (IC74HC165_COUNT > 0) + if (mcu_get_input(SHIFT_REGISTER_SDI)) + { + pinbyte |= j; + } + else + { + pinbyte &= ~j; + } +#endif + mcu_set_output(SHIFT_REGISTER_CLK); + } + +#if (IC74HC165_COUNT > 0) + pins[i] = pinbyte; +#endif + +#if (SHIFT_REGISTER_DELAY_CYCLES) + shift_register_delay(); +#endif + mcu_set_output(SHIFT_REGISTER_CLK); + +#endif + } + +#if (IC74HC165_COUNT > 0) + memcpy((void *)ic74hc165_io_pins, (const void *)pins, IC74HC165_COUNT); + mcu_clear_output(IC74HC165_LOAD); // allow a new load +#endif +#if (IC74HC595_COUNT > 0) + mcu_set_output(IC74HC595_LATCH); +#endif + } +} +#else +MCU_CALLBACK void __attribute__((weak)) shift_register_io_pins(void) +{ +} +#endif +#endif diff --git a/uCNC/src/modules/shift_register.h b/uCNC/src/modules/shift_register.h new file mode 100644 index 000000000..f494a78e1 --- /dev/null +++ b/uCNC/src/modules/shift_register.h @@ -0,0 +1,41 @@ +/* + Name: shift_register.h + Description: This module adds the ability to control the IC74HC595(outputs) and IC74HC165(inputs) shift register controllers (used for example in the MKS-DLC32 board) to µCNC. + + Copyright: Copyright (c) João Martins + Author: João Martins + Date: 12-02-2025 + + µCNC is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. Please see + + µCNC is distributed WITHOUT ANY WARRANTY; + Also without the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. +*/ + +#ifndef SHIFT_REGISTER_H +#define SHIFT_REGISTER_H + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "ic74hc595.h" +#include "ic74hc165.h" +#include "../module.h" + +void shift_register_io_pins(void); + +#ifndef io_extended_pins_update +#define io_extended_pins_update() shift_register_io_pins() +#endif + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/uCNC/src/modules/softspi.h b/uCNC/src/modules/softspi.h index ae3954ffb..71815cb54 100644 --- a/uCNC/src/modules/softspi.h +++ b/uCNC/src/modules/softspi.h @@ -102,6 +102,10 @@ extern "C" { \ io_clear_output(CLKPIN); \ } \ + if (ASSERT_PIN_EXTENDED(CLKPIN)) \ + { \ + io_extended_pins_update(); \ + } \ } \ void NAME##_mosi(bool state) \ { \ @@ -113,8 +117,19 @@ extern "C" { \ io_clear_output(MOSIPIN); \ } \ + if (ASSERT_PIN_EXTENDED(MOSIPIN)) \ + { \ + io_extended_pins_update(); \ + } \ + } \ + bool NAME##_miso(void) \ + { \ + if (ASSERT_PIN_EXTENDED(MISOPIN)) \ + { \ + io_extended_pins_update(); \ + } \ + return io_get_input(MISOPIN); \ } \ - bool NAME##_miso(void) { return io_get_input(MISOPIN); } \ __attribute__((used)) softspi_port_t NAME = {.spiconfig = {.mode = MODE}, .spifreq = FREQ, .spiport = NULL, .clk = &NAME##_clk, .mosi = &NAME##_mosi, .miso = &NAME##_miso, .config = &NAME##_config}; #define HARDSPI(NAME, FREQ, MODE, PORT) __attribute__((used)) softspi_port_t NAME = {.spiconfig = {.mode = MODE}, .spifreq = FREQ, .spiport = &PORT, .clk = NULL, .mosi = NULL, .miso = NULL, .config = NULL}; diff --git a/uCNC/src/modules/softuart.h b/uCNC/src/modules/softuart.h index bfcd9d5ac..c07475e7d 100644 --- a/uCNC/src/modules/softuart.h +++ b/uCNC/src/modules/softuart.h @@ -54,9 +54,17 @@ extern "C" { \ io_clear_output(TXPIN); \ } \ + if (ASSERT_PIN_EXTENDED(TXPIN)) \ + { \ + io_extended_pins_update(); \ + } \ } \ bool NAME##_rx(void) \ { \ + if (ASSERT_PIN_EXTENDED(RXPIN)) \ + { \ + io_extended_pins_update(); \ + } \ return io_get_input(RXPIN); \ } \ void NAME##_wait(void) { mcu_delay_cycles(F_CPU / BAUD); } \ @@ -68,7 +76,7 @@ extern "C" { \ if (state) \ { \ - io_set_output(TRXPIN); \ + io_set_output(TRXPIN); \ } \ else \ { \ diff --git a/uCNC/src/utils.h b/uCNC/src/utils.h index a6312e460..f9c7fd55b 100644 --- a/uCNC/src/utils.h +++ b/uCNC/src/utils.h @@ -192,6 +192,12 @@ extern "C" #define M_COS_TAYLOR_1 0.1666666666666666667f #endif +#define __TIMEOUT_US__(timeout) for (uint32_t elap_us_##timeout, curr_us_##timeout = mcu_free_micros(); timeout > 0; elap_us_##timeout = mcu_free_micros() - curr_us_##timeout, timeout -= MIN(timeout, ((elap_us_##timeout < 1000) ? elap_us_##timeout : 1000 + elap_us_##timeout)), curr_us_##timeout = mcu_free_micros()) +#define __TIMEOUT_MS__(timeout) \ + timeout = (((uint32_t)timeout) < (UINT32_MAX / 1000)) ? (timeout * 1000) : UINT32_MAX; \ + __TIMEOUT_US__(timeout) +#define __TIMEOUT_ASSERT__(timeout) if (timeout == 0) + #ifndef FORCEINLINE #define FORCEINLINE __attribute__((always_inline)) inline #endif @@ -222,6 +228,47 @@ extern "C" #define __ATOMIC_FORCEON__ for (uint8_t __restore_atomic__ __attribute__((__cleanup__(__atomic_out_on))) = 1, __AtomLock = __atomic_in(); __AtomLock; __AtomLock = 0) #endif +#ifndef DECL_MUTEX +#define MUTEX_CLEANUP(name) \ + static void name##_mutex_cleanup(uint8_t *m) \ + { \ + if (!*m /*can unlock*/) \ + { \ + name##_mutex_lock = 0; \ + } \ + } +#define DECL_MUTEX(name) \ + static volatile uint8_t name##_mutex_lock; \ + MUTEX_CLEANUP(name) +#define MUTEX_INIT(name) uint8_t __attribute__((__cleanup__(name##_mutex_cleanup))) name##_mutex_temp = 0 +#define MUTEX_RELEASE(name) if(!name##_mutex_temp /*has the lock*/) name##_mutex_lock = 0 +#define MUTEX_TAKE(name) \ + __ATOMIC__ \ + { \ + name##_mutex_temp = name##_mutex_lock; \ + if (!name##_mutex_temp) \ + { \ + name##_mutex_lock = 1; \ + } \ + } \ + if (!name##_mutex_temp /*the lock was aquired*/) + +#define MUTEX_WAIT(name, timeout_ms) \ + __TIMEOUT_MS__(timeout_us) \ + { \ + __ATOMIC__ \ + { \ + name##_mutex_temp = name##_mutex_lock; \ + if (!name##_mutex_temp) \ + { \ + name##_mutex_lock = 1; \ + break; \ + } \ + } \ + } \ + if (!name##_mutex_temp && timeout_us != 0 /*the lock was aquired in time*/) +#endif + #define __STRGIFY__(s) #s #define STRGIFY(s) __STRGIFY__(s) @@ -423,12 +470,6 @@ extern "C" } #endif -#define __TIMEOUT_US__(timeout) for (uint32_t elap_us_##timeout, curr_us_##timeout = mcu_free_micros(); timeout > 0; elap_us_##timeout = mcu_free_micros() - curr_us_##timeout, timeout -= MIN(timeout, ((elap_us_##timeout<1000) ? elap_us_##timeout : 1000 + elap_us_##timeout)), curr_us_##timeout = mcu_free_micros()) -#define __TIMEOUT_MS__(timeout) \ - timeout = (((uint32_t)timeout) < (UINT32_MAX / 1000)) ? (timeout * 1000) : UINT32_MAX; \ - __TIMEOUT_US__(timeout) -#define __TIMEOUT_ASSERT__(timeout) if (timeout == 0) - #if defined(__GNUC__) && __GNUC__ >= 7 #define __FALL_THROUGH__ __attribute__((fallthrough)); #else