Mercurial > hg > beaglert
view include/PRU.h @ 16:670be80463a3 matrix_gpio
- analog matrixIn/matrixOut are now mapped as floats from 0 to 1
- use of an external PRU code can be enabled with -P <filename>
- 16 channels of programmable GPIO can be accessed straight from render() either writing directly to the matrixGpio[] array or using digitalWrite(),
digitalRead(), setDigitalDirection() macros from Utilities.h .
author | Giulio Moro <giuliomoro@yahoo.it> |
---|---|
date | Mon, 27 Apr 2015 13:01:57 +0100 |
parents | 901d205d1a3c |
children | c98863e63174 |
line wrap: on
line source
/* * PRU.h * * Created on: May 27, 2014 * Author: andrewm */ #ifndef PRU_H_ #define PRU_H_ #include <stdint.h> class PRU { private: static const unsigned int kPruGPIODACSyncPin; static const unsigned int kPruGPIOADCSyncPin; static const unsigned int kPruGPIOTestPin; static const unsigned int kPruGPIOTestPin2; static const unsigned int kPruGPIOTestPin3; public: // Constructor PRU(); // Destructor ~PRU(); // Prepare the GPIO pins needed for the PRU int prepareGPIO(int use_spi, int use_matrix_gpio, int include_test_pin, int include_led); // Clean up the GPIO at the end void cleanupGPIO(); // Initialise and open the PRU int initialise(int pru_num, int frames_per_buffer, int spi_channels, bool xenomai_test_pin = false); // Run the code image in pru_rtaudio_bin.h int start(char * const filename); // Loop: read and write data from the PRU void loop(); // Wait for an interrupt from the PRU indicate it is finished void waitForFinish(); // Turn off the PRU when done void disable(); // For debugging: void setGPIOTestPin(); void clearGPIOTestPin(); private: int pru_number; // Which PRU we use bool running; // Whether the PRU is running bool spi_enabled; // Whether SPI ADC and DAC are used bool matrix_gpio_enabled; // Whether Matrix GPIO is used bool gpio_enabled; // Whether GPIO has been prepared bool led_enabled; // Whether a user LED is enabled bool gpio_test_pin_enabled; // Whether the test pin was also enabled int spi_num_channels; // How many channels to use for SPI ADC/DAC volatile uint32_t *pru_buffer_comm; uint16_t *pru_buffer_spi_dac; uint16_t *pru_buffer_spi_adc; uint32_t *pru_buffer_matrix_gpio; int16_t *pru_buffer_audio_dac; int16_t *pru_buffer_audio_adc; unsigned int spi_buffer_frames; unsigned int matrix_gpio_buffer_frames; unsigned int audio_buffer_frames; int xenomai_gpio_fd; // File descriptor for /dev/mem for fast GPIO uint32_t *xenomai_gpio; // Pointer to GPIO registers }; #endif /* PRU_H_ */