diff --git a/k3ng_rotator_controller/k3ng_rotator_controller.ino b/k3ng_rotator_controller/k3ng_rotator_controller.ino index 26d54ac..7a4020b 100644 --- a/k3ng_rotator_controller/k3ng_rotator_controller.ino +++ b/k3ng_rotator_controller/k3ng_rotator_controller.ino @@ -394,11 +394,22 @@ Added FEATURE_FABO_LCD_PCF8574_DISPLAY Added PRESET_ENCODER_CHANGE_TIME_MS in settings files - 2018.12.25.01 - Fixed bug in RTC sync timing affecting SYNC_WITH_RTC_SECONDS (Thanks, Fred, VK2EFL for fix, and Steve, N4TTY for discovery) + 2018.12.25.01 + Fixed bug in RTC sync timing affecting SYNC_WITH_RTC_SECONDS (Thanks, Fred, VK2EFL for fix, and Steve, N4TTY for discovery) - 2019.01.03.01 - Updated GS-232 M and W commands to accept azimuths over 360 degrees and improved parameter verification + 2019.01.03.01 + Updated GS-232 M and W commands to accept azimuths over 360 degrees and improved parameter verification + + 2020.02.05.01 + Moved debug defines to rotator_debug_log_activation.h + FEATURE_AZ_ROTATION_STALL_DETECTION & FEATURE_EL_ROTATION_STALL_DETECTION + OPTION_ROTATION_STALL_DETECTION_SERIAL_MESSAGE + Settings + STALL_CHECK_FREQUENCY_MS_AZ + STALL_CHECK_DEGREES_THRESHOLD_AZ + STALL_CHECK_FREQUENCY_MS_EL + STALL_CHECK_DEGREES_THRESHOLD_EL + Pins: az_rotation_stall_detected, el_rotation_stall_detected All library files should be placed in directories likes \sketchbook\libraries\library1\ , \sketchbook\libraries\library2\ , etc. Anything rotator_*.* should be in the ino directory! @@ -409,7 +420,7 @@ */ -#define CODE_VERSION "2019.01.03.01" +#define CODE_VERSION "2020.02.05.01" #include #include @@ -578,6 +589,7 @@ #include "rotator_language.h" #include "rotator_debug.h" +#include "rotator_debug_log_activation.h" /*----------------------- variables -------------------------------------*/ @@ -1131,8 +1143,13 @@ void loop() { #endif #endif // ndef FEATURE_REMOTE_UNIT_SLAVE - //read_headings(); + #if defined(FEATURE_AZ_ROTATION_STALL_DETECTION) + az_check_rotation_stall(); + #endif + #if defined(FEATURE_EL_ROTATION_STALL_DETECTION) && defined(FEATURE_ELEVATION_CONTROL) + el_check_rotation_stall(); + #endif #ifdef OPTION_MORE_SERIAL_CHECKS check_serial(); @@ -2980,7 +2997,6 @@ void check_serial(){ control_port_buffer_index++; control_port->write(incoming_serial_byte); } -//zzzzz if (incoming_serial_byte == 13) { // do we have a command termination? if ((control_port_buffer[0] == '\\') || (control_port_buffer[0] == '/')) { process_backslash_command(control_port_buffer, control_port_buffer_index, CONTROL_PORT0, return_string); @@ -4417,8 +4433,6 @@ void update_display(){ // TODO: FEATURE_PARK {done, need to test}, FEATURE_AZ_PRESET_ENCODER and FEATURE_EL_PRESET_ENCODER in status widget {done, need to test} -//zzzzzz - static unsigned long last_full_screen_redraw = 0; if ((millis() - last_full_screen_redraw) > 59999){ @@ -4655,6 +4669,92 @@ void az_check_operation_timeout(){ } } +// -------------------------------------------------------------- +//zzzzzzz +#if defined(FEATURE_AZ_ROTATION_STALL_DETECTION) +void az_check_rotation_stall(){ + + // check if rotation has stalled + + static unsigned long last_check_time = 0; + static int last_raw_azimuth = 0; + static byte rotation_stall_pin_active = 0; + + if (az_state != IDLE){ + if (last_check_time == 0){ + last_raw_azimuth = raw_azimuth; + last_check_time = millis(); + if (rotation_stall_pin_active){ + digitalWriteEnhanced(az_rotation_stall_detected,LOW); + rotation_stall_pin_active = 0; + } + } else { + if ((millis() - last_check_time) > STALL_CHECK_FREQUENCY_MS_AZ){ + if ((abs((raw_azimuth - last_raw_azimuth))*HEADING_MULTIPLIER) < STALL_CHECK_DEGREES_THRESHOLD_AZ){ + #ifdef DEBUG_ROTATION_STALL_DETECTION + debug.println("az_check_rotation_stall: REQUEST_KILL"); + #endif + #ifdef OPTION_ROTATION_STALL_DETECTION_SERIAL_MESSAGE + control_port->println("AZ Rotation Stall Detected"); + #endif + submit_request(AZ, REQUEST_KILL, 0, 78); + digitalWriteEnhanced(az_rotation_stall_detected,HIGH); + rotation_stall_pin_active = 1; + last_check_time = 0; + } else { + last_raw_azimuth = raw_azimuth; + last_check_time = millis(); + } + } + } + } else { + last_check_time = 0; + } +} +#endif //FEATURE_AZ_ROTATION_STALL_DETECTION +// -------------------------------------------------------------- +//zzzzzzz +#if defined(FEATURE_EL_ROTATION_STALL_DETECTION) && defined(FEATURE_ELEVATION_CONTROL) +void el_check_rotation_stall(){ + + // check if rotation has stalled + + static unsigned long last_check_time = 0; + static int last_elevation = 0; + static byte rotation_stall_pin_active = 0; + + if (el_state != IDLE){ + if (last_check_time == 0){ + last_elevation = elevation; + last_check_time = millis(); + if (rotation_stall_pin_active){ + digitalWriteEnhanced(el_rotation_stall_detected,LOW); + rotation_stall_pin_active = 0; + } + } else { + if ((millis() - last_check_time) > STALL_CHECK_FREQUENCY_MS_EL){ + if ((abs((elevation - last_elevation))*HEADING_MULTIPLIER) < STALL_CHECK_DEGREES_THRESHOLD_AZ){ + #ifdef DEBUG_ROTATION_STALL_DETECTION + debug.println("el_check_rotation_stall: REQUEST_KILL"); + #endif + #ifdef OPTION_ROTATION_STALL_DETECTION_SERIAL_MESSAGE + control_port->println("EL Rotation Stall Detected"); + #endif + submit_request(EL, REQUEST_KILL, 0, 78); + digitalWriteEnhanced(el_rotation_stall_detected,HIGH); + rotation_stall_pin_active = 1; + last_check_time = 0; + } else { + last_elevation = elevation; + last_check_time = millis(); + } + } + } + } else { + last_check_time = 0; + } +} +#endif //FEATURE_EL_ROTATION_STALL_DETECTION // -------------------------------------------------------------- #ifdef FEATURE_TIMED_BUFFER @@ -7352,6 +7452,16 @@ void initialize_pins(){ } #endif //FEATURE_AUDIBLE_ALERT + #ifdef FEATURE_AZ_ROTATION_STALL_DETECTION + pinModeEnhanced(az_rotation_stall_detected, OUTPUT); + digitalWriteEnhanced(az_rotation_stall_detected, LOW); + #endif //FEATURE_AZ_ROTATION_STALL_DETECTION + + #ifdef FEATURE_EL_ROTATION_STALL_DETECTION + pinModeEnhanced(el_rotation_stall_detected, OUTPUT); + digitalWriteEnhanced(el_rotation_stall_detected, LOW); + #endif //FEATURE_EL_ROTATION_STALL_DETECTION + } /* initialize_pins */ // -------------------------------------------------------------- @@ -11746,8 +11856,6 @@ byte process_backslash_command(byte input_buffer[], int input_buffer_index, byte configuration_dirty = 1; break; -// zzzzzzz - // TODO : one big status query command #if !defined(OPTION_SAVE_MEMORY_EXCLUDE_EXTENDED_COMMANDS) @@ -12343,7 +12451,6 @@ void process_easycom_command(byte * easycom_command_buffer, int easycom_command_ void process_dcu_1_command(byte * dcu_1_command_buffer, int dcu_1_command_buffer_index, byte source_port, char * return_string){ -//zzzzzzz /* DCU-1 protocol implementation diff --git a/k3ng_rotator_controller/rotator_debug_log_activation.h b/k3ng_rotator_controller/rotator_debug_log_activation.h new file mode 100644 index 0000000..5b570ca --- /dev/null +++ b/k3ng_rotator_controller/rotator_debug_log_activation.h @@ -0,0 +1,62 @@ +/* ---------------------- debug stuff - don't touch unless you know what you are doing --------------------------- */ + + + +#define DEFAULT_DEBUG_STATE 0 // 1 = activate debug mode at startup; this should be set to zero unless you're debugging something at startup + +#define DEBUG_DUMP // normally compile with this activated unless you're really trying to save memory +// #define DEBUG_LOOP +// #define DEBUG_BUTTONS +// #define DEBUG_SERIAL +// #define DEBUG_SERVICE_REQUEST_QUEUE +// #define DEBUG_EEPROM +// #define DEBUG_AZ_SPEED_POT +// #define DEBUG_AZ_PRESET_POT +// #define DEBUG_PRESET_ENCODERS +// #define DEBUG_AZ_MANUAL_ROTATE_LIMITS +// #define DEBUG_EL_MANUAL_ROTATE_LIMITS +// #define DEBUG_BRAKE +// #define DEBUG_OVERLAP +// #define DEBUG_DISPLAY +// #define DEBUG_AZ_CHECK_OPERATION_TIMEOUT +// #define DEBUG_TIMED_BUFFER +// #define DEBUG_EL_CHECK_OPERATION_TIMEOUT +// #define DEBUG_VARIABLE_OUTPUTS +// #define DEBUG_ROTATOR +// #define DEBUG_SUBMIT_REQUEST +// #define DEBUG_SERVICE_ROTATION +// #define DEBUG_POSITION_ROTARY_ENCODER +// #define DEBUG_POSITION_ROTARY_ENCODER_USE_PJRC_LIBRARY +// #define DEBUG_PROFILE_LOOP_TIME +// #define DEBUG_POSITION_PULSE_INPUT +// #define DEBUG_ACCEL +// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER +// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER_BAD_DATA +// #define DEBUG_HEADING_READING_TIME +// #define DEBUG_JOYSTICK +// #define DEBUG_ROTATION_INDICATION_PIN +// #define DEBUG_HH12 +// #define DEBUG_PARK +// #define DEBUG_LIMIT_SENSE +// #define DEBUG_AZ_POSITION_INCREMENTAL_ENCODER +// #define DEBUG_EL_POSITION_INCREMENTAL_ENCODER +// #define DEBUG_MOON_TRACKING +// #define DEBUG_SUN_TRACKING +// #define DEBUG_GPS +// #define DEBUG_GPS_SERIAL +// #define DEBUG_OFFSET +// #define DEBUG_RTC +// #define DEBUG_PROCESS_YAESU +// #define DEBUG_ETHERNET +// #define DEBUG_PROCESS_SLAVE +// #define DEBUG_MEMSIC_2125 +// #define DEBUG_SYNC_MASTER_CLOCK_TO_SLAVE +// #define DEBUG_SYNC_MASTER_COORDINATES_TO_SLAVE +// #define DEBUG_HMC5883L +// #define DEBUG_POLOLU_LSM303_CALIBRATION +// #define DEBUG_STEPPER +// #define DEBUG_AUTOCORRECT +// #define DEBUG_A2_ENCODER +// #define DEBUG_A2_ENCODER_LOOPBACK_TEST +// #define DEBUG_QMC5883 +// #define DEBUG_ROTATION_STALL_DETECTION \ No newline at end of file diff --git a/k3ng_rotator_controller/rotator_features.h b/k3ng_rotator_controller/rotator_features.h index 3b3d5d4..34ca526 100755 --- a/k3ng_rotator_controller/rotator_features.h +++ b/k3ng_rotator_controller/rotator_features.h @@ -121,6 +121,9 @@ // #define FEATURE_TWO_DECIMAL_PLACE_HEADINGS // under development - not working yet! // #define FEATURE_AZIMUTH_CORRECTION // correct the azimuth using a calibration table in rotator_settings.h // #define FEATURE_ELEVATION_CORRECTION // correct the elevation using a calibration table in rotator_settings.h +// #define FEATURE_AZ_ROTATION_STALL_DETECTION // Azimuth rotation stall detection - pin: az_rotation_stall_detected +// #define FEATURE_EL_ROTATION_STALL_DETECTION // Elevation rotation stall detection - pin: el_rotation_stall_detected +// #define OPTION_ROTATION_STALL_DETECTION_SERIAL_MESSAGE // Sends message out serial port when rotation stall has been detected // #define FEATURE_ANCILLARY_PIN_CONTROL // control I/O pins with serial commands \F, \N, \P // #define FEATURE_JOYSTICK_CONTROL // analog joystick support // #define OPTION_JOYSTICK_REVERSE_X_AXIS @@ -170,71 +173,3 @@ // #define OPTION_GPS_EXCLUDE_MISSING_LF_CR_HANDLING // #define OPTION_MORE_SERIAL_CHECKS // #define OPTION_STEPPER_MOTOR_USE_TIMER_ONE_INSTEAD_OF_FIVE - -/* ---------------------- debug stuff - don't touch unless you know what you are doing --------------------------- */ - - - -#define DEFAULT_DEBUG_STATE 0 // 1 = activate debug mode at startup; this should be set to zero unless you're debugging something at startup - -#define DEBUG_DUMP // normally compile with this activated unless you're really trying to save memory -// #define DEBUG_LOOP -// #define DEBUG_BUTTONS -// #define DEBUG_SERIAL -// #define DEBUG_SERVICE_REQUEST_QUEUE -// #define DEBUG_EEPROM -// #define DEBUG_AZ_SPEED_POT -// #define DEBUG_AZ_PRESET_POT -// #define DEBUG_PRESET_ENCODERS -// #define DEBUG_AZ_MANUAL_ROTATE_LIMITS -// #define DEBUG_EL_MANUAL_ROTATE_LIMITS -// #define DEBUG_BRAKE -// #define DEBUG_OVERLAP -// #define DEBUG_DISPLAY -// #define DEBUG_AZ_CHECK_OPERATION_TIMEOUT -// #define DEBUG_TIMED_BUFFER -// #define DEBUG_EL_CHECK_OPERATION_TIMEOUT -// #define DEBUG_VARIABLE_OUTPUTS -// #define DEBUG_ROTATOR -// #define DEBUG_SUBMIT_REQUEST -// #define DEBUG_SERVICE_ROTATION -// #define DEBUG_POSITION_ROTARY_ENCODER -// #define DEBUG_POSITION_ROTARY_ENCODER_USE_PJRC_LIBRARY -// #define DEBUG_PROFILE_LOOP_TIME -// #define DEBUG_POSITION_PULSE_INPUT -// #define DEBUG_ACCEL -// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER -// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER_BAD_DATA -// #define DEBUG_HEADING_READING_TIME -// #define DEBUG_JOYSTICK -// #define DEBUG_ROTATION_INDICATION_PIN -// #define DEBUG_HH12 -// #define DEBUG_PARK -// #define DEBUG_LIMIT_SENSE -// #define DEBUG_AZ_POSITION_INCREMENTAL_ENCODER -// #define DEBUG_EL_POSITION_INCREMENTAL_ENCODER -// #define DEBUG_MOON_TRACKING -// #define DEBUG_SUN_TRACKING -// #define DEBUG_GPS -// #define DEBUG_GPS_SERIAL -// #define DEBUG_OFFSET -// #define DEBUG_RTC -// #define DEBUG_PROCESS_YAESU -// #define DEBUG_ETHERNET -// #define DEBUG_PROCESS_SLAVE -// #define DEBUG_MEMSIC_2125 -// #define DEBUG_SYNC_MASTER_CLOCK_TO_SLAVE -// #define DEBUG_SYNC_MASTER_COORDINATES_TO_SLAVE -// #define DEBUG_HMC5883L -// #define DEBUG_POLOLU_LSM303_CALIBRATION -// #define DEBUG_STEPPER -// #define DEBUG_AUTOCORRECT -// #define DEBUG_A2_ENCODER -// #define DEBUG_A2_ENCODER_LOOPBACK_TEST -// #define DEBUG_QMC5883 - - - - - - diff --git a/k3ng_rotator_controller/rotator_features_ea4tx_ars_usb.h b/k3ng_rotator_controller/rotator_features_ea4tx_ars_usb.h index a13fa41..977dc0d 100644 --- a/k3ng_rotator_controller/rotator_features_ea4tx_ars_usb.h +++ b/k3ng_rotator_controller/rotator_features_ea4tx_ars_usb.h @@ -57,63 +57,3 @@ //#define OPTION_GPS_EXCLUDE_MISSING_LF_CR_HANDLING //#define OPTION_MORE_SERIAL_CHECKS //#define OPTION_STEPPER_MOTOR_USE_TIMER_ONE_INSTEAD_OF_FIVE - - -/* ---------------------- debug stuff - don't touch unless you know what you are doing --------------------------- */ - - - -#define DEFAULT_DEBUG_STATE 0// this should be set to zero unless you're debugging something at startup - -#define DEBUG_DUMP -// #define DEBUG_BUTTONS -// #define DEBUG_SERIAL -// #define DEBUG_SERVICE_REQUEST_QUEUE -// #define DEBUG_EEPROM -// #define DEBUG_AZ_SPEED_POT -// #define DEBUG_AZ_PRESET_POT -// #define DEBUG_PRESET_ENCODERS -// #define DEBUG_AZ_MANUAL_ROTATE_LIMITS -// #define DEBUG_EL_MANUAL_ROTATE_LIMITS -// #define DEBUG_BRAKE -// #define DEBUG_OVERLAP -// #define DEBUG_DISPLAY -// #define DEBUG_AZ_CHECK_OPERATION_TIMEOUT -// #define DEBUG_TIMED_BUFFER -// #define DEBUG_EL_CHECK_OPERATION_TIMEOUT -// #define DEBUG_VARIABLE_OUTPUTS -// #define DEBUG_ROTATOR -// #define DEBUG_SUBMIT_REQUEST -// #define DEBUG_SERVICE_ROTATION -// #define DEBUG_POSITION_ROTARY_ENCODER -// #define DEBUG_PROFILE_LOOP_TIME -// #define DEBUG_POSITION_PULSE_INPUT -// #define DEBUG_ACCEL -// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER -// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER_BAD_DATA -// #define DEBUG_HEADING_READING_TIME -// #define DEBUG_JOYSTICK -// #define DEBUG_ROTATION_INDICATION_PIN -// #define DEBUG_HH12 -// #define DEBUG_PARK -// #define DEBUG_LIMIT_SENSE -// #define DEBUG_AZ_POSITION_INCREMENTAL_ENCODER -// #define DEBUG_EL_POSITION_INCREMENTAL_ENCODER -// #define DEBUG_MOON_TRACKING -// #define DEBUG_SUN_TRACKING -// #define DEBUG_GPS -// #define DEBUG_GPS_SERIAL -// #define DEBUG_OFFSET -// #define DEBUG_RTC -// #define DEBUG_PROCESS_YAESU -// #define DEBUG_ETHERNET -// #define DEBUG_PROCESS_SLAVE -// #define DEBUG_MEMSIC_2125 -// #define DEBUG_SYNC_MASTER_CLOCK_TO_SLAVE -// #define DEBUG_QMC5883 - - - - - - diff --git a/k3ng_rotator_controller/rotator_features_m0upu.h b/k3ng_rotator_controller/rotator_features_m0upu.h index 83ab6c4..60ea089 100755 --- a/k3ng_rotator_controller/rotator_features_m0upu.h +++ b/k3ng_rotator_controller/rotator_features_m0upu.h @@ -117,6 +117,9 @@ //#define FEATURE_TWO_DECIMAL_PLACE_HEADINGS // under development - not working yet! //#define FEATURE_AZIMUTH_CORRECTION // correct the azimuth using a calibration table in rotator_settings.h //#define FEATURE_ELEVATION_CORRECTION // correct the elevation using a calibration table in rotator_settings.h +//#define FEATURE_AZ_ROTATION_STALL_DETECTION // Azimuth rotation stall detection - pin: az_rotation_stall_detected +//#define FEATURE_EL_ROTATION_STALL_DETECTION // Elevation rotation stall detection - pin: el_rotation_stall_detected +//#define OPTION_ROTATION_STALL_DETECTION_SERIAL_MESSAGE // Sends message out serial port when rotation stall has been detected //#define FEATURE_ANCILLARY_PIN_CONTROL // control I/O pins with serial commands \F, \N, \P //#define FEATURE_JOYSTICK_CONTROL // analog joystick support //#define OPTION_JOYSTICK_REVERSE_X_AXIS @@ -157,68 +160,3 @@ //#define OPTION_GPS_EXCLUDE_MISSING_LF_CR_HANDLING //#define OPTION_MORE_SERIAL_CHECKS //#define OPTION_STEPPER_MOTOR_USE_TIMER_ONE_INSTEAD_OF_FIVE - -/* ---------------------- debug stuff - don't touch unless you know what you are doing --------------------------- */ - - - -#define DEFAULT_DEBUG_STATE 0 // 1 = activate debug mode at startup; this should be set to zero unless you're debugging something at startup - -#define DEBUG_DUMP // normally compile with this activated unless you're really trying to save memory -// #define DEBUG_BUTTONS -// #define DEBUG_SERIAL -// #define DEBUG_SERVICE_REQUEST_QUEUE -// #define DEBUG_EEPROM -// #define DEBUG_AZ_SPEED_POT -// #define DEBUG_AZ_PRESET_POT -// #define DEBUG_PRESET_ENCODERS -// #define DEBUG_AZ_MANUAL_ROTATE_LIMITS -// #define DEBUG_EL_MANUAL_ROTATE_LIMITS -// #define DEBUG_BRAKE -// #define DEBUG_OVERLAP -// #define DEBUG_DISPLAY -// #define DEBUG_AZ_CHECK_OPERATION_TIMEOUT -// #define DEBUG_TIMED_BUFFER -// #define DEBUG_EL_CHECK_OPERATION_TIMEOUT -// #define DEBUG_VARIABLE_OUTPUTS -// #define DEBUG_ROTATOR -// #define DEBUG_SUBMIT_REQUEST -// #define DEBUG_SERVICE_ROTATION -// #define DEBUG_POSITION_ROTARY_ENCODER -// #define DEBUG_POSITION_ROTARY_ENCODER_USE_PJRC_LIBRARY -// #define DEBUG_PROFILE_LOOP_TIME -// #define DEBUG_POSITION_PULSE_INPUT -// #define DEBUG_ACCEL -// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER -// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER_BAD_DATA -// #define DEBUG_HEADING_READING_TIME -// #define DEBUG_JOYSTICK -// #define DEBUG_ROTATION_INDICATION_PIN -// #define DEBUG_HH12 -// #define DEBUG_PARK -// #define DEBUG_LIMIT_SENSE -// #define DEBUG_AZ_POSITION_INCREMENTAL_ENCODER -// #define DEBUG_EL_POSITION_INCREMENTAL_ENCODER -// #define DEBUG_MOON_TRACKING -// #define DEBUG_SUN_TRACKING -// #define DEBUG_GPS -// #define DEBUG_GPS_SERIAL -// #define DEBUG_OFFSET -// #define DEBUG_RTC -// #define DEBUG_PROCESS_YAESU -// #define DEBUG_ETHERNET -// #define DEBUG_PROCESS_SLAVE -// #define DEBUG_MEMSIC_2125 -// #define DEBUG_SYNC_MASTER_CLOCK_TO_SLAVE -// #define DEBUG_SYNC_MASTER_COORDINATES_TO_SLAVE -// #define DEBUG_HMC5883L -// #define DEBUG_POLOLU_LSM303_CALIBRATION -// #define DEBUG_STEPPER -// #define DEBUG_AUTOCORRECT -// #define DEBUG_QMC5883 - - - - - - diff --git a/k3ng_rotator_controller/rotator_features_test.h b/k3ng_rotator_controller/rotator_features_test.h index 070ab10..42a1183 100755 --- a/k3ng_rotator_controller/rotator_features_test.h +++ b/k3ng_rotator_controller/rotator_features_test.h @@ -127,6 +127,9 @@ //#define FEATURE_TWO_DECIMAL_PLACE_HEADINGS // under development - not working yet! //#define FEATURE_AZIMUTH_CORRECTION // correct the azimuth using a calibration table in rotator_settings.h //#define FEATURE_ELEVATION_CORRECTION // correct the elevation using a calibration table in rotator_settings.h +//#define FEATURE_AZ_ROTATION_STALL_DETECTION // Azimuth rotation stall detection - pin: az_rotation_stall_detected +//#define FEATURE_EL_ROTATION_STALL_DETECTION // Elevation rotation stall detection - pin: el_rotation_stall_detected +//#define OPTION_ROTATION_STALL_DETECTION_SERIAL_MESSAGE // Sends message out serial port when rotation stall has been detected //#define FEATURE_ANCILLARY_PIN_CONTROL // control I/O pins with serial commands \F, \N, \P //#define FEATURE_JOYSTICK_CONTROL // analog joystick support //#define OPTION_JOYSTICK_REVERSE_X_AXIS @@ -151,7 +154,7 @@ //#define OPTION_DISPLAY_DIRECTION_STATUS // N, W, E, S, NW, etc. direction indicator #define OPTION_DISPLAY_SUN_TRACKING_CONTINUOUSLY //#define OPTION_DISPLAY_MOON_OR_SUN_TRACKING_CONDITIONAL -// #define OPTION_DISPLAY_VERSION_ON_STARTUP //code provided by Paolo, IT9IPQ +#define OPTION_DISPLAY_VERSION_ON_STARTUP //code provided by Paolo, IT9IPQ // #define OPTION_LCD_HEADING_FIELD_FIXED_DECIMAL_PLACE //#define FEATURE_POWER_SWITCH @@ -187,69 +190,9 @@ // ## ######## ###### ## -/* ---------------------- debug stuff - don't touch unless you know what you are doing --------------------------- */ -#define DEFAULT_DEBUG_STATE 0 // 1 = activate debug mode at startup; this should be set to zero unless you're debugging something at startup - -#define DEBUG_DUMP // normally compile with this activated unless you're really trying to save memory -// #define DEBUG_LOOP -// #define DEBUG_BUTTONS -// #define DEBUG_SERIAL -// #define DEBUG_SERVICE_REQUEST_QUEUE -// #define DEBUG_EEPROM -// #define DEBUG_AZ_SPEED_POT -// #define DEBUG_AZ_PRESET_POT -// #define DEBUG_PRESET_ENCODERS -// #define DEBUG_AZ_MANUAL_ROTATE_LIMITS -// #define DEBUG_EL_MANUAL_ROTATE_LIMITS -// #define DEBUG_BRAKE -// #define DEBUG_OVERLAP -// #define DEBUG_DISPLAY -// #define DEBUG_AZ_CHECK_OPERATION_TIMEOUT -// #define DEBUG_TIMED_BUFFER -// #define DEBUG_EL_CHECK_OPERATION_TIMEOUT -// #define DEBUG_VARIABLE_OUTPUTS -// #define DEBUG_ROTATOR -// #define DEBUG_SUBMIT_REQUEST -// #define DEBUG_SERVICE_ROTATION -// #define DEBUG_POSITION_ROTARY_ENCODER -// #define DEBUG_POSITION_ROTARY_ENCODER_USE_PJRC_LIBRARY -// #define DEBUG_PROFILE_LOOP_TIME -// #define DEBUG_POSITION_PULSE_INPUT -// #define DEBUG_ACCEL -// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER -// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER_BAD_DATA -// #define DEBUG_HEADING_READING_TIME -// #define DEBUG_JOYSTICK -// #define DEBUG_ROTATION_INDICATION_PIN -// #define DEBUG_HH12 -// #define DEBUG_PARK -// #define DEBUG_LIMIT_SENSE -// #define DEBUG_AZ_POSITION_INCREMENTAL_ENCODER -// #define DEBUG_EL_POSITION_INCREMENTAL_ENCODER -// #define DEBUG_MOON_TRACKING -// #define DEBUG_SUN_TRACKING -// #define DEBUG_GPS -// #define DEBUG_GPS_SERIAL -// #define DEBUG_OFFSET -// #define DEBUG_RTC -// #define DEBUG_PROCESS_YAESU -// #define DEBUG_ETHERNET -// #define DEBUG_PROCESS_SLAVE -// #define DEBUG_MEMSIC_2125 -// #define DEBUG_SYNC_MASTER_CLOCK_TO_SLAVE -// #define DEBUG_SYNC_MASTER_COORDINATES_TO_SLAVE -// #define DEBUG_HMC5883L -// #define DEBUG_POLOLU_LSM303_CALIBRATION -// #define DEBUG_STEPPER -// #define DEBUG_AUTOCORRECT -// #define DEBUG_A2_ENCODER -// #define DEBUG_A2_ENCODER_LOOPBACK_TEST -// #define DEBUG_QMC5883 - - // ######## ######## ###### ######## // ## ## ## ## ## // ## ## ## ## diff --git a/k3ng_rotator_controller/rotator_features_wb6kcn.h b/k3ng_rotator_controller/rotator_features_wb6kcn.h index d307929..8e048d4 100755 --- a/k3ng_rotator_controller/rotator_features_wb6kcn.h +++ b/k3ng_rotator_controller/rotator_features_wb6kcn.h @@ -162,67 +162,3 @@ uncomment #define OPTION_C_COMMAND_SENDS_AZ_AND_EL. */ - -/* ---------------------- debug stuff - don't touch unless you know what you are doing --------------------------- */ - - - -#define DEFAULT_DEBUG_STATE 0// this should be set to zero unless you're debugging something at startup - -#define DEBUG_DUMP -// #define DEBUG_BUTTONS -// #define DEBUG_SERIAL -// #define DEBUG_SERVICE_REQUEST_QUEUE -// #define DEBUG_EEPROM -// #define DEBUG_AZ_SPEED_POT -// #define DEBUG_AZ_PRESET_POT -// #define DEBUG_PRESET_ENCODERS -// #define DEBUG_AZ_MANUAL_ROTATE_LIMITS -// #define DEBUG_EL_MANUAL_ROTATE_LIMITS -// #define DEBUG_BRAKE -// #define DEBUG_OVERLAP -// #define DEBUG_DISPLAY -// #define DEBUG_AZ_CHECK_OPERATION_TIMEOUT -// #define DEBUG_TIMED_BUFFER -// #define DEBUG_EL_CHECK_OPERATION_TIMEOUT -// #define DEBUG_VARIABLE_OUTPUTS -// #define DEBUG_ROTATOR -// #define DEBUG_SUBMIT_REQUEST -// #define DEBUG_SERVICE_ROTATION -// #define DEBUG_POSITION_ROTARY_ENCODER -// #define DEBUG_POSITION_ROTARY_ENCODER_USE_PJRC_LIBRARY -// #define DEBUG_PROFILE_LOOP_TIME -// #define DEBUG_POSITION_PULSE_INPUT -// #define DEBUG_ACCEL -// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER -// #define DEBUG_SVC_REMOTE_COMM_INCOMING_BUFFER_BAD_DATA -// #define DEBUG_HEADING_READING_TIME -// #define DEBUG_JOYSTICK -// #define DEBUG_ROTATION_INDICATION_PIN -// #define DEBUG_HH12 -// #define DEBUG_PARK -// #define DEBUG_LIMIT_SENSE -// #define DEBUG_AZ_POSITION_INCREMENTAL_ENCODER -// #define DEBUG_EL_POSITION_INCREMENTAL_ENCODER -// #define DEBUG_MOON_TRACKING -// #define DEBUG_SUN_TRACKING -// #define DEBUG_GPS -// #define DEBUG_GPS_SERIAL -// #define DEBUG_OFFSET -// #define DEBUG_RTC -// #define DEBUG_PROCESS_YAESU -// #define DEBUG_ETHERNET -// #define DEBUG_PROCESS_SLAVE -// #define DEBUG_MEMSIC_2125 -// #define DEBUG_SYNC_MASTER_CLOCK_TO_SLAVE -// #define DEBUG_SYNC_MASTER_COORDINATES_TO_SLAVE -// #define DEBUG_HMC5883L -// #define DEBUG_POLOLU_LSM303_CALIBRATION -// #define DEBUG_STEPPER -// #define DEBUG_AUTOCORRECT -// #define DEBUG_QMC5883 - - - - - diff --git a/k3ng_rotator_controller/rotator_pins.h b/k3ng_rotator_controller/rotator_pins.h index 0c3fbbd..2d14398 100755 --- a/k3ng_rotator_controller/rotator_pins.h +++ b/k3ng_rotator_controller/rotator_pins.h @@ -33,6 +33,7 @@ #define blink_led 0 #define az_stepper_motor_pulse 44 //0 #define az_stepper_motor_direction 0 +#define az_rotation_stall_detected 0 @@ -52,6 +53,7 @@ #define brake_el 0 // goes high to disengage elevation brake (set to 0 to disable) #define elevation_speed_voltage 0 // optional - PWM output for speed control voltage feed into rotator (on continually unlike rotate_up_pwm and rotate_down_pwm) #define el_stepper_motor_pulse 0 + #define el_rotation_stall_detected 0 #endif //FEATURE_ELEVATION_CONTROL // rotary encoder pins and options diff --git a/k3ng_rotator_controller/rotator_pins_m0upu.h b/k3ng_rotator_controller/rotator_pins_m0upu.h index ae34027..364fb2a 100644 --- a/k3ng_rotator_controller/rotator_pins_m0upu.h +++ b/k3ng_rotator_controller/rotator_pins_m0upu.h @@ -30,6 +30,7 @@ #define rotation_indication_pin 0 #define az_stepper_motor_pulse 0 #define az_stepper_motor_direction 0 +#define az_rotation_stall_detected 0 // elevation pins @@ -49,6 +50,7 @@ #define brake_el 0 // goes high to disengage elevation brake (set to 0 to disable) #define el_stepper_motor_pulse 0 #define el_stepper_motor_direction 0 +#define el_rotation_stall_detected 0 #endif //FEATURE_ELEVATION_CONTROL diff --git a/k3ng_rotator_controller/rotator_pins_test.h b/k3ng_rotator_controller/rotator_pins_test.h index a2ae74b..6e44957 100644 --- a/k3ng_rotator_controller/rotator_pins_test.h +++ b/k3ng_rotator_controller/rotator_pins_test.h @@ -40,6 +40,7 @@ #define blink_led 0 #define az_stepper_motor_pulse 0 #define az_stepper_motor_direction 0 +#define az_rotation_stall_detected 0 // elevation pins @@ -59,6 +60,7 @@ #define brake_el 0 // goes high to disengage elevation brake (set to 0 to disable) #define el_stepper_motor_pulse 0 #define el_stepper_motor_direction 0 +#define el_rotation_stall_detected 0 #endif //FEATURE_ELEVATION_CONTROL diff --git a/k3ng_rotator_controller/rotator_settings.h b/k3ng_rotator_controller/rotator_settings.h index 82322eb..5852362 100755 --- a/k3ng_rotator_controller/rotator_settings.h +++ b/k3ng_rotator_controller/rotator_settings.h @@ -341,6 +341,13 @@ You can tweak these, but read the online documentation! #define PRESET_ENCODER_CHANGE_TIME_MS 2000 +// FEATURE_AZ_ROTATION_STALL_DETECTION +#define STALL_CHECK_FREQUENCY_MS_AZ 2000 +#define STALL_CHECK_DEGREES_THRESHOLD_AZ 2 +// FEATURE_EL_ROTATION_STALL_DETECTION +#define STALL_CHECK_FREQUENCY_MS_EL 2000 +#define STALL_CHECK_DEGREES_THRESHOLD_EL 2 + //#define SET_I2C_BUS_SPEED 800000L // Can set up to 800 kHz, depending on devices. 800000L = 800 khz, 400000L = 400 khz. Default is 100 khz diff --git a/k3ng_rotator_controller/rotator_settings_ea4tx_ars_usb.h b/k3ng_rotator_controller/rotator_settings_ea4tx_ars_usb.h index bcbd1a3..1eee2d7 100755 --- a/k3ng_rotator_controller/rotator_settings_ea4tx_ars_usb.h +++ b/k3ng_rotator_controller/rotator_settings_ea4tx_ars_usb.h @@ -331,5 +331,12 @@ You can tweak these, but read the online documentation! #define PRESET_ENCODER_CHANGE_TIME_MS 2000 +// FEATURE_AZ_ROTATION_STALL_DETECTION +#define STALL_CHECK_FREQUENCY_MS_AZ 2000 +#define STALL_CHECK_DEGREES_THRESHOLD_AZ 2 +// FEATURE_EL_ROTATION_STALL_DETECTION +#define STALL_CHECK_FREQUENCY_MS_EL 2000 +#define STALL_CHECK_DEGREES_THRESHOLD_EL 2 + //#define SET_I2C_BUS_SPEED 800000L // Can set up to 800 kHz, depending on devices. 800000L = 800 khz, 400000L = 400 khz. Default is 100 khz diff --git a/k3ng_rotator_controller/rotator_settings_m0upu.h b/k3ng_rotator_controller/rotator_settings_m0upu.h index 0dc9ada..c96aa07 100755 --- a/k3ng_rotator_controller/rotator_settings_m0upu.h +++ b/k3ng_rotator_controller/rotator_settings_m0upu.h @@ -330,6 +330,13 @@ You can tweak these, but read the online documentation! #define OVERLAP_LED_INACTIVE_STATE LOW #define PRESET_ENCODER_CHANGE_TIME_MS 2000 + +// FEATURE_AZ_ROTATION_STALL_DETECTION +#define STALL_CHECK_FREQUENCY_MS_AZ 2000 +#define STALL_CHECK_DEGREES_THRESHOLD_AZ 2 +// FEATURE_EL_ROTATION_STALL_DETECTION +#define STALL_CHECK_FREQUENCY_MS_EL 2000 +#define STALL_CHECK_DEGREES_THRESHOLD_EL 2 //#define SET_I2C_BUS_SPEED 800000L // Can set up to 800 kHz, depending on devices. 800000L = 800 khz, 400000L = 400 khz. Default is 100 khz diff --git a/k3ng_rotator_controller/rotator_settings_test.h b/k3ng_rotator_controller/rotator_settings_test.h index 40a7ebe..dd16c76 100755 --- a/k3ng_rotator_controller/rotator_settings_test.h +++ b/k3ng_rotator_controller/rotator_settings_test.h @@ -351,6 +351,13 @@ You can tweak these, but read the online documentation! #define PRESET_ENCODER_CHANGE_TIME_MS 2000 +// FEATURE_AZ_ROTATION_STALL_DETECTION +#define STALL_CHECK_FREQUENCY_MS_AZ 2000 +#define STALL_CHECK_DEGREES_THRESHOLD_AZ 2 +// FEATURE_EL_ROTATION_STALL_DETECTION +#define STALL_CHECK_FREQUENCY_MS_EL 2000 +#define STALL_CHECK_DEGREES_THRESHOLD_EL 2 + //#define SET_I2C_BUS_SPEED 800000L // Can set up to 800 kHz, depending on devices. 800000L = 800 khz, 400000L = 400 khz. Default is 100 khz diff --git a/k3ng_rotator_controller/rotator_settings_wb6kcn.h b/k3ng_rotator_controller/rotator_settings_wb6kcn.h index b4d460c..9ed1775 100755 --- a/k3ng_rotator_controller/rotator_settings_wb6kcn.h +++ b/k3ng_rotator_controller/rotator_settings_wb6kcn.h @@ -333,6 +333,13 @@ You can tweak these, but read the online documentation! #define PRESET_ENCODER_CHANGE_TIME_MS 2000 +// FEATURE_AZ_ROTATION_STALL_DETECTION +#define STALL_CHECK_FREQUENCY_MS_AZ 2000 +#define STALL_CHECK_DEGREES_THRESHOLD_AZ 2 +// FEATURE_EL_ROTATION_STALL_DETECTION +#define STALL_CHECK_FREQUENCY_MS_EL 2000 +#define STALL_CHECK_DEGREES_THRESHOLD_EL 2 + //#define SET_I2C_BUS_SPEED 800000L // Can set up to 800 kHz, depending on devices. 800000L = 800 khz, 400000L = 400 khz. Default is 100 khz \ No newline at end of file