summaryrefslogtreecommitdiffhomepage
path: root/analog/motor-power-avr/src/mp_pwm_R_.c
diff options
context:
space:
mode:
Diffstat (limited to 'analog/motor-power-avr/src/mp_pwm_R_.c')
-rw-r--r--analog/motor-power-avr/src/mp_pwm_R_.c206
1 files changed, 0 insertions, 206 deletions
diff --git a/analog/motor-power-avr/src/mp_pwm_R_.c b/analog/motor-power-avr/src/mp_pwm_R_.c
deleted file mode 100644
index a66645b1..00000000
--- a/analog/motor-power-avr/src/mp_pwm_R_.c
+++ /dev/null
@@ -1,206 +0,0 @@
-/* "mp_pwm_R_.c"
- * this file contains routines for managing the _R_ channel of mp board
- * the command sed -e 's/_R_/_R_/g' can be used for generating the _R_ file
- */
-
-#include "mp_pwm_LR_.h"
-#include "mp_pwm_R_.h"
-#include "io.h"
-
-// static variables
-static uint8_t state_R_;
-static uint8_t state_R_cmd;
-static uint8_t pwm_R_;
-
-// Le PC, afin de faire le saut calculé
-//#define PC PC_REG
-
-// init
-void init_pwm_R_ (void) {
- state_R_cmd = CMD_STATE_HIGH_Z;
- pwm_R_ = 0x00;
-
- // Set outputs to 0 (ie HIGH_Z)
- _R_AL_0;
- _R_AH_0;
- _R_BL_0;
- _R_BH_0;
-
- // status LEDs
- _R_LED0_0;
- _R_LED1_0;
-
- // Set IOs as outputs
- _R_ACTIVATE_OUTPUTS;
-}
-
-// PWM rising edge on timer overflow IT
-ISR(OVF_R_vect) {
- // programs the state which is ordered by the core code
- state_R_ = state_R_cmd;
-
- // the falling of the other side may have delayed a few our IT
- OCR_R_ = pwm_R_;
-
- //PC = PC + state_R_; // j'aurais bien aimé faire un calculated jump
-
- switch (state_R_)
- {
- case CMD_STATE_DIR_0:
- // dir 0
- //rise_R_label0:
- _R_BH_0;
- _R_BL_1;
- _R_AL_0;
- _R_AH_1;
- sei(); // set back interrupts
-
- // Display CMD_STATE on LEDs
- _R_LED0_1;
- _R_LED1_0;
-
- break;
-
- case CMD_STATE_DIR_1:
- // dir 1
- //org rise_R_label0 + 0x10
- _R_AH_0;
- _R_AL_1;
- _R_BL_0;
- _R_BH_1;
- sei(); // set back interrupts
-
- // Display CMD_STATE on LEDs
- _R_LED0_0;
- _R_LED1_1;
-
- break;
-
- case CMD_STATE_BRAKE:
- // switch to forced low steady state
- //org rise_R_label0 + 0x20
- _R_AH_0;
- _R_AL_1;
- _R_BH_0;
- _R_BL_1;
- sei(); // set back interrupts
-
- // Display CMD_STATE on LEDs
- _R_LED0_0;
- _R_LED1_0;
-
- break;
-
- case CMD_STATE_HIGH_Z:
- default:
- // switch to high impedance steady state
- //org rise_R_label0 + 0x30
- _R_AL_0;
- _R_AH_0;
- _R_BL_0;
- _R_BH_0;
- sei(); // set back interrupts
-
- // Display CMD_STATE on LEDs
- _R_LED0_1;
- _R_LED1_1;
-
- break;
-
- }
-}
-
-// PWM falling edge on timer compare IT
-ISR(COMP_R_vect) {
- // PC = PC + state_R_; TODO :saut calculé ?
-
- switch (state_R_)
- {
- case CMD_STATE_DIR_0:
- // in the case we are in 0x00 direction
- //fall_R_label0:
- _R_AH_0;
- _R_AL_1;
- sei(); // set back interrupts
-
- // Display CMD_STATE on LEDs
- _R_LED0_0;
- _R_LED1_0;
-
- break;
-
- case CMD_STATE_DIR_1:
- // in the case we are in 0x10 direction
- //org fall_R_label0 + 0x10
- _R_BH_0;
- _R_BL_1;
- sei(); // set back interrupts
-
- // Display CMD_STATE on LEDs
- _R_LED0_0;
- _R_LED1_0;
-
- break;
-
- case CMD_STATE_BRAKE:
- // forced low
- //org fall_R_label0 + 0x20
- sei(); // set back interrupts
- break;
-
- case CMD_STATE_HIGH_Z:
- default:
- // left high Z
- //org fall_R_label0 + 0x30
- sei(); // set back interrupts
- break;
- }
-}
-
-// overcurrent detected by comparators
-ISR(ILIM_R_vect) {
- _R_AL_0;
- _R_AH_0;
- _R_BL_0;
- _R_BH_0;
- sei(); // set back interrupts
- // following line orders to keep high Z state when faling edge will arrive
- state_R_ = CMD_STATE_HIGH_Z;
- return;
-}
-
-// starts the motor
-void start_motor_R_ (uint8_t pwmspeed, uint8_t direction) {
- // checking direction
- if (direction)
- {
- state_R_cmd = CMD_STATE_DIR_1;
- }
- else
- {
- state_R_cmd = CMD_STATE_DIR_0;
- }
-
- // setting pwm value
- if (pwmspeed == 0)
- {// brake
- state_R_cmd = CMD_STATE_BRAKE;
- pwm_R_ = 0;
- }
- else
- {
- // adding offset
- pwmspeed = pwmspeed + PWM_OFFSET_LR_;
-
- // clamp the value
- UTILS_BOUND(pwmspeed, PWM_MIN_LR_, PWM_MAX_LR_);
-
- // Apply the value
- pwm_R_ = pwmspeed;
- }
-}
-
-// puts motor in high Z
-void stop_motor_R_ (void) {
- state_R_cmd = CMD_STATE_HIGH_Z;
-}