|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
-
-
- #ifndef output_pwm_h_
- #define output_pwm_h_
-
- #include "Arduino.h"
- #include "AudioStream.h"
- #include "DMAChannel.h"
-
- #if defined(__IMXRT1062__)
- struct _pwm_pin_info_struct {
- uint8_t type;
- uint8_t module;
- uint8_t channel;
- uint8_t muxval;
- };
- struct _audio_info_flexpwm {
- IMXRT_FLEXPWM_t *flexpwm;
- _pwm_pin_info_struct info;
- uint8_t pin;
- };
- #endif
-
- class AudioOutputPWM : public AudioStream
- {
- public:
- AudioOutputPWM(void) : AudioStream(1, inputQueueArray) { begin(); }
- virtual void update(void);
- private:
- static bool update_responsibility;
- audio_block_t *inputQueueArray[1];
- static void isr(void);
- void begin(void);
- #if defined(KINETISK)
- static audio_block_t *block_1st;
- static audio_block_t *block_2nd;
- static uint32_t block_offset;
- static uint8_t interrupt_count;
- static DMAChannel dma;
- #elif defined(__IMXRT1062__)
- public:
- AudioOutputPWM(uint8_t pin1, uint8_t pin2) : AudioStream(1, inputQueueArray) { begin(pin1, pin2); }
- private:
- void begin(uint8_t pin1, uint8_t pin2);
- static audio_block_t *block;
- static DMAChannel dma[2];
- static _audio_info_flexpwm apins[2];
- #endif
- };
-
- #endif
|