GroupA / Mbed 2 deprecated WaG_final

Dependencies:   mbed

Fork of Lab_6_WaG by GroupA

Committer:
spm71
Date:
Tue Mar 06 17:25:48 2018 +0000
Revision:
20:d23bcd97f2c5
Parent:
18:0e281922212c
Child:
21:88f9f280931b
implemented menu and first option in the menu.; implementing the second option

Who changed what in which revision?

UserRevisionLine numberNew contents of line
spm71 18:0e281922212c 1 /******************************************************************************
spm71 18:0e281922212c 2 * EECS 397
spm71 18:0e281922212c 3 *
spm71 18:0e281922212c 4 * Assignment Name: Lab 5: WaG
spm71 18:0e281922212c 5 *
spm71 18:0e281922212c 6 * Authors: Sam Morrison and Phong Nguyen
spm71 18:0e281922212c 7 * File name: stepper.cpp
spm71 18:0e281922212c 8 * Purpose: Driver for stepper motor
spm71 18:0e281922212c 9 *
spm71 18:0e281922212c 10 * Created: 03/02/2018
spm71 18:0e281922212c 11 * Last Modified: 03/02/2018
spm71 18:0e281922212c 12 *
spm71 18:0e281922212c 13 ******************************************************************************/
spm71 18:0e281922212c 14
spm71 18:0e281922212c 15 #include "mbed.h"
spm71 18:0e281922212c 16 #include "io_pins.h"
spm71 18:0e281922212c 17 #include "spi.h"
spm71 18:0e281922212c 18 #include "stepper.h"
spm71 18:0e281922212c 19
spm71 18:0e281922212c 20 DigitalOut stp_ncs(STP_DRV8806_NCS);
spm71 20:d23bcd97f2c5 21 DigitalIn jog_ccw(D4);
spm71 20:d23bcd97f2c5 22 DigitalIn jog_cw(D5);
spm71 20:d23bcd97f2c5 23
spm71 20:d23bcd97f2c5 24 int stp_cur_pos;
spm71 20:d23bcd97f2c5 25 int stp_sensor_pos[NUM_SENSORS + 1];
spm71 18:0e281922212c 26
spm71 18:0e281922212c 27 extern spi_cfg drv8806 {
spm71 18:0e281922212c 28 SPI_DRV8806_ID,
spm71 18:0e281922212c 29 STP_DRV8806_NCS,
spm71 20:d23bcd97f2c5 30 DRV8806_SPI_MODE,
spm71 20:d23bcd97f2c5 31 DRV8806_SPI_FREQ,
spm71 20:d23bcd97f2c5 32 DRV8806_SPI_NO_BITS,
spm71 18:0e281922212c 33 };
spm71 18:0e281922212c 34
spm71 18:0e281922212c 35 /*
spm71 18:0e281922212c 36 * void stp_init();
spm71 18:0e281922212c 37 * Description: initializes stepper values to unkown
spm71 18:0e281922212c 38 *
spm71 18:0e281922212c 39 * Inputs:
spm71 18:0e281922212c 40 * Parameters: void
spm71 18:0e281922212c 41 * Globals:
spm71 18:0e281922212c 42 *
spm71 18:0e281922212c 43 * Outputs:
spm71 18:0e281922212c 44 * Returns: void
spm71 18:0e281922212c 45 */
spm71 18:0e281922212c 46 void stp_init() {
spm71 20:d23bcd97f2c5 47 stp_cur_pos = STP_POS_UNKN;
spm71 18:0e281922212c 48 for (int i = 1; i <= NUM_SENSORS; i++) {
spm71 18:0e281922212c 49 stp_sensor_pos[i] = STP_POS_UNKN;
spm71 18:0e281922212c 50 }
spm71 18:0e281922212c 51 }
spm71 18:0e281922212c 52
spm71 18:0e281922212c 53 /*
spm71 18:0e281922212c 54 * void stp_step(int direction);
spm71 18:0e281922212c 55 * Description: turns the stepper motor clockwise or counter-clockwise
spm71 18:0e281922212c 56 *
spm71 18:0e281922212c 57 * Inputs:
spm71 18:0e281922212c 58 * Parameters:
spm71 18:0e281922212c 59 * int direction
spm71 18:0e281922212c 60 * Globals:
spm71 18:0e281922212c 61 *
spm71 18:0e281922212c 62 * Outputs:
spm71 18:0e281922212c 63 * Returns: void
spm71 18:0e281922212c 64 */
spm71 18:0e281922212c 65 void stp_step(int direction) {
spm71 20:d23bcd97f2c5 66 jog_cw.mode(PullUp);
spm71 20:d23bcd97f2c5 67 jog_ccw.mode(PullUp);
spm71 20:d23bcd97f2c5 68
spm71 20:d23bcd97f2c5 69 //static int cur_pos = stp_cur_pos;
spm71 20:d23bcd97f2c5 70 static int turn[4] = {0x03, 0x06, 0x0c, 0x09};
spm71 20:d23bcd97f2c5 71 if (direction == STP_CW) {
spm71 20:d23bcd97f2c5 72 for (int i = 0; i < 4; i++)
spm71 20:d23bcd97f2c5 73 spi_send(drv8806, turn[i]);
spm71 20:d23bcd97f2c5 74 }
spm71 20:d23bcd97f2c5 75 else if (direction == STP_CCW) {
spm71 20:d23bcd97f2c5 76 for (int i = 3; i >= 0; i--)
spm71 20:d23bcd97f2c5 77 spi_send(drv8806, turn[i]);
spm71 20:d23bcd97f2c5 78 }
spm71 18:0e281922212c 79
spm71 18:0e281922212c 80 }