X-Git-Url: https://rtime.felk.cvut.cz/gitweb/fpga/rpi-motor-control.git/blobdiff_plain/a54714b1caefa707bad771a992278d073b1377ee..59b72ac21a7189e402f90a288889174af4fe3015:/pmsm-control/test_sw/rpin.h diff --git a/pmsm-control/test_sw/rpin.h b/pmsm-control/test_sw/rpin.h new file mode 100644 index 0000000..e43408f --- /dev/null +++ b/pmsm-control/test_sw/rpin.h @@ -0,0 +1,109 @@ +/** + * \brief Interface pro ovladani pinu na RPi. + * \file rpin.h + * \date March 21, 2015 + * \author Martin Prudek + * + * Deklaruje nativni funkce pro ovladani pinu a pwm na RPi. + * Implementace "rpi_hw.c" + * + * + */ + +#ifndef RPIN_H_ +#define RPIN_H_ + + +/* Pin modes */ +#define INPUT 0 +#define OUTPUT 1 +#define PWM_OUTPUT 2 +#define GPIO_CLOCK 3 +#define FSEL_INPT 0b000 /*0*/ +#define FSEL_OUTP 0b001 /*1*/ +#define FSEL_ALT0 0b100 /*4*/ +#define FSEL_ALT1 0b101 /*5*/ +#define FSEL_ALT2 0b110 /*6*/ +#define FSEL_ALT3 0b111 /*7*/ +#define FSEL_ALT4 0b011 /*3*/ +#define FSEL_ALT5 0b010 /*2*/ + +/* Logic levels */ +#define LOW 0 +#define HIGH 1 + +/* Clk sources */ +enum ClkSource{ + PLLD_500_MHZ=0, /*500 MHz*/ + OSC_19_MHZ_2=1, /*19.2 MHz*/ + HDMI_216_MHZ=2, /*216 MHz*/ + PLLC_1000_MHZ=3 /*1000 MHz, changes with overclock*/ +}; + +/** + * \brief inicializuje pouziti GPIO pinu... + * (namapuje registry DMA) + */ +extern int initialise (void); + +/** + * \brief + * Select the native "balanced" mode, or standard mark:space mode + */ +extern void pwmSetMode (int); + +/** + * \brief + * Set the PWM range register. We set both range registers to the same + * value. + */ +extern void pwmSetRange (unsigned int); + +/** + * \brief + * Set/Change the PWM clock. + * Not tested. + */ +extern void pwmSetClock (int); + +/** + * \brief nastavi mod dnaeho pinu + * \param pin [in] cislo GPIO pinu + * \param mode [in] mod pinu -> in/out/altx + * + * Nastavi pin jako vstupni / vystupni, pripadne nastavi slternativni funkci. + */ +extern void pinMode (int, int); + +/** + * \brief Precte logickou uroven daneho pinu 0/1 + * v pripade neicnicializovaneho GPIO nebo neexistence pinu vrati 0 + * \param pin [in] cislo GPIO pinu + */ +extern int digitalRead (int); + +/** + * \brief zapise logickou uroven na dany pin + * \param pin [in] cislo GPIO pinu + * \param value [in] logicka uroven 0/1 + */ +extern void digitalWrite (int, int); + +/** + * \brief nastavi hodnotu pwm + * \param pin[in] cislo GPIO PWM pinu + * \param value[int] sirka plneni pwm (max=1024) + */ +extern void pwmWrite (int, int); + +/** + * \brief A different approach to set gpio mode. + */ +extern void gpioSetMode(unsigned gpio_n, unsigned mode); + +/** + * \brief Initialize gpclk. + */ +extern int initClock(enum ClkSource,int, int); + +#endif /*RPIN_H_*/