APM:Libraries
RCOutput_PRU.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "AP_HAL_Linux.h"
4 #define RCOUT_PRUSS_SHAREDRAM_BASE 0x4a310000
5 #define MAX_PWMS 12
6 #define PWM_CMD_MAGIC 0xf00fbaaf
7 #define PWM_REPLY_MAGIC 0xbaaff00f
8 #define PWM_CMD_CONFIG 0 /* full configuration in one go */
9 #define PWM_CMD_ENABLE 1 /* enable a pwm */
10 #define PWM_CMD_DISABLE 2 /* disable a pwm */
11 #define PWM_CMD_MODIFY 3 /* modify a pwm */
12 #define PWM_CMD_SET 4 /* set a pwm output explicitly */
13 #define PWM_CMD_CLR 5 /* clr a pwm output explicitly */
14 #define PWM_CMD_TEST 6 /* various crap */
15 
16 namespace Linux {
17 
19  void init();
20  void set_freq(uint32_t chmask, uint16_t freq_hz);
21  uint16_t get_freq(uint8_t ch);
22  void enable_ch(uint8_t ch);
23  void disable_ch(uint8_t ch);
24  void write(uint8_t ch, uint16_t period_us);
25  uint16_t read(uint8_t ch);
26  void read(uint16_t* period_us, uint8_t len);
27  void cork(void) override;
28  void push(void) override;
29 
30 private:
31  static const int TICK_PER_US=200;
32  static const int TICK_PER_S=200000000;
33  struct pwm_cmd {
34  uint32_t magic;
35  uint32_t enmask; /* enable mask */
36  uint32_t offmsk; /* state when pwm is off */
37  uint32_t periodhi[MAX_PWMS][2];
38  uint32_t hilo_read[MAX_PWMS][2];
39  uint32_t enmask_read;
40  };
41  volatile struct pwm_cmd *sharedMem_cmd;
42 
43  uint16_t pending[MAX_PWMS];
44  bool corked;
45  uint32_t pending_mask;
46 };
47 }
uint16_t read(uint8_t ch)
void push(void) override
uint32_t periodhi[MAX_PWMS][2]
Definition: RCOutput_PRU.h:37
void enable_ch(uint8_t ch)
void set_freq(uint32_t chmask, uint16_t freq_hz)
static const int TICK_PER_S
Definition: RCOutput_PRU.h:32
#define MAX_PWMS
Definition: RCOutput_PRU.h:5
uint32_t hilo_read[MAX_PWMS][2]
Definition: RCOutput_PRU.h:38
uint16_t pending[MAX_PWMS]
Definition: RCOutput_PRU.h:43
void disable_ch(uint8_t ch)
void cork(void) override
static const int TICK_PER_US
Definition: RCOutput_PRU.h:31
uint16_t get_freq(uint8_t ch)
void write(uint8_t ch, uint16_t period_us)
volatile struct pwm_cmd * sharedMem_cmd
Definition: RCOutput_PRU.h:41