Test code for proving multi-NCO implementation on Altera FPGA using DEO Nano development board
Dependencies: MODSERIAL mbed-rtos mbed
cnc.h@0:7f5b51873953, 2014-04-24 (annotated)
- Committer:
- JonFreeman
- Date:
- Thu Apr 24 15:35:38 2014 +0000
- Revision:
- 0:7f5b51873953
For testing numerically controlled oscillators implemented in Altera FPGA fitted to DEO Nan0 development board
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JonFreeman | 0:7f5b51873953 | 1 | /** |
JonFreeman | 0:7f5b51873953 | 2 | Programme COPIED FROM "cnc__machine_driver_3" |
JonFreeman | 0:7f5b51873953 | 3 | Author Jon Freeman |
JonFreeman | 0:7f5b51873953 | 4 | |
JonFreeman | 0:7f5b51873953 | 5 | Designed to compile and run on: |
JonFreeman | 0:7f5b51873953 | 6 | Mbed LPC1768 |
JonFreeman | 0:7f5b51873953 | 7 | Freescale KL25Z |
JonFreeman | 0:7f5b51873953 | 8 | Freescale KL46Z |
JonFreeman | 0:7f5b51873953 | 9 | */ |
JonFreeman | 0:7f5b51873953 | 10 | using namespace std; |
JonFreeman | 0:7f5b51873953 | 11 | |
JonFreeman | 0:7f5b51873953 | 12 | typedef float fl_typ; // |
JonFreeman | 0:7f5b51873953 | 13 | |
JonFreeman | 0:7f5b51873953 | 14 | //#define SPI_Enable |
JonFreeman | 0:7f5b51873953 | 15 | #define I2C_Enable |
JonFreeman | 0:7f5b51873953 | 16 | #define ESTOP 0x100 // bits used in input reading KX3 limit and EStop switches |
JonFreeman | 0:7f5b51873953 | 17 | #define XLIM 1 |
JonFreeman | 0:7f5b51873953 | 18 | #define YLIM 2 |
JonFreeman | 0:7f5b51873953 | 19 | #define ZLIM 4 |
JonFreeman | 0:7f5b51873953 | 20 | #define UNKN 8 |
JonFreeman | 0:7f5b51873953 | 21 | |
JonFreeman | 0:7f5b51873953 | 22 | const fl_typ TWO_PI = 8.0 * atan(1.0); |
JonFreeman | 0:7f5b51873953 | 23 | const fl_typ epsilon = 1e-5; |
JonFreeman | 0:7f5b51873953 | 24 | struct pirbufgrain { |
JonFreeman | 0:7f5b51873953 | 25 | fl_typ x, |
JonFreeman | 0:7f5b51873953 | 26 | y, |
JonFreeman | 0:7f5b51873953 | 27 | z, |
JonFreeman | 0:7f5b51873953 | 28 | distance_code, |
JonFreeman | 0:7f5b51873953 | 29 | f_rate; |
JonFreeman | 0:7f5b51873953 | 30 | } ; |
JonFreeman | 0:7f5b51873953 | 31 | |
JonFreeman | 0:7f5b51873953 | 32 | struct singleGparam { // Place to put all we know about 'x' or 'j' etc parameter from G Code line |
JonFreeman | 0:7f5b51873953 | 33 | fl_typ flt; |
JonFreeman | 0:7f5b51873953 | 34 | unsigned long ul; |
JonFreeman | 0:7f5b51873953 | 35 | int i, c; |
JonFreeman | 0:7f5b51873953 | 36 | bool changed; // Flagged true when new value for this axis found in Gcode line, false otherwise |
JonFreeman | 0:7f5b51873953 | 37 | } ; |
JonFreeman | 0:7f5b51873953 | 38 | |
JonFreeman | 0:7f5b51873953 | 39 | struct Gparams { // Where possibly messy G code line gets ordered and sorted into |
JonFreeman | 0:7f5b51873953 | 40 | struct singleGparam x, y, z, i, j, r, a, b, c, d; // After sorting, know where to find any X, Y etc values ! |
JonFreeman | 0:7f5b51873953 | 41 | } ; |
JonFreeman | 0:7f5b51873953 | 42 | |
JonFreeman | 0:7f5b51873953 | 43 | const int NumofGParams = sizeof(struct Gparams) / sizeof(struct singleGparam); |
JonFreeman | 0:7f5b51873953 | 44 | |
JonFreeman | 0:7f5b51873953 | 45 | #define clken XDi |
JonFreeman | 0:7f5b51873953 | 46 | #define d_in_isr XSt |
JonFreeman | 0:7f5b51873953 | 47 | #define d_in_osr YDi |
JonFreeman | 0:7f5b51873953 | 48 | #define ld_osr YSt |
JonFreeman | 0:7f5b51873953 | 49 | #define ld_pir ZDi |
JonFreeman | 0:7f5b51873953 | 50 | #define sclk ZSt |
JonFreeman | 0:7f5b51873953 | 51 | #define sclr ADi |
JonFreeman | 0:7f5b51873953 | 52 |