shindai

Dependents:   linetrace tracer tracer tracer1 ... more

MotorDriver_SU.cpp

Committer:
NT32
Date:
2014-09-17
Revision:
0:e6c391eb8fac

File content as of revision 0:e6c391eb8fac:

#include "MotorDriver_SU.h"

SPI spi(P1_22, NC, P1_15);
BusOut  MotorDirect_A(P1_19, P1_25, P1_16, P0_19);
BusOut  MotorDirect_B(P0_18, P0_17, P1_14, P1_13);

MotorDriver_SU::MotorDriver_SU(PinName chip) : _chip(chip){
    if (chip == P0_2){
        MotorDirect = &MotorDirect_B;
    }else{
        MotorDirect = &MotorDirect_A;
    }
    (*MotorDirect) = FREE;
    _chip = 1;
    dac.bit.AB = 0;
    dac.bit.BUF = 1;
    dac.bit.GA = 1;
    dac.bit.SHDN = 1;
    dac.bit.D = 0;
    spi.format(16,0);
    spi.frequency(20000000);
    _chip = 0;
    spi.write(dac.command);
    _chip = 1;
    dac.bit.AB = 1;
    _chip = 0;
    spi.write(dac.command);
    _chip = 1;
}
void MotorDriver_SU::Drive(uint8_t channel, uint8_t direction, uint16_t velocity){
    dac.bit.AB = (channel ^ 0x01);
    dac.bit.D = velocity;
    _chip = 0;
    spi.write(dac.command);
    _chip = 1;
//    (*MotorDirect) = ((*MotorDirect) & (0x0F & (0x0F << (channel * 2)))) | (direction <<(channel * 2));
    (*MotorDirect) = ((*MotorDirect) & (0x0C >> (channel * 2))) | (direction << (channel * 2));
}