]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/safe_numerics/example/motor_test3.c
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / safe_numerics / example / motor_test3.c
1 /*
2 * david austin
3 * http://www.embedded.com/design/mcus-processors-and-socs/4006438/Generate-stepper-motor-speed-profiles-in-real-time
4 * DECEMBER 30, 2004
5 *
6 * Demo program for stepper motor control with linear ramps
7 * Hardware: PIC18F252, L6219
8 *
9 * Compile with on Microchip XC8 compiler with the command line:
10 * XC8 --chip=18F252 motor_test3.c
11 *
12 * Copyright (c) 2015 Robert Ramey
13 *
14 * Distributed under the Boost Software License, Version 1.0. (See
15 * accompanying file LICENSE_1_0.txt or copy at
16 * http://www.boost.org/LICENSE_1_0.txt)
17 */
18
19 #include <xc.h>
20
21 // 8 MHz internal clock
22 #define _XTAL_FREQ 8000000
23
24 #include <stdint.h>
25 #include <stdbool.h> /* For true/false definition */
26
27 // ***************************
28 // nullify macro for literals
29 #define literal(n) n
30
31 // ***************************
32 // map strong types to appropriate underlying types.
33 typedef uint16_t position_t;
34 typedef int16_t step_t;
35 typedef uint32_t ccpr_t;
36 typedef int32_t c_t;
37 typedef uint16_t phase_t;
38 typedef uint8_t phase_ix_t;
39 typedef int8_t direction_t;
40
41 // 1st step=10ms; max speed=300rpm (based on 1MHz timer, 1.8deg steps)
42 #define C_MIN literal((1000 << 8))
43 #define C0 literal((10000 << 8))
44
45 #include "motor3.c"
46
47 void main() {
48 initialize();
49 // move motor to position 200
50 motor_run(200);
51 while(busy()) __delay_ms(100);
52 // move motor to position 1000
53 motor_run(1000);
54 while(busy()) __delay_ms(100);
55 // move back to position 0
56 motor_run(200);
57 while(busy()) __delay_ms(100);
58 } // main()