diff options
| author | Dawsyn Schraiber <[email protected]> | 2024-05-09 02:08:42 -0400 |
|---|---|---|
| committer | Dawsyn Schraiber <[email protected]> | 2024-05-09 02:08:42 -0400 |
| commit | 8fbd08fe29bbc2246a78b481b219c241f62ff420 (patch) | |
| tree | cc8f3f414a5560fa232677bc82d72348fd46660d /src/pru/pru_pwm.c | |
| parent | 93acde052369568beaefb0d99629d8797f5c191f (diff) | |
| download | active-drag-system-8fbd08fe29bbc2246a78b481b219c241f62ff420.tar.gz active-drag-system-8fbd08fe29bbc2246a78b481b219c241f62ff420.tar.bz2 active-drag-system-8fbd08fe29bbc2246a78b481b219c241f62ff420.zip | |
Remove Residual BeagleBone Black Related Files
Diffstat (limited to 'src/pru/pru_pwm.c')
| -rw-r--r-- | src/pru/pru_pwm.c | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/src/pru/pru_pwm.c b/src/pru/pru_pwm.c deleted file mode 100644 index 796040b..0000000 --- a/src/pru/pru_pwm.c +++ /dev/null @@ -1,102 +0,0 @@ -#include <stdint.h> -#include <pru_cfg.h> -#include <pru_intc.h> -#include <pru_iep.h> -#include "intc_map.h" -#include "resource_table_empty.h" - -#define CYCLES_PER_SECOND 200000000 -#define CYCLES_PER_PERIOD (CYCLES_PER_SECOND / 800) -#define DEFAULT_DUTY_CYCLE 0 -#define P8_12 (1 << 14) -#define P8_12_n ~(1 << 14) -#define PRU0_DRAM 0x00000 // Offset to DRAM -#define PRU_TIMER_PASSCODE 0x31138423 -#define BURN_TIME 2 // seconds for motor burn - -volatile uint32_t *pru0_dram = (uint32_t *) (PRU0_DRAM + 0x200); - - -volatile register uint32_t __R30; -volatile register uint32_t __R31; - - -void main(void) { - uint32_t duty_cycle = DEFAULT_DUTY_CYCLE; - uint32_t off_cycles = ((100 - duty_cycle) * CYCLES_PER_PERIOD / 100); - uint32_t on_cycles = ((100 - (100 - duty_cycle)) * CYCLES_PER_PERIOD / 100); - uint32_t off_count = off_cycles; - uint32_t on_count = on_cycles; - *pru0_dram = duty_cycle; - - /* Clear SYSCFG[STANDBY_INIT] to enable OCP master port */ - CT_CFG.SYSCFG_bit.STANDBY_INIT = 0; - - while (1) { - if (pru0_dram[1] == PRU_TIMER_PASSCODE) { - /* Disable counter */ - CT_IEP.TMR_GLB_CFG_bit.CNT_EN = 0; - - /* Reset Count register */ - CT_IEP.TMR_CNT = 0x0; - - /* Clear overflow status register */ - CT_IEP.TMR_GLB_STS_bit.CNT_OVF = 0x1; - - /* Set compare value */ - CT_IEP.TMR_CMP0 = (BURN_TIME * CYCLES_PER_SECOND); // 10 seconds @ 200MHz - - /* Clear compare status */ - CT_IEP.TMR_CMP_STS_bit.CMP_HIT = 0xFF; - - /* Disable compensation */ - CT_IEP.TMR_COMPEN_bit.COMPEN_CNT = 0x0; - - /* Enable CMP0 and reset on event */ - CT_IEP.TMR_CMP_CFG_bit.CMP0_RST_CNT_EN = 0x1; - CT_IEP.TMR_CMP_CFG_bit.CMP_EN = 0x1; - - /* Clear the status of all interrupts */ - CT_INTC.SECR0 = 0xFFFFFFFF; - CT_INTC.SECR1 = 0xFFFFFFFF; - - /* Enable counter */ - CT_IEP.TMR_GLB_CFG = 0x11; - break; - } - } - - /* Poll until R31.31 is set */ - do { - while ((__R31 & 0x80000000) == 0) { - } - /* Verify that the IEP is the source of the interrupt */ - } while ((CT_INTC.SECR0 & (1 << 7)) == 0); - - /* Disable counter */ - CT_IEP.TMR_GLB_CFG_bit.CNT_EN = 0x0; - - /* Disable Compare0 */ - CT_IEP.TMR_CMP_CFG = 0x0; - - /* Clear Compare status */ - CT_IEP.TMR_CMP_STS = 0xFF; - - /* Clear the status of the interrupt */ - CT_INTC.SECR0 = (1 << 7); - - while (1) { - if (on_count) { - __R30 |= P8_12; // Set the GPIO pin to 1 - on_count--; - __delay_cycles(3); - } else if (off_count) { - __R30 &= P8_12_n; // Clear the GPIO pin - off_count--; - } else { - duty_cycle = *pru0_dram; - off_count = ((100 - duty_cycle) * CYCLES_PER_PERIOD / 100); - on_count = ((100 - (100 - duty_cycle)) * CYCLES_PER_PERIOD / 100); - } - } -} |
