@@ -27,70 +27,107 @@ const uint16_t i2s_program[] = {
27
27
; /--- LRCLK
28
28
; |/-- BCLK
29
29
; ||
30
+ pull noblock side 0b11 ; Loads OSR with the next FIFO value or X
31
+ mov x osr side 0b11 ; Save the new value in case we need it again
32
+ set y 14 side 0b11
33
+ bitloop1:
34
+ out pins 1 side 0b10 [2]
35
+ jmp y-- bitloop1 side 0b11 [2]
36
+ out pins 1 side 0b00 [2]
37
+ set y 14 side 0b01 [2]
38
+ bitloop0:
39
+ out pins 1 side 0b00 [2]
40
+ jmp y-- bitloop0 side 0b01 [2]
41
+ out pins 1 side 0b10 [2]
42
+ */
43
+ // Above assembled with pioasm.
44
+ 0x9880 , // 0: pull noblock side 3
45
+ 0xb827 , // 1: mov x, osr side 3
46
+ 0xf84e , // 2: set y, 14 side 3
47
+ 0x7201 , // 3: out pins, 1 side 2 [2]
48
+ 0x1a83 , // 4: jmp y--, 3 side 3 [2]
49
+ 0x6201 , // 5: out pins, 1 side 0 [2]
50
+ 0xea4e , // 6: set y, 14 side 1 [2]
51
+ 0x6201 , // 7: out pins, 1 side 0 [2]
52
+ 0x0a87 , // 8: jmp y--, 7 side 1 [2]
53
+ 0x7201 , // 9: out pins, 1 side 2 [2]
54
+ };
55
+
56
+
57
+ const uint16_t i2s_program_left_justified [] = {
58
+ /*
59
+ .program i2s
60
+ .side_set 2
61
+
62
+ ; Load the next set of samples
63
+ ; /--- LRCLK
64
+ ; |/-- BCLK
65
+ ; ||
30
66
pull noblock side 0b01 ; Loads OSR with the next FIFO value or X
31
67
mov x osr side 0b01 ; Save the new value in case we need it again
32
68
set y 14 side 0b01
33
69
bitloop1:
34
- out pins 1 side 0b00 [2]
35
- jmp y-- bitloop1 side 0b01 [2]
70
+ out pins 1 side 0b10 [2]
71
+ jmp y-- bitloop1 side 0b11 [2]
36
72
out pins 1 side 0b10 [2]
37
73
set y 14 side 0b11 [2]
38
74
bitloop0:
39
- out pins 1 side 0b10 [2]
40
- jmp y-- bitloop0 side 0b11 [2]
75
+ out pins 1 side 0b00 [2]
76
+ jmp y-- bitloop0 side 0b01 [2]
41
77
out pins 1 side 0b00 [2]
42
78
*/
43
79
// Above assembled with pioasm.
44
80
0x8880 , // 0: pull noblock side 1
45
81
0xa827 , // 1: mov x, osr side 1
46
82
0xe84e , // 2: set y, 14 side 1
47
- 0x6201 , // 3: out pins, 1 side 0 [2]
48
- 0x0a83 , // 4: jmp y--, 3 side 1 [2]
83
+ 0x7201 , // 3: out pins, 1 side 2 [2]
84
+ 0x1a83 , // 4: jmp y--, 3 side 3 [2]
49
85
0x7201 , // 5: out pins, 1 side 2 [2]
50
86
0xfa4e , // 6: set y, 14 side 3 [2]
51
- 0x7201 , // 7: out pins, 1 side 2 [2]
52
- 0x1a87 , // 8: jmp y--, 7 side 3 [2]
87
+ 0x6201 , // 7: out pins, 1 side 0 [2]
88
+ 0x0a87 , // 8: jmp y--, 7 side 1 [2]
53
89
0x6201 , // 9: out pins, 1 side 0 [2]
54
90
};
55
91
56
-
57
- const uint16_t i2s_program_left_justified [] = {
92
+ // Another version of i2s_program with the LRCLC and BCLK pin swapped
93
+ const uint16_t i2s_program_swap [] = {
58
94
/*
59
95
.program i2s
60
96
.side_set 2
61
97
62
98
; Load the next set of samples
63
- ; /--- LRCLK
64
- ; |/-- BCLK
65
- ; ||
99
+ ; /--- BCLK
100
+ ; |/-- LRCLK
101
+ ; ||
66
102
pull noblock side 0b11 ; Loads OSR with the next FIFO value or X
67
103
mov x osr side 0b11 ; Save the new value in case we need it again
68
104
set y 14 side 0b11
69
105
bitloop1:
106
+ out pins 1 side 0b01 [2]
107
+ jmp y-- bitloop1 side 0b11 [2]
70
108
out pins 1 side 0b00 [2]
71
- jmp y-- bitloop1 side 0b01 [2]
72
- out pins 1 side 0b00 [2]
73
- set y 14 side 0b01 [2]
109
+ set y 14 side 0b10 [2]
74
110
bitloop0:
75
- out pins 1 side 0b10 [2]
76
- jmp y-- bitloop0 side 0b11 [2]
77
- out pins 1 side 0b10 [2]
111
+ out pins 1 side 0b00 [2]
112
+ jmp y-- bitloop0 side 0b10 [2]
113
+ out pins 1 side 0b01 [2]
78
114
*/
79
115
// Above assembled with pioasm.
80
116
0x9880 , // 0: pull noblock side 3
81
117
0xb827 , // 1: mov x, osr side 3
82
118
0xf84e , // 2: set y, 14 side 3
83
- 0x6201 , // 3: out pins, 1 side 0 [2]
84
- 0x0a83 , // 4: jmp y--, 3 side 1 [2]
119
+ 0x6a01 , // 3: out pins, 1 side 1 [2]
120
+ 0x1a83 , // 4: jmp y--, 3 side 3 [2]
85
121
0x6201 , // 5: out pins, 1 side 0 [2]
86
- 0xea4e , // 6: set y, 14 side 1 [2]
87
- 0x7201 , // 7: out pins, 1 side 2 [2]
88
- 0x1a87 , // 8: jmp y--, 7 side 3 [2]
89
- 0x7201 , // 9: out pins, 1 side 2 [2]
122
+ 0xf24e , // 6: set y, 14 side 2 [2]
123
+ 0x6201 , // 7: out pins, 1 side 0 [2]
124
+ 0x1287 , // 8: jmp y--, 7 side 2 [2]
125
+ 0x6a01 , // 9: out pins, 1 side 1 [2]
90
126
};
91
127
92
- // Another version of i2s_program with the LRCLC and BCLK pin swapped
93
- const uint16_t i2s_program_swap [] = {
128
+ // Another version of i2s_program_left_justified with the LRCLC and BCLK pin
129
+ // swapped.
130
+ const uint16_t i2s_program_left_justified_swap [] = {
94
131
/*
95
132
.program i2s
96
133
.side_set 2
@@ -103,64 +140,26 @@ const uint16_t i2s_program_swap[] = {
103
140
mov x osr side 0b10 ; Save the new value in case we need it again
104
141
set y 14 side 0b10
105
142
bitloop1:
106
- out pins 1 side 0b00 [2]
107
- jmp y-- bitloop1 side 0b10 [2]
143
+ out pins 1 side 0b01 [2]
144
+ jmp y-- bitloop1 side 0b11 [2]
108
145
out pins 1 side 0b01 [2]
109
146
set y 14 side 0b11 [2]
110
147
bitloop0:
111
- out pins 1 side 0b01 [2]
112
- jmp y-- bitloop0 side 0b11 [2]
148
+ out pins 1 side 0b00 [2]
149
+ jmp y-- bitloop0 side 0b10 [2]
113
150
out pins 1 side 0b00 [2]
114
151
*/
115
152
// Above assembled with pioasm.
116
153
0x9080 , // 0: pull noblock side 2
117
154
0xb027 , // 1: mov x, osr side 2
118
155
0xf04e , // 2: set y, 14 side 2
119
- 0x6201 , // 3: out pins, 1 side 0 [2]
120
- 0x1283 , // 4: jmp y--, 3 side 2 [2]
156
+ 0x6a01 , // 3: out pins, 1 side 1 [2]
157
+ 0x1a83 , // 4: jmp y--, 3 side 3 [2]
121
158
0x6a01 , // 5: out pins, 1 side 1 [2]
122
159
0xfa4e , // 6: set y, 14 side 3 [2]
123
- 0x6a01 , // 7: out pins, 1 side 1 [2]
124
- 0x1a87 , // 8: jmp y--, 7 side 3 [2]
160
+ 0x6201 , // 7: out pins, 1 side 0 [2]
161
+ 0x1287 , // 8: jmp y--, 7 side 2 [2]
125
162
0x6201 , // 9: out pins, 1 side 0 [2]
126
-
127
- };
128
-
129
- // Another version of i2s_program_left_justified with the LRCLC and BCLK pin
130
- // swapped.
131
- const uint16_t i2s_program_left_justified_swap [] = {
132
- /*
133
- .program i2s
134
- .side_set 2
135
-
136
- ; Load the next set of samples
137
- ; /--- BCLK
138
- ; |/-- LRCLK
139
- ; ||
140
- pull noblock side 0b11 ; Loads OSR with the next FIFO value or X
141
- mov x osr side 0b11 ; Save the new value in case we need it again
142
- set y 14 side 0b11
143
- bitloop1:
144
- out pins 1 side 0b00 [2]
145
- jmp y-- bitloop1 side 0b10 [2]
146
- out pins 1 side 0b00 [2]
147
- set y 14 side 0b10 [2]
148
- bitloop0:
149
- out pins 1 side 0b01 [2]
150
- jmp y-- bitloop0 side 0b11 [2]
151
- out pins 1 side 0b01 [2]
152
- */
153
- // Above assembled with pioasm.
154
- 0x9880 , // 0: pull noblock side 3
155
- 0xb827 , // 1: mov x, osr side 3
156
- 0xf84e , // 2: set y, 14 side 3
157
- 0x6201 , // 3: out pins, 1 side 0 [2]
158
- 0x1283 , // 4: jmp y--, 3 side 2 [2]
159
- 0x6201 , // 5: out pins, 1 side 0 [2]
160
- 0xf24e , // 6: set y, 14 side 2 [2]
161
- 0x6a01 , // 7: out pins, 1 side 1 [2]
162
- 0x1a87 , // 8: jmp y--, 7 side 3 [2]
163
- 0x6a01 , // 9: out pins, 1 side 1 [2]
164
163
};
165
164
166
165
void i2sout_reset (void ) {
0 commit comments