mirror of
https://github.com/eddyem/scorpio.git
synced 2025-12-06 10:45:15 +03:00
Debugged @ breadboard
This commit is contained in:
parent
7aee7cc1f4
commit
3d145e64dd
@ -6,7 +6,7 @@ LDFLAGS= -mstm8 --out-fmt-ihx -lstm8
|
|||||||
FLASHFLAGS=-cstlinkv2 -pstm8s105?4
|
FLASHFLAGS=-cstlinkv2 -pstm8s105?4
|
||||||
|
|
||||||
SRC=$(wildcard *.c)
|
SRC=$(wildcard *.c)
|
||||||
DEFS = -DEBUG
|
#DEFS = -DEBUG
|
||||||
|
|
||||||
OBJ=$(SRC:%.c=%.rel)
|
OBJ=$(SRC:%.c=%.rel)
|
||||||
TRASH=$(OBJ) $(SRC:%.c=%.rst) $(SRC:%.c=%.asm) $(SRC:%.c=%.lst)
|
TRASH=$(OBJ) $(SRC:%.c=%.rst) $(SRC:%.c=%.asm) $(SRC:%.c=%.lst)
|
||||||
|
|||||||
@ -5,11 +5,41 @@ SCORPIO platform controller
|
|||||||
|
|
||||||
PINS description
|
PINS description
|
||||||
|
|
||||||
* D6 - USART Rx
|
* D6 -- USART Rx
|
||||||
* D5 - USART Tx
|
* D5 -- USART Tx
|
||||||
* D0..D2 - select motors pair
|
* D0..D2 -- select motors pair
|
||||||
* D3, D4 - select motor from pair
|
* D3, D4 -- select motor from pair
|
||||||
* C1..C3 - LED1..LED3
|
* C1..C3 -- LED1..LED3
|
||||||
* B0..B3 - stepper motors' outputs
|
* B0..B3 -- stepper motors' outputs
|
||||||
* B4, B5, F4 - relays (shutter, neon, flat)
|
* B4, B5, F4 -- relays (shutter, neon, flat)
|
||||||
* A1, A2 - end-switches ("-" and "+")
|
* A1, A2 -- end-switches ("-" and "+")
|
||||||
|
* C5..C7 -- end-switch address (C5 is LSB)
|
||||||
|
|
||||||
|
### Commands protocol
|
||||||
|
All commands should be in **square brackets with '\n'** after closing bracket. Spaces between parts
|
||||||
|
inside command ignored.
|
||||||
|
|
||||||
|
As heritage, The device have number "2", so it would parse only commands with format **"[2 Xxx]\n"**.
|
||||||
|
|
||||||
|
List of commands:
|
||||||
|
|
||||||
|
* **[2 ?]** -- *(debug)* tell amount of steps leave.
|
||||||
|
|
||||||
|
* **[2 0]** -- *(new behaviour, old was "restart")* -- stop all motors and turn off all relays, due
|
||||||
|
to working watchdog there's no need to make full system restart.
|
||||||
|
|
||||||
|
* **[2 N xxx]**, where **N** is number from 1 to 6, **xxx** is number from -32767 to 32767 -- run
|
||||||
|
stepper motor number **N** for given amount of steps; if stepper is at end-switch and can't go further,
|
||||||
|
the answer would be **[2 N St=x]**, where **x** is 1 or 2 (depending on end-switch number);
|
||||||
|
when all steps wuold be over (or motor will come to end-switch), controller will answer a status:
|
||||||
|
**[2 N St=x]**, if x==3 the stepper isn't at any end-switch.
|
||||||
|
|
||||||
|
* **[2 N x]**, where **N** is number from 7 to 9 -- turn on/off or get status of relays (7 -- Shutter,
|
||||||
|
8 -- Neon, 9 -- Flat); if x==1 the relay would be turned on, if x==0 -- off, if x=='-' the status would
|
||||||
|
be answered (format: **[2 N St=x]**, x==0 if power down, 1 if power up).
|
||||||
|
|
||||||
|
* **[2 a xxx]**, where **xxx** if a number from -8 to 32767 -- change motor speed;
|
||||||
|
new speed is 0xffff / (xxx + 10) * 0.125 steps per second.
|
||||||
|
|
||||||
|
* **[2 N xxx], where **N** from 'b' to 'd', **xxx** from 0 to 255 -- change LEDx brightness, ('b' -- LED1,
|
||||||
|
'c' -- LED2, 'd' -- LED3); brightness 0 is minimum and 255 is maximum.
|
||||||
|
|||||||
@ -91,12 +91,13 @@ INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13){ // generate pulses for stepp
|
|||||||
U8 sw;
|
U8 sw;
|
||||||
if(TIM2_SR1 & TIM_SR1_UIF){
|
if(TIM2_SR1 & TIM_SR1_UIF){
|
||||||
TIM2_SR1 &= ~TIM_SR1_UIF; // take off flag
|
TIM2_SR1 &= ~TIM_SR1_UIF; // take off flag
|
||||||
|
tmp = PORT(STP_PORT, ODR) & ~STP_PINS;
|
||||||
|
PORT(STP_PORT, ODR) = tmp | usteps[Ustep];
|
||||||
|
|
||||||
if(Steps_left == 0){
|
if(Steps_left == 0){
|
||||||
stop_motor();
|
stop_motor();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
tmp = PORT(STP_PORT, ODR) & ~STP_PINS;
|
|
||||||
PORT(STP_PORT, ODR) = tmp | usteps[Ustep];
|
|
||||||
|
|
||||||
sw = check_endsw();
|
sw = check_endsw();
|
||||||
if(Dir){
|
if(Dir){
|
||||||
@ -109,13 +110,14 @@ INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13){ // generate pulses for stepp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
if(++Ustep > 7){
|
if(Ustep == 0 && sw == 2){ // check end-switches only @ full steps
|
||||||
Ustep = 0;
|
|
||||||
--Steps_left;
|
|
||||||
if(sw == 2){
|
|
||||||
stop_motor();
|
stop_motor();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(++Ustep > 7){
|
||||||
|
Ustep = 0;
|
||||||
|
--Steps_left;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
16
STM8/main.c
16
STM8/main.c
@ -114,21 +114,27 @@ int main() {
|
|||||||
|
|
||||||
setup_stepper_pins();
|
setup_stepper_pins();
|
||||||
RELAY_SETUP();
|
RELAY_SETUP();
|
||||||
|
// setup endswitch selection pins
|
||||||
|
PORT(ESW_SEL_PORT, DDR) |= ESW_SEL_PINS;
|
||||||
|
PORT(ESW_SEL_PORT, CR1) |= ESW_SEL_PINS;
|
||||||
|
// Pullup to esw inputs
|
||||||
|
PORT(ESW_PORT, CR1) |= ESW_PINS;
|
||||||
|
|
||||||
// enable all interrupts
|
// enable all interrupts
|
||||||
enableInterrupts();
|
enableInterrupts();
|
||||||
|
|
||||||
/*
|
|
||||||
// Setup watchdog
|
// Setup watchdog
|
||||||
|
IWDG_KR = KEY_ENABLE; // start watchdog
|
||||||
IWDG_KR = KEY_ACCESS; // enable access to protected registers
|
IWDG_KR = KEY_ACCESS; // enable access to protected registers
|
||||||
IWDG_PR = 6; // /256
|
IWDG_PR = 6; // /256
|
||||||
IWDG_RLR = 0xff; // max time for watchdog (1.02s)
|
IWDG_RLR = 0xff; // max time for watchdog (1.02s)
|
||||||
IWDG_KR = KEY_ENABLE; // start watchdog
|
|
||||||
*/
|
|
||||||
// Loop
|
// Loop
|
||||||
|
uart_write("Scorpio platform ready\n");
|
||||||
|
if(RST_SR) RST_SR = 0x1f; // clear reset flags writing 1
|
||||||
do{
|
do{
|
||||||
//if(RST_SR) RST_SR = 0x1f; // clear reset flags writing 1
|
IWDG_KR = KEY_REFRESH; // refresh watchdog
|
||||||
//IWDG_KR = KEY_REFRESH; // refresh watchdog
|
|
||||||
if(uart_rdy){
|
if(uart_rdy){
|
||||||
process_string();
|
process_string();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -64,6 +64,11 @@
|
|||||||
#define STP_PORT PB
|
#define STP_PORT PB
|
||||||
#define STP_PINS 0x0f
|
#define STP_PINS 0x0f
|
||||||
|
|
||||||
|
// PC5-PC7 - endswitch address (through multiplexer)
|
||||||
|
#define ESW_SEL_PORT PC
|
||||||
|
#define ESW_SEL_PINS 0xe0
|
||||||
|
#define ESW_SELECT(NUM) do{register U8 C=PC_ODR & ~ESW_SEL_PINS; C |= ((NUM-1)<<5); PC_ODR = C;}while(0)
|
||||||
|
|
||||||
// PD0..PD4 - select pair 0..2 & stepper
|
// PD0..PD4 - select pair 0..2 & stepper
|
||||||
#define STP_SEL_PORT PD
|
#define STP_SEL_PORT PD
|
||||||
#define STP_SEL_PINS 0x1f
|
#define STP_SEL_PINS 0x1f
|
||||||
@ -71,6 +76,7 @@
|
|||||||
#define STPRS_OFF() do{PORT(STP_PORT, ODR) &= ~STP_PINS; PORT(STP_SEL_PORT, ODR) &= ~0x07; PORT(STP_SEL_PORT, ODR) |= 0x18; }while(0)
|
#define STPRS_OFF() do{PORT(STP_PORT, ODR) &= ~STP_PINS; PORT(STP_SEL_PORT, ODR) &= ~0x07; PORT(STP_SEL_PORT, ODR) |= 0x18; }while(0)
|
||||||
|
|
||||||
#define ESW_PORT PA
|
#define ESW_PORT PA
|
||||||
|
#define ESW_PINS 0x06
|
||||||
// PA1 - "-", PA2 - "+"
|
// PA1 - "-", PA2 - "+"
|
||||||
#define ESW_PLUS 0x02
|
#define ESW_PLUS 0x02
|
||||||
#define ESW_MINUS 0x04
|
#define ESW_MINUS 0x04
|
||||||
|
|||||||
25
STM8/proto.c
25
STM8/proto.c
@ -34,7 +34,8 @@
|
|||||||
U8 move_motor(char *cmd){
|
U8 move_motor(char *cmd){
|
||||||
U8 N = (U8)*cmd - '0';
|
U8 N = (U8)*cmd - '0';
|
||||||
int steps;
|
int steps;
|
||||||
if(N < 1 || N > 6) return 0;
|
if(N < 1 || N > 6 || Steps_left) return 0;
|
||||||
|
IWDG_KR = KEY_REFRESH; // refresh watchdog
|
||||||
cmd = omit_whitespace(cmd+1);
|
cmd = omit_whitespace(cmd+1);
|
||||||
if(!readInt(cmd, &steps)) return 0;
|
if(!readInt(cmd, &steps)) return 0;
|
||||||
#ifdef EBUG
|
#ifdef EBUG
|
||||||
@ -47,7 +48,8 @@ U8 move_motor(char *cmd){
|
|||||||
|
|
||||||
if(steps) return stepper_move(N, steps);
|
if(steps) return stepper_move(N, steps);
|
||||||
else{ // steps == 0 - just check endswitches
|
else{ // steps == 0 - just check endswitches
|
||||||
stepper_get_esw(N);
|
cur_motor = N;
|
||||||
|
chk_esw = 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,6 +61,7 @@ U8 move_motor(char *cmd){
|
|||||||
*/
|
*/
|
||||||
U8 relay(char *cmd, char N){
|
U8 relay(char *cmd, char N){
|
||||||
U8 on = 0;
|
U8 on = 0;
|
||||||
|
IWDG_KR = KEY_REFRESH; // refresh watchdog
|
||||||
if(*cmd == '-'){ // just check
|
if(*cmd == '-'){ // just check
|
||||||
char ans[] = "[2 N St=1]\n";
|
char ans[] = "[2 N St=1]\n";
|
||||||
ans[3] = N;
|
ans[3] = N;
|
||||||
@ -77,7 +80,7 @@ U8 relay(char *cmd, char N){
|
|||||||
}
|
}
|
||||||
if(!on) ans[8] = '0'; // off
|
if(!on) ans[8] = '0'; // off
|
||||||
uart_write(ans);
|
uart_write(ans);
|
||||||
return 1;
|
return 0; // not echo previous command
|
||||||
}
|
}
|
||||||
if(*cmd == '0'){ // turn OFF
|
if(*cmd == '0'){ // turn OFF
|
||||||
switch (N){
|
switch (N){
|
||||||
@ -141,6 +144,7 @@ void LEDshine(char *cmd, U8 N){
|
|||||||
*/
|
*/
|
||||||
U8 process_commands(char *cmd){
|
U8 process_commands(char *cmd){
|
||||||
char s;
|
char s;
|
||||||
|
IWDG_KR = KEY_REFRESH; // refresh watchdog
|
||||||
cmd = omit_whitespace(cmd + 1);
|
cmd = omit_whitespace(cmd + 1);
|
||||||
if(*cmd > '0' && *cmd < '7')
|
if(*cmd > '0' && *cmd < '7')
|
||||||
return move_motor(cmd);
|
return move_motor(cmd);
|
||||||
@ -151,6 +155,7 @@ U8 process_commands(char *cmd){
|
|||||||
uart_write("Steps_left=");
|
uart_write("Steps_left=");
|
||||||
print_long((long) Steps_left);
|
print_long((long) Steps_left);
|
||||||
uart_write("\n");
|
uart_write("\n");
|
||||||
|
return 0;
|
||||||
break;
|
break;
|
||||||
case '0': // stop motors
|
case '0': // stop motors
|
||||||
DBG("restart");
|
DBG("restart");
|
||||||
@ -159,15 +164,15 @@ U8 process_commands(char *cmd){
|
|||||||
break;
|
break;
|
||||||
case '7':
|
case '7':
|
||||||
DBG("Shutter");
|
DBG("Shutter");
|
||||||
relay(cmd, '7');
|
return relay(cmd, '7');
|
||||||
break;
|
break;
|
||||||
case '8':
|
case '8':
|
||||||
DBG("Neon");
|
DBG("Neon");
|
||||||
relay(cmd, '8');
|
return relay(cmd, '8');
|
||||||
break;
|
break;
|
||||||
case '9':
|
case '9':
|
||||||
DBG("Flat");
|
DBG("Flat");
|
||||||
relay(cmd, '9');
|
return relay(cmd, '9');
|
||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
return stepper_ch_speed(cmd);
|
return stepper_ch_speed(cmd);
|
||||||
@ -192,7 +197,8 @@ U8 process_commands(char *cmd){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void process_string(){
|
void process_string(){
|
||||||
U8 rbs, noerr=1;
|
U8 rbs, noerr=1, ctr;
|
||||||
|
char buf[UART_BUF_LEN+1];
|
||||||
char *cmd;
|
char *cmd;
|
||||||
if(uart_rdy == 0) return;
|
if(uart_rdy == 0) return;
|
||||||
uart_rdy = 0;
|
uart_rdy = 0;
|
||||||
@ -208,10 +214,11 @@ void process_string(){
|
|||||||
UART_rx[rx_idx] = 0;
|
UART_rx[rx_idx] = 0;
|
||||||
cmd = omit_whitespace(&UART_rx[1]);
|
cmd = omit_whitespace(&UART_rx[1]);
|
||||||
if(*cmd != '2') return;
|
if(*cmd != '2') return;
|
||||||
|
for(ctr = 0; ctr <= rx_idx; ++ctr) buf[ctr] = UART_rx[ctr];
|
||||||
rbs = rx_idx;
|
rbs = rx_idx;
|
||||||
rx_idx = 0;
|
rx_idx = 0;
|
||||||
uart_write(UART_rx);
|
|
||||||
UART_rx[rbs - 2] = 0;
|
UART_rx[rbs - 2] = 0;
|
||||||
process_commands(cmd);
|
if(process_commands(cmd))
|
||||||
|
uart_write(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,122 +1,117 @@
|
|||||||
:2080A000AE5007F6AA0FF7AE5008F6AA0FF7AE5009F6AA0FF7AE5011F6AA1FF7AE5012F6F1
|
:2080A000AE5007F6AA0FF7AE5008F6AA0FF7AE5009F6AA0FF7AE5011F6AA1FF7AE5012F6F1
|
||||||
:2080C000AA1FF7AE5013F6AA1FF7AE5005F6A4F0F7AE500FF6A4F8F7AE500FF6AA18F781C2
|
:2080C000AA1FF7AE5013F6AA1FF7AE5005F6A4F0F7AE500FF6A4F8F7AE500FF6AA18F781C2
|
||||||
:2080E0005206961C0003891E0B89CD86F05B044D276E1E03A3FFF72D5E1E03A37FFF2E57A8
|
:2080E0005204965C891E0989CD86775B044D27441E01A3FFF72D3D1E01A37FFF2E36160141
|
||||||
:20810000160372A9000AAEFFFF651F01A3007D24034F204DCF00473504530C7B010F05AE01
|
:2081000072A9000AAEFFFF65A3007D24034F2025CF00473504530C9E0F0390AE530D90F7CB
|
||||||
:20812000530DF77B02954F9EAE530EF735015301AE5300F6AA84F7AE83B289CD85255B02FD
|
:208120004F9FAE530EF735015301AE5300F6AA84F7A601214F5B0481AE5001F6A5042604E6
|
||||||
:20814000965C4B0289CD857C5B03AE83C489CD85255B02A601200AAE83C689CD85255B02B4
|
:20814000A6012008A5022603A602214F8152020D05270F7B05A10622091E062705CE004497
|
||||||
:208160004F5B0681AE5001F6A5042604A6012008A5022603A602214F81880D04270F7B0480
|
:2081600027044FCC822735AA50E00D062A0B350100461E06501F062004725F00467B07C720
|
||||||
:20818000A10622091E052705CE004427044FCC82380D052A0B350100461E05501F0520042E
|
:2081800000457B06C70044AE500AF6A41F6B027B054A4EA4F0481A02AE500AF7AE5005F6D8
|
||||||
:2081A000725F00467B06C700457B05C70044AE5005F6A4F0F7AE500FF6A4F8F7AE500FF673
|
:2081A000A4F0F7AE500FF6A4F8F7AE500FF6AA18F7AE500FF66B015F7B05975A4B024B000B
|
||||||
:2081C000AA18F7AE500FF6957B044488A6016B02844D270508014A26FB9E1A01AE500FF7C1
|
:2081C00089CD8D715B049FAE00014D2704584A26FC9F1A01AE500FF7AE500FF6887B064454
|
||||||
:2081E000AE500FF6887B0544842408A4F7AE500FF72006A4EFAE500FF7CD8164027B0401F0
|
:2081E000842408A4F7AE500FF72006A4EFAE500FF7CD8138027B0501889EC7004B844D273A
|
||||||
:20820000889EC7004B844D2714A1012609725D0046260A4F2007725D004627014F4D270688
|
:2082000014A1012609725D0046260A4F2007725D004627014F4D2706CD822A4F2009AE53C6
|
||||||
:20822000CD823B4F2012AE83D789CD85255B02AE5300F6AA01F7A6015B0181AE5300F6A416
|
:2082200000F6AA01F7A6015B028172115300AE5005F6A4F0F7AE500FF6A4F8F7AE500FF62E
|
||||||
:20824000FEF75FCF004435010043AE83E589CD85255B028152027B05A1612F067B05A168B6
|
:20824000AA18F7725F004C5FCF0044350100438152027B05A1612F067B05A1682D034F20A9
|
||||||
:208260002D034F201AAE83721F017B05A06197494FA2009558585872FB01CF0049A6015B0B
|
:208260001AAE83211F017B05A06197494FA2009558585872FB01CF0049A6015B0281521313
|
||||||
:2082800002815213965C1F121E12A65BF71E125CA632F71E125C5CA620F71E121C00031F3D
|
:20828000965C1F0F1E0FA65BF71E0F5CA632F71E0F5C5CA620F71E0F1C00031F0D1E0DA656
|
||||||
:2082A0000F1E0FA630F71E12A620E7041E12A653E7051E12A674E7061E12A63DE7071E1257
|
:2082A00030F71E0FA620E7041E0FA653E7051E0FA674E7061E0FA63DE7071E0F1C00081F05
|
||||||
:2082C0001C00081F0D1E0DA630F71E12A65DE7091E12A60AE70A1E121C000B7F0D16260340
|
:2082C000111E11A630F71E0FA65DE7091E0FA60AE70A1E0F1C000B7F35AA50E00D16273E39
|
||||||
:2082E000CC836F7B16A1072303CC836FAE5005F6A4F0F7AE500FF6A4F8F7AE500FF6AA18C4
|
:2082E0007B16A1062238AE500AF6A41F6B137B164A4EA4F0481A13AE500AF77B16AB301EF2
|
||||||
:20830000F7AE500FF6957B164488A6016B12844D270508114A26FB9E1A11AE500FF7AE5001
|
:208300000DF7CD8138954D2603A603959EAB301E11F71E0F89CD84A35B02725F004B5B135A
|
||||||
:208320000FF6887B1744842408AA10AE500FF72006AA20AE500FF77B16AB301E0FF7CD819A
|
:2083200081080C0406020301090206040C08090103080901030206040C080A020604050111
|
||||||
:2083400064954D2603A603959EAB301E0DF71E1289CD85255B02AE5005F6A4F0F7AE500FB7
|
:208340000907030B090D0C0E060D090B0307060E0C07060E0C0D090B0307050D090B0A0EEE
|
||||||
:20836000F6A4F8F7AE500FF6AA18F73507004B5B1381080C0406020301090206040C0809EC
|
:018360000616
|
||||||
:208380000103080901030206040C080A02060405010907030B090D0C0E060D090B03070603
|
:098D90000000000000008321072F
|
||||||
:2083A0000E0C07060E0C0D090B0307050D090B0A0E065370656564206368616E6765642012
|
:2083610080808080808080808035005255808088AE5302F6A501277EA4FEAE5302F7AE503A
|
||||||
:2083C000746F20000A004261642073706565642076616C75650A00737465707065725F6D42
|
:2083810005F6A4F06B01C6004ACB004C97C60049A90095F61A01AE5005F7CE00442605CDC1
|
||||||
:0B83E0006F76650A0073746F700A006E
|
:2083A100822A2052CD81389095725D00462720725A004CC6004C4D2A3D3507004CCE00441F
|
||||||
:098E7000000000000000837207FD
|
:2083C1005ACF0044909EA101262CCD822A2027725D004C260B909EA1022605CD822A201656
|
||||||
:2083EB0080808080808080808035005255808088AE5302F6A5012776A4FEAE5302F7CE00E8
|
:2083E100725C004CC6004CA1072D0B725F004CCE00445ACF00448480808080805202AE527C
|
||||||
:20840B00442605CD823B2066AE5005F6A4F06B01C6004ACB004C97C60049A90095F61A01BD
|
:2084010040F64D2A43725D0050260DAE5245F6A47FF7725F004F2030C60050C1004F2319F2
|
||||||
:20842B00AE5005F7CD81649095725D00462720725A004CC6004C4D2A353507004CCE004494
|
:20842100AE00221F01C6004F97725C004F4F9572FB01F6AE5241F7200FAE5245F6A47FF77E
|
||||||
:20844B005ACF0044909EA1012624CD823B201F725C004CC6004CA1072D14725F004CCE00C1
|
:20844100725F004F725F00505B02805203AE5240F6A5202747AE5241F66B01AE00011F02CC
|
||||||
:20846B00445ACF0044909EA1022603CD823B8480808080805202AE5240F64D2A43725D00A5
|
:20846100C6004E97725C004E4F9572FB027B01F77B01A10A2603A601214F88C6004EA120AA
|
||||||
:20848B0050260DAE5245F6A47FF7725F004F2030C60050C1004F2319AE00221F01C6004F22
|
:208481008426094D2606725F004E20104D270D3501004D5FC6004E9772FB027F5B03808006
|
||||||
:2084AB0097725C004F4F9572FB01F6AE5241F7200FAE5245F6A47FF7725F004F725F0050B8
|
:0284A1008080D9
|
||||||
:2084CB005B02805203AE5240F6A5202747AE5241F66B01AE00011F02C6004E97725C004EBC
|
:018D990000D9
|
||||||
:2084EB004F9572FB027B01F77B01A10A2603A601214F88C6004EA1208426094D2606725FEA
|
:2084A3005202725D0050270635AA50E020F4721F5245725F004FAE00221F011E05C6005085
|
||||||
:1A850B00004E20104D270D3501004D5FC6004E9772FB027F5B03808080807E
|
:2084C3009097725C00504F909572F901F65C90F7F64D2707C60050A12025E2AE5245F6AA67
|
||||||
:018E790000F8
|
:2084E30080F75B02811E03F6A120270CA1092708A10D2704A10A26045CF620EC8152255FDD
|
||||||
:208525005202725D005026FA721F5245725F004FAE00221F011E05C600509097725C0050ED
|
:208503001F031F017B2AA1042303CC85E67B2AA1032603CC85E60D2A2603CC85E6961C007D
|
||||||
:208545004F909572F901F65C90F7F64D2707C60050A12025E2AE5245F6AA80F75B02811EB6
|
:20852300061F144F5F9772FB147F4CA10C25F51E14A60AE70A7B2AA101270E7B2AA10227E9
|
||||||
:2085650003F6A120270CA1092708A10D2704A10A26045CF620EC8152255F1F0F1F0D7B2ACE
|
:20854300197B2AA104272E20451E28F66B214F5F6B031F017B216B042034162817121E1201
|
||||||
:20858500A1042303CC86607B2AA1032603CC86600D2A2603CC8660965C1F124F5F9772FB4E
|
:20856300FE1F1C161C171A0F190F18161A1703161817012019162817161E16E6036B25E646
|
||||||
:2085A500127F4CA10C25F51E12A60AE70A7B2AA101270E7B2AA10227197B2AA104272E207E
|
:20858300026B24FE1F221624170316221701A6096B054B0A5F894B001E07891E0789CD8C08
|
||||||
:2085C500451E28F66B174F5F6B0F1F0D7B176B102034162817241E24FE1F22162217200F66
|
:2085A300045B08517B050A055F9772FB14909FAB30F74B0A5F894B001E07891E0789CD8CBC
|
||||||
:2085E5001F0F1E1620170F161E170D20191628171C1E1CE6036B1BE6026B1AFE1F18161A51
|
:2085C3009B5B081F0317011E0326041E0127067B05A1FF2CBD7B054C5F9772FB1489CD84A3
|
||||||
:20860500170F1618170DA6096B114B0A5F894B001E13891E1389CD8CF85B08517B110A110A
|
:2085E300A35B025B258152100F0E965C5C1F0F1E0F1C000B7F0D132A14161590504F1214CB
|
||||||
:208625005F9772FB12909FAB30F74B0A5F894B001E13891E1389CD8D8F5B081F0F170D1E07
|
:20860300974F12139517151F13A6016B0EA60B6B014B0A5F894B001E19891E1989CD8BDFDD
|
||||||
:208645000F26041E0D27067B11A1FF2CBD7B114C5F9772FB1289CD85255B025B2581521062
|
:208623005B089F0A015F417B014172FB0FAB30F74B0A5F894B001E19891E1989CD8C745B4F
|
||||||
:208665000F0D965C1F0F1E0F1C000B7F0D132A14161590504F1214974F12139517151F130A
|
:20864300081F1517131E1526041E1327040D0126C07B010D0127110D0E270D7B014A5F9737
|
||||||
:20868500A6016B0DA60B6B0E4B0A5F894B001E19891E1989CD8CD35B089F0A0E5F417B0E15
|
:2086630072FB0F88A62DF7845F9772FB0F89CD84A35B128152100F06A6016B055F1F031F9A
|
||||||
:2086A5004172FB0FAB30F74B0A5F894B001E19891E1989CD8D685B081F1517131E1526043E
|
:208683000135AA50E01E13F6A12D2607A6016B065C1F131613170B1E0BF61E0B5C1F0BA145
|
||||||
:2086C5001E1327040D0E26C07B0E0D0E27110D0D270D7B0E4A5F9772FB0F88A62DF7845F94
|
:2086A300302552A139224E0F05881E04891E04894B0A5F894B00CD8CF55B081F0A170884CF
|
||||||
:2086E5009772FB0F89CD85255B128152100F02A6016B015F1F051F031E13F6A12D2607A681
|
:2086C300905F90975F905D2A015A72F9099F1908889E1908958472A20030A20002A20095FD
|
||||||
:20870500016B025C1F131613170B1E0BF61E0B5C1F0BA1302552A139224E0F01881E068968
|
:2086E30017031F01AE7FFE13034F12024F12012EA6A6016B050D0527034F202B0D06271C20
|
||||||
:208725001E06894B0A5F894B00CD8DE95B081F0A170884905F90975F905D2A015A72F90932
|
:208703007B04406B104F12036B0F4F12026B0E4F12016B01160F17037B0E6B021E15270500
|
||||||
:208745009F1908889E1908958472A20030A20002A2009517051F03AE7FFF13054F12044F9F
|
:0A8723001E151603FFA6015B10816E
|
||||||
:2087650012032EA6A6016B010D0127034F202B0D02271C7B06406B104F12056B0F4F120453
|
:048D9A0000000000D5
|
||||||
:1D8785006B0E4F12036B03160F17057B0E6B041E1527051E151605FFA6015B108114
|
:208000008200808382000000820083618200836282008363820083648200836582008366E6
|
||||||
:048E7A0000000000F4
|
:2080200082008367820083688200000082000000820083698200836A8200836F820083709D
|
||||||
:208000008200808382000000820083EB820083EC820083ED820083EE820083EF820083F0AA
|
:20804000820083F9820083FA820083FB8200000082000000820083FC820083FD8200844CCA
|
||||||
:20802000820083F1820083F28200000082000000820083F3820083F4820083F9820083FA61
|
:20806000820084A0820084A1820084A2820000008200000082000000820000008200000081
|
||||||
:208040008200847B8200847C8200847D82000000820000008200847E8200847F820084CEB9
|
:1D808300AE00422707724F00005A26F9AE000E2709D68D8FD700425A26F7CC80804E
|
||||||
:208060008200852282008523820085248200000082000000820000008200000082000000F8
|
:03808000CC872D7D
|
||||||
:1D808300AE00422707724F00005A26F9AE000E2709D68E6FD700425A26F7CC80806D
|
:20872D00AE50C0F6AA08F772107F60350050C6AE500CF6AA0EF7AE500DF6AA0EF7AE500EB8
|
||||||
:03808000CC87A208
|
:20874D00F6AA0EF735005260350F52613500526235FF5263350052653514526635005267DC
|
||||||
:2087A200AE50C0F6AA08F772107F60350050C6AE500CF6AA0EF7AE500DF6AA0EF7AE500E43
|
:20876D0035145268350052693514526A35605258356052593560525A3511525C3501525D5B
|
||||||
:2087C200F6AA0EF735005260350F52613500526235FF526335005265351452663500526767
|
:20878D0035815250721E526DAE5011F6AA20F7AE5012F6AA20F7AE5013F6AA20F735035246
|
||||||
:2087E20035145268350052693514526A35605258356052593560525A3511525C3501525DE6
|
:2087AD004335685242352C5245AE03E8CF00473504530C3503530D35E8530E35015301AEAB
|
||||||
:2088020035815250721E526DAE5011F6AA20F7AE5012F6AA20F7AE5013F6AA20F7350352D0
|
:2087CD005300F6AA84F7CD80A0AE5007F6AA30F7AE5008F6AA30F7AE501BF6AA10F7AE50DA
|
||||||
:208822004335685242352C5245AE03E8CF00473504530C3503530D35E8530E35015301AE35
|
:2087ED001CF6AA10F7AE500CF6AAE0F7AE500DF6AAE0F7AE5003F6AA06F79A35CC50E03508
|
||||||
:208842005300F6AA84F7CD80A0AE5007F6AA30F7AE5008F6AA30F7AE501BF6AA10F7AE5064
|
:20880D005550E0350650E135FF50E2AE884D89CD84A35B02AE50B3F64D2704351F50B335EC
|
||||||
:208862001CF6AA10F79A725D004D2703CD8BDA725D004327F1725F00433B004BCD82828408
|
:20882D00AA50E0725D004D2703CD8B24725D004327ED725F00433B004BCD827E8420E081FD
|
||||||
:2088820020E48152051E08F6A0306B037B03A10125067B03A10623034F206A5C89CD856496
|
:20884D0053636F7270696F20706C6174666F726D2072656164790A0052041E07F6A030A186
|
||||||
:2088A2005B021F04965C891E0689CD86F05B044D26034F2050AE8C7489CD85255B02961C7A
|
:20886D0001250AA106220690CE004427034F203C35AA50E05C8889CD84E85B021F04849626
|
||||||
:2088C20000034B0189CD857C5B03AE8C8089CD85255B0216015F905D2A015A908989CD869E
|
:20888D005C88891E0689CD86775B049784414D4126034F20171E01270B1E018988CD814DD3
|
||||||
:2088E200635B04AE8C8689CD85255B021E01270D1E01897B0588CD81795B0320087B038841
|
:2088AD005B032008C7004B350100434F5B0481521535AA50E01E18F66B117B1AA1372606B4
|
||||||
:20890200CD8282844F5B058152151E18F66B157B1AA1372606A6016B1220020F127B1AA187
|
:2088CD00A6016B1020020F107B1AA1382606A6016B0E20020F0E7B1AA1392606A6016B0F73
|
||||||
:20892200382606A6016B0E20020F0E7B1AA1392606A6016B1120020F117B15A12D2703CC1E
|
:2088ED0020020F0F7B11A12D2703CC8998965C1F121E12A65BF71E125CA632F71E125C5C2C
|
||||||
:2089420089E3965C1F131E13A65BF71E135CA632F71E135C5CA620F7161372A90003A64E1F
|
:20890D00A620F7161272A90003A64E90F71E12A620E7041E12A653E7051E12A674E7061E81
|
||||||
:2089620090F71E13A620E7041E13A653E7051E13A674E7061E13A63DE7071E131C00081FC8
|
:20892D0012A63DE7071E121C00081F141E14A631F71E12A65DE7091E12A60AE70A1E121C80
|
||||||
:208982000F1E0FA631F71E13A65DE7091E13A60AE70A1E131C000B7F7B1A90F70D12260A93
|
:20894D00000B7F7B1A90F70D10260A0D0E26100D0F2616201EAE5005F6A4106B0D2018AE25
|
||||||
:2089A2000D0E26100D112616201EAE5005F6A4106B0D2018AE5005F6A4206B0D200EAE500E
|
:20896D005005F6A4206B0D200EAE5019F6A4106B0D20044FCC8A040D0D26051E14A630F7EB
|
||||||
:2089C20019F6A4106B0D20044FCC8A4F0D0D26051E0FA630F71E1389CD85255B02A60120AE
|
:20898D001E1289CD84A35B024F206C7B11A13026300D10260A0D0E260F0D0F2614201BAE56
|
||||||
:2089E2006C7B15A13026300D12260A0D0E260F0D112614201BAE5005F6A4EFF72015AE506A
|
:2089AD005005F6A4EFF72015AE5005F6A4DFF7200CAE5019F6A4EFF720034F203AA60120D7
|
||||||
:208A020005F6A4DFF7200CAE5019F6A4EFF720034F203AA60120367B15A131262F0D122657
|
:2089CD00367B11A131262F0D10260A0D0E260F0D0F2614201BAE5005F6AA10F72015AE5096
|
||||||
:208A22000A0D0E260F0D112614201BAE5005F6AA10F72015AE5005F6AA20F7200CAE50196B
|
:2089ED0005F6AA20F7200CAE5019F6AA10F720034F2004A601214F5B15815202965C891E39
|
||||||
:208A4200F6AA10F720034F2004A601214F5B15815202965C891E0789CD86F05B044D273705
|
:208A0D000789CD86775B044D27370D012B331E01A300FF2C2C7B02887B08A10084271288F2
|
||||||
:208A62000D012B331E01A300FF2C2C7B02887B08A100842712887B08A101842710887B0816
|
:208A2D007B08A101842710887B08A10284270E2010AE5266F7200AAE5268F72004AE526A3E
|
||||||
:208A8200A10284270E2010AE5266F7200AAE5268F72004AE526AF75B028152021E055C89A3
|
:208A4D00F75B028135AA50E01E035C89CD84E85B02F6A1302D0DA1372E0989CD88655B02D9
|
||||||
:208AA200CD85645B02F6A1302D0DA1372E0989CD88855B02CC8BD75C8889CD85645B021F04
|
:208A6D00CC8B235C8889CD84E85B0284A130274AA1372759A138275FA1392765A13F27136F
|
||||||
:208AC2000284A130275CA1372775A1382603CC8B56A1392603CC8B6BA13F271FA161260381
|
:208A8D00A1612767A162276BA1632771A1642777CC8B1EAE8BD189CD84A35B0290CE00446A
|
||||||
:208AE200CC8B80A1622603CC8B8AA1632603CC8B9FA1642603CC8BB4CC8BC9AE8C8D89CDF7
|
:208AAD005F905D2A015A908989CD85E95B04AE8BDD89CD84A35B024F205CCD822AAE500565
|
||||||
:208B020085255B0290CE00445F905D2A015A908989CD86635B04AE8C9989CD85255B02CC26
|
:208ACD00F6A4CFF7AE5019F6AAEFF720474B3789CD88BC5B03203F4B3889CD88BC5B0320B1
|
||||||
:208B22008BCCAE8C9B89CD85255B02CD823BAE5005F6A4CFF7AE5019F6AAEFF7CC8BCCAE4F
|
:208AED00354B3989CD88BC5B03202B89CD80E05B0220234B0089CD8A075B0320174B01897B
|
||||||
:208B42008CA389CD85255B024B371E0289CD890A5B032076AE8CAB89CD85255B024B381E25
|
:208B0D00CD8A075B03200D4B0289CD8A075B0320034F2002A60181522AA6016B01725D00B3
|
||||||
:208B62000289CD890A5B032061AE8CB089CD85255B024B391E0289CD890A5B03204C1E016C
|
:208B2D004D2603CC8BCE725F004DC6004EA103251C90AE000190F6A15B26125FC6004E9773
|
||||||
:208B820089CD80E05B02204DAE8CB589CD85255B024B001E0289CD8A525B03202DAE8CBACB
|
:208B4D005A5A1F2772F92790F6A15D270FAE0001F688CD825084725F004E0F010D012761AD
|
||||||
:208BA20089CD85255B024B011E0289CD8A525B032018AE8CBF89CD85255B024B021E0289D6
|
:208B6D00AE00011F255FC6004E9772FB257F1E255C89CD84E85B021F021E02F6A1322641AB
|
||||||
:208BC200CD8A525B0320034F200BAE8C9989CD85255B02A6015B02815207A6016B03725DFD
|
:208B8D00961C00041F294F905F909772F9295F9772FB2588F69790F7844CC1004E23E8C6FD
|
||||||
:208BE200004D2603CC8C71725F004DC6004EA103251C90AE000190F6A15B26125FC6004EB1
|
:208BAD00004E725F004E5F975A5A72FB257F1E0289CD8A515B024D27081E2989CD84A35B37
|
||||||
:208C0200975A5A1F0672F90690F6A15D271CAE0001F688CD82545B014D2609AE8CC489CDAE
|
:208BCD00025B2A8153746570735F6C6566743D000A001E0916072A03CD8D858990891E0907
|
||||||
:208C220085255B02725F004E0F030D032741AE00011F045FC6004E9772FB047F1E045C89AF
|
:208BED0016072A03CD8D85899089CD8C045B087B032A03CD8D858152030F030F017B0A488E
|
||||||
:208C4200CD85645B021F011E01F6A1322621C6004E725F004E1E048889CD85255B02845F93
|
:208C0D004F494D262E160C1E0A905859170C1F0A1E08130C7B07120B7B06120A240D160C63
|
||||||
:208C6200975A5A72FB047F1E0189CD8A9C5B025B07814D6F7665206D6F746F72200020664E
|
:208C2D001E0A549056170C1F0A20080C017B016B0320CA7B036B021E0872F00C7B07120B52
|
||||||
:208C82006F72200073746570730A0053746570735F6C6566743D000A007265737461727433
|
:208C4D0090977B06120A25061F0890951706160C1E0A549056170C1F0A7B020A024D26D70C
|
||||||
:208CA2000053687574746572004E656F6E00466C6174004C454431004C454432004C4544CA
|
:208C6D001E0816065B03811E0916072A03CD8D858990891E0916072A03CD8D85899089CD15
|
||||||
:208CC2003300456E74657220225B636D645D220A001E0916072A03CD8E658990891E0916F7
|
:208C8D008C9B5B087B0318072A03CD8D858152065F1F051F03A6206B027B09484F496B0113
|
||||||
:208CE200072A03CD8E65899089CD8CF85B087B032A03CD8E658152030F030F017B0A484FA9
|
:208CAD00160B1E09905859170B1F0916051E0390585917051F030D0127067B06AA016B0641
|
||||||
:208D0200494D262E160C1E0A905859170C1F0A1E08130C7B07120B7B06120A240D160C1E9E
|
:208CCD001E0572F00F7B04120E90977B03120D250C1F05909517037B0CAA016B0C0A022621
|
||||||
:208D22000A549056170C1F0A20080C017B016B0320CA7B036B021E0872F00C7B07120B90EA
|
:208CED00B81E0B16095B06815F89897B0A977B0E421F037B09977B0E4272FB021F024FA99D
|
||||||
:208D4200977B06120A25061F0890951706160C1E0A549056170C1F0A7B020A024D26D71E88
|
:208D0D00006B017B0A977B0D4272FB021F024F19016B017B0A977B0C4272FB011F017B0998
|
||||||
:208D62000816065B03811E0916072A03CD8E658990891E0916072A03CD8E65899089CD8DEE
|
:208D2D00977B0D4272FB011F017B08977B0E4272FB011F017B07977B0E429F1B016B017B3E
|
||||||
:208D82008F5B087B0318072A03CD8E658152065F1F051F03A6206B027B09484F496B0116BE
|
:208D4D000A977B0B429F1B016B017B09977B0C429F1B016B017B08977B0D429F1B016B0160
|
||||||
:208DA2000B1E09905859170B1F0916051E0390585917051F030D0127067B06AA016B061E43
|
:208D6D00908585811E039E16052A034390505D2A0150654D2A01508190535D2703535C8181
|
||||||
:208DC2000572F00F7B04120E90977B03120D250C1F05909517037B0CAA016B0C0A0226B891
|
:038D8D00905C8176
|
||||||
:208DE2001E0B16095B06815F89897B0A977B0E421F037B09977B0E4272FB021F024FA9005F
|
|
||||||
:208E02006B017B0A977B0D4272FB021F024F19016B017B0A977B0C4272FB011F017B09970B
|
|
||||||
:208E22007B0D4272FB011F017B08977B0E4272FB011F017B07977B0E429F1B016B017B0AD5
|
|
||||||
:208E4200977B0B429F1B016B017B09977B0C429F1B016B017B08977B0D429F1B016B0190E4
|
|
||||||
:0E8E620085858190535D2703535C81905C8170
|
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|||||||
@ -102,6 +102,7 @@ U8 check_endsw(){
|
|||||||
U8 stepper_move(U8 Nmotor, int Nsteps){
|
U8 stepper_move(U8 Nmotor, int Nsteps){
|
||||||
U8 c;
|
U8 c;
|
||||||
if(!Nmotor || Nmotor > 6 || !Nsteps || Steps_left) return 0;
|
if(!Nmotor || Nmotor > 6 || !Nsteps || Steps_left) return 0;
|
||||||
|
IWDG_KR = KEY_REFRESH; // refresh watchdog
|
||||||
|
|
||||||
if(Nsteps < 0){
|
if(Nsteps < 0){
|
||||||
Dir = 1;
|
Dir = 1;
|
||||||
@ -109,11 +110,12 @@ U8 stepper_move(U8 Nmotor, int Nsteps){
|
|||||||
}else
|
}else
|
||||||
Dir = 0;
|
Dir = 0;
|
||||||
Steps_left = Nsteps;
|
Steps_left = Nsteps;
|
||||||
|
// select endswitch
|
||||||
|
ESW_SELECT(Nmotor);
|
||||||
|
// turn all motors OFF
|
||||||
STPRS_OFF();
|
STPRS_OFF();
|
||||||
|
|
||||||
// turn all OFF
|
|
||||||
// turn on the motor we need
|
// turn on the motor we need
|
||||||
PORT(STP_SEL_PORT, ODR) |= (1 << (Nmotor/2));
|
PORT(STP_SEL_PORT, ODR) |= (1 << ((Nmotor-1)/2));
|
||||||
if(Nmotor & 1) PORT(STP_SEL_PORT, ODR) &= ~GPIO_PIN3;
|
if(Nmotor & 1) PORT(STP_SEL_PORT, ODR) &= ~GPIO_PIN3;
|
||||||
else PORT(STP_SEL_PORT, ODR) &= ~GPIO_PIN4;
|
else PORT(STP_SEL_PORT, ODR) &= ~GPIO_PIN4;
|
||||||
c = check_endsw();
|
c = check_endsw();
|
||||||
@ -133,6 +135,9 @@ U8 stepper_move(U8 Nmotor, int Nsteps){
|
|||||||
|
|
||||||
void stop_motor(){
|
void stop_motor(){
|
||||||
TIM2_CR1 &= ~TIM_CR1_CEN; // Turn off timer
|
TIM2_CR1 &= ~TIM_CR1_CEN; // Turn off timer
|
||||||
|
// turn all motors OFF
|
||||||
|
STPRS_OFF();
|
||||||
|
Ustep = 0;
|
||||||
Steps_left = 0;
|
Steps_left = 0;
|
||||||
chk_esw = 1;
|
chk_esw = 1;
|
||||||
DBG("stop\n");
|
DBG("stop\n");
|
||||||
@ -156,16 +161,13 @@ U8 chk_stpr_cmd(char N){
|
|||||||
void stepper_get_esw(U8 Nmotor){
|
void stepper_get_esw(U8 Nmotor){
|
||||||
U8 sw;
|
U8 sw;
|
||||||
char str[] = "[2 0 St=0]\n"; // 3 - motor number, 5 - endswitch (3 if none)
|
char str[] = "[2 0 St=0]\n"; // 3 - motor number, 5 - endswitch (3 if none)
|
||||||
if(Nmotor == 0 || Nmotor > 7) return; // no running motor
|
IWDG_KR = KEY_REFRESH; // refresh watchdog
|
||||||
STPRS_OFF();
|
if(Nmotor == 0 || Nmotor > 6) return; // no running motor
|
||||||
PORT(STP_SEL_PORT, ODR) |= (1 << (Nmotor/2));
|
ESW_SELECT(Nmotor);
|
||||||
if(Nmotor & 1) PORT(STP_SEL_PORT, ODR) |= 1<<4;
|
|
||||||
else PORT(STP_SEL_PORT, ODR) |= 1<<5;
|
|
||||||
str[3] = Nmotor + '0';
|
str[3] = Nmotor + '0';
|
||||||
sw = check_endsw();
|
sw = check_endsw();
|
||||||
if(sw == 0) sw = 3;
|
if(sw == 0) sw = 3;
|
||||||
str[8] = sw + '0';
|
str[8] = sw + '0';
|
||||||
uart_write(str);
|
uart_write(str);
|
||||||
STPRS_OFF();
|
cur_motor = 0;
|
||||||
cur_motor = 7;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#define MIN_STEP_LENGTH 125 // max speed == 1/(125us*16) = 500 steps per second
|
#define MIN_STEP_LENGTH 125 // max speed == 1/(125us*16) = 500 steps per second
|
||||||
|
|
||||||
|
extern volatile char Ustep;
|
||||||
extern volatile U8 chk_esw;
|
extern volatile U8 chk_esw;
|
||||||
extern U8 cur_motor;
|
extern U8 cur_motor;
|
||||||
|
|
||||||
|
|||||||
@ -40,7 +40,7 @@ void UART_send_byte(U8 byte){
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
void uart_write(char *str){
|
void uart_write(char *str){
|
||||||
while(tx_len);
|
while(tx_len) {IWDG_KR = KEY_REFRESH;}
|
||||||
UART2_CR2 &= ~UART_CR2_TIEN;
|
UART2_CR2 &= ~UART_CR2_TIEN;
|
||||||
tx_idx = 0;
|
tx_idx = 0;
|
||||||
do{
|
do{
|
||||||
@ -117,6 +117,7 @@ void print_long(long Number){
|
|||||||
U8 readInt(char *buff, int *val){
|
U8 readInt(char *buff, int *val){
|
||||||
U8 sign = 0, rb, bad = 1;
|
U8 sign = 0, rb, bad = 1;
|
||||||
long R = 0;
|
long R = 0;
|
||||||
|
IWDG_KR = KEY_REFRESH; // refresh watchdog
|
||||||
//usart_send("readInt, buff=");
|
//usart_send("readInt, buff=");
|
||||||
//usart_send(buff);
|
//usart_send(buff);
|
||||||
if(*buff == '-'){
|
if(*buff == '-'){
|
||||||
@ -128,7 +129,7 @@ U8 readInt(char *buff, int *val){
|
|||||||
if(rb < '0' || rb > '9') break;
|
if(rb < '0' || rb > '9') break;
|
||||||
bad = 0;
|
bad = 0;
|
||||||
R = R * 10L + rb - '0';
|
R = R * 10L + rb - '0';
|
||||||
if(R > 0x7fff){ // bad value
|
if(R > 0x7ffe){ // bad value
|
||||||
bad = 1;
|
bad = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user