Es un backup para las pruebas de firmware y hardware de un ventilador

Dependencies:   mbed QEI FastPWM

Committer:
miguelangel_2511
Date:
Fri May 15 20:29:30 2020 +0000
Revision:
12:3bc2465b034a
Parent:
0:9d0b9785d3d6
hola papu

Who changed what in which revision?

UserRevisionLine numberNew contents of line
miguelangel_2511 0:9d0b9785d3d6 1
miguelangel_2511 0:9d0b9785d3d6 2 #include "mbed.h"
miguelangel_2511 0:9d0b9785d3d6 3 #include "QEI.h"
miguelangel_2511 0:9d0b9785d3d6 4 #include "stdint.h"
miguelangel_2511 0:9d0b9785d3d6 5 #include "project_defines.h"
miguelangel_2511 0:9d0b9785d3d6 6 #include "encoder_interface.h"
miguelangel_2511 0:9d0b9785d3d6 7
miguelangel_2511 0:9d0b9785d3d6 8
miguelangel_2511 0:9d0b9785d3d6 9 /* Object definition */
miguelangel_2511 0:9d0b9785d3d6 10 QEI rotary_encoder(ENCODER_A_SIGNAL, ENCODER_B_SIGNAL, NC, 624, QEI::X4_ENCODING);
miguelangel_2511 0:9d0b9785d3d6 11
miguelangel_2511 0:9d0b9785d3d6 12
miguelangel_2511 0:9d0b9785d3d6 13 /* Global variables definition */
miguelangel_2511 0:9d0b9785d3d6 14
miguelangel_2511 0:9d0b9785d3d6 15 int8_t past_parameter_selection_index = PARAMETER_SELECTION_INDEX_DEFAULT;
miguelangel_2511 0:9d0b9785d3d6 16
miguelangel_2511 0:9d0b9785d3d6 17 volatile uint8_t parameter_selection_index_change_flag = 0;
miguelangel_2511 0:9d0b9785d3d6 18 int8_t parameter_selection_index = PARAMETER_SELECTION_INDEX_DEFAULT;
miguelangel_2511 0:9d0b9785d3d6 19
miguelangel_2511 0:9d0b9785d3d6 20 volatile uint8_t volume_setpoint_index_change_flag = 0;
miguelangel_2511 0:9d0b9785d3d6 21 int8_t volume_setpoint_index = VOLUME_SETPOINT_INDEX_DEFAULT ;
miguelangel_2511 0:9d0b9785d3d6 22
miguelangel_2511 0:9d0b9785d3d6 23 volatile uint8_t resp_frequency_index_change_flag = 0;
miguelangel_2511 0:9d0b9785d3d6 24 int8_t resp_frequency_index = RESP_FREQUENCY_INDEX_DEFAULT;
miguelangel_2511 0:9d0b9785d3d6 25
miguelangel_2511 0:9d0b9785d3d6 26 volatile uint8_t i_e_ratio_index_change_flag = 0;
miguelangel_2511 0:9d0b9785d3d6 27 int8_t i_e_ratio_index = I_E_RATIO_INDEX_DEFAULT;
miguelangel_2511 0:9d0b9785d3d6 28
miguelangel_2511 0:9d0b9785d3d6 29
miguelangel_2511 0:9d0b9785d3d6 30
miguelangel_2511 0:9d0b9785d3d6 31
miguelangel_2511 0:9d0b9785d3d6 32 void Parameter_Selection_Index_Update(void){
miguelangel_2511 0:9d0b9785d3d6 33
miguelangel_2511 0:9d0b9785d3d6 34 static int8_t previous_parameter_selection_index = PARAMETER_SELECTION_INDEX_DEFAULT;
miguelangel_2511 0:9d0b9785d3d6 35 int32_t encoder_counter;
miguelangel_2511 0:9d0b9785d3d6 36 int8_t valid_step;
miguelangel_2511 0:9d0b9785d3d6 37 int8_t temp;
miguelangel_2511 0:9d0b9785d3d6 38
miguelangel_2511 0:9d0b9785d3d6 39 encoder_counter = rotary_encoder.getPulses();
miguelangel_2511 0:9d0b9785d3d6 40
miguelangel_2511 0:9d0b9785d3d6 41 if(encoder_counter >= ENCODER_THRESHOLD){
miguelangel_2511 0:9d0b9785d3d6 42 valid_step = 1;
miguelangel_2511 0:9d0b9785d3d6 43 rotary_encoder.reset();
miguelangel_2511 0:9d0b9785d3d6 44 }else if(encoder_counter <= -ENCODER_THRESHOLD){
miguelangel_2511 0:9d0b9785d3d6 45 valid_step = -1;
miguelangel_2511 0:9d0b9785d3d6 46 rotary_encoder.reset();
miguelangel_2511 0:9d0b9785d3d6 47 }else{
miguelangel_2511 0:9d0b9785d3d6 48 valid_step = 0;
miguelangel_2511 0:9d0b9785d3d6 49 }
miguelangel_2511 0:9d0b9785d3d6 50
miguelangel_2511 0:9d0b9785d3d6 51 temp = parameter_selection_index + valid_step;
miguelangel_2511 0:9d0b9785d3d6 52 if(temp < 0){
miguelangel_2511 0:9d0b9785d3d6 53 parameter_selection_index = PARAMETER_SELECTION_INDEX_LIMIT - 1;
miguelangel_2511 0:9d0b9785d3d6 54 }else if(temp >= PARAMETER_SELECTION_INDEX_LIMIT){
miguelangel_2511 0:9d0b9785d3d6 55 parameter_selection_index = 0;
miguelangel_2511 0:9d0b9785d3d6 56 }else{
miguelangel_2511 0:9d0b9785d3d6 57 parameter_selection_index = temp;
miguelangel_2511 0:9d0b9785d3d6 58 }
miguelangel_2511 0:9d0b9785d3d6 59
miguelangel_2511 0:9d0b9785d3d6 60 if(parameter_selection_index != previous_parameter_selection_index){
miguelangel_2511 0:9d0b9785d3d6 61 parameter_selection_index_change_flag = 1;
miguelangel_2511 0:9d0b9785d3d6 62 }
miguelangel_2511 0:9d0b9785d3d6 63
miguelangel_2511 0:9d0b9785d3d6 64 past_parameter_selection_index = previous_parameter_selection_index;
miguelangel_2511 0:9d0b9785d3d6 65 previous_parameter_selection_index = parameter_selection_index;
miguelangel_2511 0:9d0b9785d3d6 66 }
miguelangel_2511 0:9d0b9785d3d6 67
miguelangel_2511 0:9d0b9785d3d6 68
miguelangel_2511 0:9d0b9785d3d6 69 void Volume_Setpoint_Index_Update(void){
miguelangel_2511 0:9d0b9785d3d6 70
miguelangel_2511 0:9d0b9785d3d6 71 static int8_t previous_volume_setpoint_index = VOLUME_SETPOINT_INDEX_DEFAULT;
miguelangel_2511 0:9d0b9785d3d6 72 int32_t encoder_counter;
miguelangel_2511 0:9d0b9785d3d6 73 int8_t valid_step;
miguelangel_2511 0:9d0b9785d3d6 74 int8_t temp;
miguelangel_2511 0:9d0b9785d3d6 75
miguelangel_2511 0:9d0b9785d3d6 76 encoder_counter = rotary_encoder.getPulses();
miguelangel_2511 0:9d0b9785d3d6 77
miguelangel_2511 0:9d0b9785d3d6 78 if(encoder_counter >= ENCODER_THRESHOLD){
miguelangel_2511 0:9d0b9785d3d6 79 valid_step = 1;
miguelangel_2511 0:9d0b9785d3d6 80 rotary_encoder.reset();
miguelangel_2511 0:9d0b9785d3d6 81 }else if(encoder_counter <= -ENCODER_THRESHOLD){
miguelangel_2511 0:9d0b9785d3d6 82 valid_step = -1;
miguelangel_2511 0:9d0b9785d3d6 83 rotary_encoder.reset();
miguelangel_2511 0:9d0b9785d3d6 84 }else{
miguelangel_2511 0:9d0b9785d3d6 85 valid_step = 0;
miguelangel_2511 0:9d0b9785d3d6 86 }
miguelangel_2511 0:9d0b9785d3d6 87
miguelangel_2511 0:9d0b9785d3d6 88 temp = volume_setpoint_index + valid_step;
miguelangel_2511 0:9d0b9785d3d6 89 if(temp < 0){
miguelangel_2511 0:9d0b9785d3d6 90 volume_setpoint_index = 0;
miguelangel_2511 0:9d0b9785d3d6 91 }else if(temp >= VOLUME_SETPOINT_INDEX_LIMIT){
miguelangel_2511 0:9d0b9785d3d6 92 volume_setpoint_index = VOLUME_SETPOINT_INDEX_LIMIT - 1;
miguelangel_2511 0:9d0b9785d3d6 93 }else{
miguelangel_2511 0:9d0b9785d3d6 94 volume_setpoint_index = temp;
miguelangel_2511 0:9d0b9785d3d6 95 }
miguelangel_2511 0:9d0b9785d3d6 96
miguelangel_2511 0:9d0b9785d3d6 97 if(volume_setpoint_index != previous_volume_setpoint_index){
miguelangel_2511 0:9d0b9785d3d6 98 volume_setpoint_index_change_flag = 1;
miguelangel_2511 0:9d0b9785d3d6 99 }
miguelangel_2511 0:9d0b9785d3d6 100 previous_volume_setpoint_index = volume_setpoint_index;
miguelangel_2511 0:9d0b9785d3d6 101 }
miguelangel_2511 0:9d0b9785d3d6 102
miguelangel_2511 0:9d0b9785d3d6 103
miguelangel_2511 0:9d0b9785d3d6 104 void Resp_Frequency_Index_Update(void){
miguelangel_2511 0:9d0b9785d3d6 105
miguelangel_2511 0:9d0b9785d3d6 106 static int8_t previous_resp_frequency_index = RESP_FREQUENCY_INDEX_DEFAULT;
miguelangel_2511 0:9d0b9785d3d6 107 int32_t encoder_counter;
miguelangel_2511 0:9d0b9785d3d6 108 int8_t valid_step;
miguelangel_2511 0:9d0b9785d3d6 109 int8_t temp;
miguelangel_2511 0:9d0b9785d3d6 110
miguelangel_2511 0:9d0b9785d3d6 111 encoder_counter = rotary_encoder.getPulses();
miguelangel_2511 0:9d0b9785d3d6 112
miguelangel_2511 0:9d0b9785d3d6 113 if(encoder_counter >= ENCODER_THRESHOLD){
miguelangel_2511 0:9d0b9785d3d6 114 valid_step = 1;
miguelangel_2511 0:9d0b9785d3d6 115 rotary_encoder.reset();
miguelangel_2511 0:9d0b9785d3d6 116 }else if(encoder_counter <= -ENCODER_THRESHOLD){
miguelangel_2511 0:9d0b9785d3d6 117 valid_step = -1;
miguelangel_2511 0:9d0b9785d3d6 118 rotary_encoder.reset();
miguelangel_2511 0:9d0b9785d3d6 119 }else{
miguelangel_2511 0:9d0b9785d3d6 120 valid_step = 0;
miguelangel_2511 0:9d0b9785d3d6 121 }
miguelangel_2511 0:9d0b9785d3d6 122
miguelangel_2511 0:9d0b9785d3d6 123 temp = resp_frequency_index + valid_step;
miguelangel_2511 0:9d0b9785d3d6 124 if(temp < 0){
miguelangel_2511 0:9d0b9785d3d6 125 resp_frequency_index = 0;
miguelangel_2511 0:9d0b9785d3d6 126 }else if(temp >= RESP_FREQUENCY_INDEX_LIMIT){
miguelangel_2511 0:9d0b9785d3d6 127 resp_frequency_index = RESP_FREQUENCY_INDEX_LIMIT - 1;
miguelangel_2511 0:9d0b9785d3d6 128 }else{
miguelangel_2511 0:9d0b9785d3d6 129 resp_frequency_index = temp;
miguelangel_2511 0:9d0b9785d3d6 130 }
miguelangel_2511 0:9d0b9785d3d6 131
miguelangel_2511 0:9d0b9785d3d6 132 if(resp_frequency_index != previous_resp_frequency_index){
miguelangel_2511 0:9d0b9785d3d6 133 resp_frequency_index_change_flag = 1;
miguelangel_2511 0:9d0b9785d3d6 134 }
miguelangel_2511 0:9d0b9785d3d6 135 previous_resp_frequency_index = resp_frequency_index;
miguelangel_2511 0:9d0b9785d3d6 136 }
miguelangel_2511 0:9d0b9785d3d6 137
miguelangel_2511 0:9d0b9785d3d6 138
miguelangel_2511 0:9d0b9785d3d6 139 void I_E_Ratio_Index_Update(void){
miguelangel_2511 0:9d0b9785d3d6 140
miguelangel_2511 0:9d0b9785d3d6 141 static int8_t previous_i_e_ratio_index = I_E_RATIO_INDEX_DEFAULT;
miguelangel_2511 0:9d0b9785d3d6 142 int32_t encoder_counter;
miguelangel_2511 0:9d0b9785d3d6 143 int8_t valid_step;
miguelangel_2511 0:9d0b9785d3d6 144 int8_t temp;
miguelangel_2511 0:9d0b9785d3d6 145
miguelangel_2511 0:9d0b9785d3d6 146 encoder_counter = rotary_encoder.getPulses();
miguelangel_2511 0:9d0b9785d3d6 147
miguelangel_2511 0:9d0b9785d3d6 148 if(encoder_counter >= ENCODER_THRESHOLD){
miguelangel_2511 0:9d0b9785d3d6 149 valid_step = 1;
miguelangel_2511 0:9d0b9785d3d6 150 rotary_encoder.reset();
miguelangel_2511 0:9d0b9785d3d6 151 }else if(encoder_counter <= -ENCODER_THRESHOLD){
miguelangel_2511 0:9d0b9785d3d6 152 valid_step = -1;
miguelangel_2511 0:9d0b9785d3d6 153 rotary_encoder.reset();
miguelangel_2511 0:9d0b9785d3d6 154 }else{
miguelangel_2511 0:9d0b9785d3d6 155 valid_step = 0;
miguelangel_2511 0:9d0b9785d3d6 156 }
miguelangel_2511 0:9d0b9785d3d6 157
miguelangel_2511 0:9d0b9785d3d6 158 temp = i_e_ratio_index + valid_step;
miguelangel_2511 0:9d0b9785d3d6 159 if(temp < 0){
miguelangel_2511 0:9d0b9785d3d6 160 i_e_ratio_index = 0;
miguelangel_2511 0:9d0b9785d3d6 161 }else if(temp >= I_E_RATIO_INDEX_LIMIT){
miguelangel_2511 0:9d0b9785d3d6 162 i_e_ratio_index = I_E_RATIO_INDEX_LIMIT - 1;
miguelangel_2511 0:9d0b9785d3d6 163 }else{
miguelangel_2511 0:9d0b9785d3d6 164 i_e_ratio_index = temp;
miguelangel_2511 0:9d0b9785d3d6 165 }
miguelangel_2511 0:9d0b9785d3d6 166
miguelangel_2511 0:9d0b9785d3d6 167 if(i_e_ratio_index != previous_i_e_ratio_index){
miguelangel_2511 0:9d0b9785d3d6 168 i_e_ratio_index_change_flag = 1;
miguelangel_2511 0:9d0b9785d3d6 169 }
miguelangel_2511 0:9d0b9785d3d6 170 previous_i_e_ratio_index = i_e_ratio_index;
miguelangel_2511 0:9d0b9785d3d6 171 }
miguelangel_2511 0:9d0b9785d3d6 172
miguelangel_2511 0:9d0b9785d3d6 173