| .program probe |
| .side_set 1 opt |
| |
| public out_negedge: |
| set pindirs, 1 side 0x0 ; Init OE clock 0 |
| pull ; Pull number of bits to shift -1 from tx fifo and put into output shift register |
| mov x, osr ; mov bits to shift -1 from output shift register into x |
| pull ; Pull data to shift out |
| out_negedge_bitloop: |
| out pins, 1 side 0x0 ; clock data out on falling edge |
| jmp x-- out_negedge_bitloop side 0x1 ; data is present for posedge |
| set pins, 0 side 0x0 ; Drive data low |
| push ; Push to rx fifo just so processor knows when done |
| jmp out_negedge ; Wait for next transaction |
| |
| public in_posedge: |
| set pindirs, 0 side 0x0 ; INIT IE clock 0 |
| pull ; Pull number of bits to shift -1 from tx fifo and put into output shift register |
| mov x, osr ; mov bits to shift -1 from output shift register into x into x |
| in_posedge_bitloop: |
| in pins, 1 side 0x1 ; Generate posedge and read data |
| jmp x-- in_posedge_bitloop side 0x0 ; |
| push ; Push to rx fifo when done |
| jmp in_posedge ; Jump back to start |