/* * Copyright (c) 2016, Ian Sutton * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the * above copyright notice and this permission notice appear in all * copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ .origin 0 .entrypoint START /* used by debugger only */ #define PRU0_R31_VEC_VALID (1<<5) #define SIGNUM 3 /* corresponds to PRU_EVTOUT_0 */ #define DELAY_SECONDS 5 #define CLOCK 200000000 #define CLOCKS_PER_LOOP 2 #define DELAYCOUNT DELAY_SECONDS * CLOCK / CLOCKS_PER_LOOP #define R_PINKY 0x0 #define R_RING 0x1 #define R_MID 0x10 #define R_FORE 0x11 #define R_THUMB 0x100 #define L_THUMB 0x101 #define L_FORE 0x110 #define L_MID 0x111 #define L_RING 0x1000 #define L_PINKY 0x1001 #define CYCLE 4000000 #define WIDTH_UP 120000 #define WIDTH_DOWN 480000 // MOV r1, DELAYCOUNT // ADD r1, r1, r1 // ADD r1, r1, r1 // ADD r1, r1, r1 // ADD r1, r1, r1 //DELAY: //SUB r1, r1, 1 //NOT r30, r30, r30 //QBNE DELAY, r1, 0 START: MOV r1, CYCLE MOV r2, WIDTH_UP MOV r3, WIDTH_DOWN MOV r4, 0xffffffff MOV r30, 0x000003ff MOV r5, 0x00000000 KLOOP: QBLE DOWN, r5, r2 QBLE KRST, r5, r1 ADD r5, r5, 4 JMP KLOOP DOWN: MOV r30, 0x00000000 MOV r2, 0xffffffff JMP KLOOP KRST: MOV r5, 0x00000000 MOV r30, 0x000003ff MOV r2, WIDTH_UP JMP KLOOP KHALT: MOV R31.b0, PRU0_R31_VEC_VALID | SIGNUM HALT