TVZ Mechatronics Team / DRV8301

DRV8301.cpp

Committer:
pantunovi
Date:
2015-11-23
Revision:
2:bdca7d22b783
Parent:
0:2825ac4882fd
Child:
3:227ecd07b9cd

File content as of revision 2:bdca7d22b783:

#include "DRV8301.h"

DRV8301::DRV8301(PinName mosi, PinName miso, PinName sck) : MOSI(mosi), MISO(miso), SCK(sck){
    startup();
    input = 0;
}

//funkcija za ograničernje struje

void DRV8301::setCurrentLimit(uint8_t input){
    uint16_t register1;
    maskCurrentLimit = 0x783F;
    register1 &= maskCurrentLimit;
    register1 |= input << 6;
}
 
//funkcija za input PWM ulaza

void DRV8301::setPWMNumber(uint8_t input){
    uint16_t register1;
    maskPWM = 0x7FF7;
    register1 &= maskPWM;
    register1 |= input << 3;
}
    
//funkcija za input mod OCP-a

void DRV8301::setOCPMode(uint8_t input){
    uint16_t register1;
    maskOCP = 0x7FCF;
    register1 &= maskOCP;
    register1 |= input << 4;
}

//funkcija za input mod OCTW-a 

void DRV8301::setOCTW(uint8_t input){
    uint16_t register2;
    maskOCTW = 0x7FFC;
    register2 &= maskOCTW;
    register2 |= input;
}
    
//funkcija za pojačanje

void DRV8301::setGain(uint8_t input){
    uint16_t register2;
    maskGain = 0x7FF3;
    register2 &= maskGain;
    register2 |= input << 2;
}

//funkcija za dobivanje stanja u registru 1

uint16_t getRegister1(){
    uint16_t register1;
    return register1;
}
   
// funkcija za dobivanje stanja u registru 2

uint16_t getRegister2(){
    uint16_t register2;
    return register2;
}

//funkcija za pokretanje (reboot) DRV-a
    
void DRV8301::startup(){
    EN_GATE = 0;
    wait_us (25);
    EN_GATE = 1;
}