shindai
Dependents: linetrace tracer tracer tracer1 ... more
MotorDriver_SU.cpp@0:e6c391eb8fac, 2014-09-17 (annotated)
- Committer:
- NT32
- Date:
- Wed Sep 17 03:43:44 2014 +0000
- Revision:
- 0:e6c391eb8fac
shinshu_university;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
NT32 | 0:e6c391eb8fac | 1 | #include "MotorDriver_SU.h" |
NT32 | 0:e6c391eb8fac | 2 | |
NT32 | 0:e6c391eb8fac | 3 | SPI spi(P1_22, NC, P1_15); |
NT32 | 0:e6c391eb8fac | 4 | BusOut MotorDirect_A(P1_19, P1_25, P1_16, P0_19); |
NT32 | 0:e6c391eb8fac | 5 | BusOut MotorDirect_B(P0_18, P0_17, P1_14, P1_13); |
NT32 | 0:e6c391eb8fac | 6 | |
NT32 | 0:e6c391eb8fac | 7 | MotorDriver_SU::MotorDriver_SU(PinName chip) : _chip(chip){ |
NT32 | 0:e6c391eb8fac | 8 | if (chip == P0_2){ |
NT32 | 0:e6c391eb8fac | 9 | MotorDirect = &MotorDirect_B; |
NT32 | 0:e6c391eb8fac | 10 | }else{ |
NT32 | 0:e6c391eb8fac | 11 | MotorDirect = &MotorDirect_A; |
NT32 | 0:e6c391eb8fac | 12 | } |
NT32 | 0:e6c391eb8fac | 13 | (*MotorDirect) = FREE; |
NT32 | 0:e6c391eb8fac | 14 | _chip = 1; |
NT32 | 0:e6c391eb8fac | 15 | dac.bit.AB = 0; |
NT32 | 0:e6c391eb8fac | 16 | dac.bit.BUF = 1; |
NT32 | 0:e6c391eb8fac | 17 | dac.bit.GA = 1; |
NT32 | 0:e6c391eb8fac | 18 | dac.bit.SHDN = 1; |
NT32 | 0:e6c391eb8fac | 19 | dac.bit.D = 0; |
NT32 | 0:e6c391eb8fac | 20 | spi.format(16,0); |
NT32 | 0:e6c391eb8fac | 21 | spi.frequency(20000000); |
NT32 | 0:e6c391eb8fac | 22 | _chip = 0; |
NT32 | 0:e6c391eb8fac | 23 | spi.write(dac.command); |
NT32 | 0:e6c391eb8fac | 24 | _chip = 1; |
NT32 | 0:e6c391eb8fac | 25 | dac.bit.AB = 1; |
NT32 | 0:e6c391eb8fac | 26 | _chip = 0; |
NT32 | 0:e6c391eb8fac | 27 | spi.write(dac.command); |
NT32 | 0:e6c391eb8fac | 28 | _chip = 1; |
NT32 | 0:e6c391eb8fac | 29 | } |
NT32 | 0:e6c391eb8fac | 30 | void MotorDriver_SU::Drive(uint8_t channel, uint8_t direction, uint16_t velocity){ |
NT32 | 0:e6c391eb8fac | 31 | dac.bit.AB = (channel ^ 0x01); |
NT32 | 0:e6c391eb8fac | 32 | dac.bit.D = velocity; |
NT32 | 0:e6c391eb8fac | 33 | _chip = 0; |
NT32 | 0:e6c391eb8fac | 34 | spi.write(dac.command); |
NT32 | 0:e6c391eb8fac | 35 | _chip = 1; |
NT32 | 0:e6c391eb8fac | 36 | // (*MotorDirect) = ((*MotorDirect) & (0x0F & (0x0F << (channel * 2)))) | (direction <<(channel * 2)); |
NT32 | 0:e6c391eb8fac | 37 | (*MotorDirect) = ((*MotorDirect) & (0x0C >> (channel * 2))) | (direction << (channel * 2)); |
NT32 | 0:e6c391eb8fac | 38 | } |