Rev 1460 | 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), |