]> rtime.felk.cvut.cz Git - fpga/rpi-motor-control.git/blob - pmsm-control/test_sw/rpin.h
Usleep replaced by clock_nasosleep.
[fpga/rpi-motor-control.git] / pmsm-control / test_sw / rpin.h
1 /**
2  * \brief Interface pro ovladani pinu na RPi.
3  * \file rpin.h
4  * \date March 21, 2015
5  * \author Martin Prudek
6  *
7  *      Deklaruje nativni funkce pro ovladani pinu a pwm na RPi.
8  *      Implementace  "rpi_hw.c"
9  *
10  *
11  */
12
13 #ifndef RPIN_H_
14 #define RPIN_H_
15
16
17 /* Pin modes */
18 #define INPUT                    0
19 #define OUTPUT                   1
20 #define PWM_OUTPUT               2
21 #define GPIO_CLOCK               3
22 #define FSEL_INPT               0b000   /*0*/
23 #define FSEL_OUTP               0b001   /*1*/
24 #define FSEL_ALT0               0b100   /*4*/
25 #define FSEL_ALT1               0b101   /*5*/
26 #define FSEL_ALT2               0b110   /*6*/
27 #define FSEL_ALT3               0b111   /*7*/
28 #define FSEL_ALT4               0b011   /*3*/
29 #define FSEL_ALT5               0b010   /*2*/
30
31 /* Logic levels */
32 #define LOW                      0
33 #define HIGH                     1
34
35 /* Clk sources */
36 enum ClkSource{
37         PLLD_500_MHZ=0,         /*500 MHz*/
38         OSC_19_MHZ_2=1,         /*19.2 MHz*/
39         HDMI_216_MHZ=2,         /*216 MHz*/
40         PLLC_1000_MHZ=3         /*1000 MHz, changes with overclock*/
41 };
42
43 /**
44  * \brief inicializuje pouziti GPIO pinu...
45  * (namapuje registry DMA)
46  */
47 extern int initialise (void);
48
49 /**
50  * \brief
51  *      Select the native "balanced" mode, or standard mark:space mode
52  */
53 extern void pwmSetMode (int);
54
55 /**
56  * \brief
57  *      Set the PWM range register. We set both range registers to the same
58  *      value.
59  */
60 extern void pwmSetRange (unsigned int);
61
62 /**
63  * \brief
64  *      Set/Change the PWM clock.
65  *      Not tested.
66  */
67 extern void pwmSetClock (int);
68
69 /**
70  * \brief nastavi mod dnaeho pinu
71  * \param pin [in] cislo GPIO pinu
72  * \param mode [in] mod pinu -> in/out/altx
73  *
74  * Nastavi pin jako vstupni / vystupni, pripadne nastavi slternativni funkci.
75  */
76 extern void pinMode (int, int);
77
78 /**
79  * \brief Precte logickou uroven daneho pinu 0/1
80  * v pripade neicnicializovaneho GPIO nebo neexistence pinu vrati 0
81  * \param pin [in] cislo GPIO pinu
82  */
83 extern int digitalRead (int);
84
85 /**
86  * \brief zapise logickou uroven na dany pin
87  * \param pin [in] cislo GPIO pinu
88  * \param value [in] logicka uroven 0/1
89  */
90 extern void digitalWrite (int, int);
91
92 /**
93  * \brief nastavi hodnotu pwm
94  * \param pin[in] cislo GPIO PWM pinu
95  * \param value[int] sirka plneni  pwm (max=1024)
96  */
97 extern void pwmWrite (int, int);
98
99 /**
100  * \brief A different approach to set gpio mode.
101  */
102 extern void gpioSetMode(unsigned gpio_n, unsigned mode);
103
104 /**
105  * \brief Initialize gpclk.
106  */
107 extern int initClock(enum ClkSource,int, int);
108
109 #endif /*RPIN_H_*/