41 static const uint16_t COGS = 8;
42 static const uint16_t STACK_SIZE = 16;
43 static uint32_t cog_stack[STACK_SIZE][COGS];
46 static volatile uint32_t wait_time;
47 static volatile uint32_t startCnt;
48 static volatile int8_t syncStart;
59 int main(
int argc,
char *argv[]) {
64 const Pin::Mask pins[] = {
75 wait_time = 50 * MILLISECOND;
79 for (n = 1; n < COGS; n++) {
80 cog = (int8_t) _start_cog_thread(cog_stack[n] + STACK_SIZE,
run_cog, (
void *) &pins[n], &thread_data);
84 pin.set_mask(pins[0]);
89 nextCnt = wait_time + startCnt;
92 nextCnt =
waitcnt2(nextCnt, wait_time);
94 nextCnt =
waitcnt2(nextCnt, wait_time);
102 pin.set_mask(*(Pin::Mask *) arg);
106 while (syncStart == 0);
108 nextCnt = wait_time + startCnt;
111 nextCnt =
waitcnt2(nextCnt, wait_time);