Subversion Repositories FlightCtrl

Rev

Rev 1460 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1460 Rev 1461
Line 8... Line 8...
8
#include "uart.h"
8
#include "uart.h"
Line 9... Line 9...
9
 
9
 
10
uint8_t rx_buffer[RX_BUFFER_SZ];
10
uint8_t rx_buffer[RX_BUFFER_SZ];
11
//uint8_t tx_buffer[TX_BUFFER_SZ];
11
//uint8_t tx_buffer[TX_BUFFER_SZ];
-
 
12
uint8_t rx_pos, tx_pos;
Line 12... Line 13...
12
uint8_t rx_pos, tx_pos;
13
uint8_t current_servo = 0;
Line 13... Line 14...
13
 
14
 
14
void uart_init() {
15
void uart_init() {
Line 34... Line 35...
34
 
35
 
Line 35... Line 36...
35
        if (rx_pos < RX_BUFFER_SZ) {
36
        if (rx_pos < RX_BUFFER_SZ) {
Line -... Line 37...
-
 
37
 
-
 
38
                uint8_t i = UDR;
-
 
39
 
-
 
40
                if (i == '+') {
-
 
41
                        if (pwm_neutral_position[current_servo - 1] < 255) {
-
 
42
                                pwm_neutral_position[current_servo - 1]++;
-
 
43
                        }
-
 
44
                        printf("SERVO %d VALUE %d\n", current_servo, pwm_neutral_position[current_servo - 1]);
-
 
45
                        return;
-
 
46
                } else if (i == '-') {
-
 
47
                        if (pwm_neutral_position[current_servo - 1] > 0) {
-
 
48
                                pwm_neutral_position[current_servo - 1]--;
-
 
49
                        }
-
 
50
                        printf("SERVO %d VALUE %d\n", current_servo, pwm_neutral_position[current_servo - 1]);
36
 
51
                        return;
Line 37... Line 52...
37
                uint8_t i = UDR;
52
                }
Line 38... Line 53...
38
 
53
 
Line 51... Line 66...
51
                                           "SET s=n[,l,u]           Set servo settings\n"
66
                                           "SET s=n[,l,u]           Set servo settings\n"
52
                                           "                            s = servo number (1-6)\n"
67
                                           "                            s = servo number (1-6)\n"
53
                                           "                            n = neutral position (0-255)\n"
68
                                           "                            n = neutral position (0-255)\n"
54
                                           "                            l = lower limit (0-255)\n"
69
                                           "                            l = lower limit (0-255)\n"
55
                                           "                            u = upper limit (0-255)\n"
70
                                           "                            u = upper limit (0-255)\n"
-
 
71
                                           "CUR n                   Set current servo. + = increase, - = decrease value\n"
56
                                           "LOAD                    Load settings from eeprom\n"
72
                                           "LOAD                    Load settings from eeprom\n"
57
                                           "SAVE                    Write settings to eeprom\n");
73
                                           "SAVE                    Write settings to eeprom\n");
58
                        } else if (!strcasecmp(rx_buffer, "DISPLAY")) {
74
                        } else if (!strcasecmp(rx_buffer, "DISPLAY")) {
59
                                for(i = 0; i < 6; i++) {
75
                                for(i = 0; i < 6; i++) {
60
                                        printf("SERVO %d, NEUTRAL %d, LIMIT %d-%d\n",
76
                                        printf("SERVO %d, NEUTRAL %d, LIMIT %d-%d\n",
Line 75... Line 91...
75
                                }
91
                                }
76
                        } else if (!strcasecmp(rx_buffer, "LOAD")) {
92
                        } else if (!strcasecmp(rx_buffer, "LOAD")) {
77
                                eeprom_init();
93
                                eeprom_init();
78
                        } else if (!strcasecmp(rx_buffer, "SAVE")) {
94
                        } else if (!strcasecmp(rx_buffer, "SAVE")) {
79
                                eeprom_write();
95
                                eeprom_write();
80
//                      } else if (!strncasecmp(rx_buffer, "INC ", 4)) {
96
                        } else if (!strncasecmp(rx_buffer, "CUR ", 4)) {
-
 
97
                                char *s, *t;
81
//                      } else if (!strncasecmp(rx_buffer, "DEC ", 4)) {
98
                                s = strtok_r(rx_buffer, " ", &t);
-
 
99
                                if (s) {
-
 
100
                                        s = strtok_r(NULL, "", &t);
-
 
101
                                        if (s) {
-
 
102
                                                i = atoi(s) + 1;
-
 
103
                                                if (i >= 1 && i <= 6) {
-
 
104
                                                        current_servo = i;
-
 
105
                                                        printf("CURRENT SERVO %d\n", i);
-
 
106
                                                } else {
-
 
107
                                                        printf("Invalid servo\n");
-
 
108
                                                }
-
 
109
                                        }
-
 
110
                                }
82
                        } else if (!strncasecmp(rx_buffer, "SET ", 4)) {
111
                        } else if (!strncasecmp(rx_buffer, "SET ", 4)) {
83
                                char *s, *t;
112
                                char *s, *t;
84
                                uint8_t servo;
113
                                uint8_t servo;
85
                                s = strtok_r(rx_buffer, " ", &t);
114
                                s = strtok_r(rx_buffer, " ", &t);
86
                                if (s) {
115
                                if (s) {
Line 94... Line 123...
94
                                                                uint8_t h = 0, l = 0;
123
                                                                uint8_t h = 0, l = 0;
95
                                                                pwm_neutral_position[servo] = atoi(s);
124
                                                                pwm_neutral_position[servo] = atoi(s);
96
                                                                s = strtok_r(NULL, ",", &t);
125
                                                                s = strtok_r(NULL, ",", &t);
97
                                                                if (s) {
126
                                                                if (s) {
98
                                                                        l = atoi(s);
127
                                                                        l = atoi(s);
99
                                                                        s = strtok_r(NULL, ",", &t);
128
                                                                        s = strtok_r(NULL, "", &t);
100
                                                                        if (s) {
129
                                                                        if (s) {
101
                                                                                h = atoi(s);
130
                                                                                h = atoi(s);
102
                                                                        } else {
131
                                                                        } else {
103
                                                                                h = 0xff;
132
                                                                                h = 0xff;
104
                                                                        }
133
                                                                        }
105
                                                                }
134
                                                                }
106
                                                                pwm_limit[servo] = (h << 8) | l;
135
                                                                pwm_limit[servo] = (h << 8) | l;
-
 
136
                                                                pwm_check_active();
107
                                                                i = servo;
137
                                                                i = servo;
108
                                                                printf("SERVO %d, NEUTRAL %d, LIMIT %d-%d\n",
138
                                                                printf("SERVO %d, NEUTRAL %d, LIMIT %d-%d\n",
109
                                                                        (i + 1),
139
                                                                        (i + 1),
110
                                                                        (pwm_neutral_position[i]),
140
                                                                        (pwm_neutral_position[i]),
111
                                                                        (pwm_limit[i] & 0xff),
141
                                                                        (pwm_limit[i] & 0xff),