Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // GPTIMER register offsets
- #define GPTIMER8 0x4903E000
- #define GPT_REG_TCLR 0x024
- #define GPT_REG_TCRR 0x028
- #define GPT_REG_TLDR 0x02c
- #define GPT_REG_TMAR 0x038
- ...
- int pwm_config_timer(guint32 resolution)
- {
- guint8 *registers = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, mem_fd, GPTIMER8);
- if (registers == MAP_FAILED)
- {
- return -1;
- }
- ...
- *REG32_PTR(registers, GPT_REG_TCLR) = 0; // Turn off !!!!!
- *REG32_PTR(registers, GPT_REG_TCRR) = counter_start;
- *REG32_PTR(registers, GPT_REG_TLDR) = counter_start;
- *REG32_PTR(registers, GPT_REG_TMAR) = dc;
- *REG32_PTR(registers, GPT_REG_TCLR) = (
- (1 << 0) | // ST -- enable counter
- (1 << 1) | // AR -- autoreload on overflow
- (1 << 6) | // CE -- compare enabled
- (1 << 7) | // SCPWM -- invert pulse
- (2 << 10) | // TRG -- overflow and match trigger
- (1 << 12) // PT -- toggle PWM mode
- );
- return munmap(registers, 4096);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement