25 lines
880 B
Plaintext
25 lines
880 B
Plaintext
|
;
|
||
|
; Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||
|
;
|
||
|
; SPDX-License-Identifier: BSD-3-Clause
|
||
|
;
|
||
|
|
||
|
.program multi_pwm
|
||
|
.side_set 1
|
||
|
|
||
|
.wrap_target
|
||
|
;pull side 0 ; Pull in the next DWord containing the pin states, and time counter
|
||
|
;out pins, 16 side 1 ; Immediately set the pins to their new state
|
||
|
;out y, 16 [1] side 0 ; Set the counter
|
||
|
|
||
|
pull side 0 ; Pull in the next DWord containing the pin states, and time counter
|
||
|
out pins, 32 side 1 ; Immediately set the pins to their new state
|
||
|
pull side 0
|
||
|
out y, 32 side 0 ; Set the counter
|
||
|
count_check:
|
||
|
jmp y-- delay side 0 ; Check if the counter is 0, and if so wrap around. If not decrement the counter and jump to the delay
|
||
|
.wrap
|
||
|
|
||
|
delay:
|
||
|
jmp count_check [3] side 1 ; Wait a few cycles then jump back to the loop
|