Skip to content

Commit f2bb1ad

Browse files
committed
Update 2020-03-23
1 parent fdbfba9 commit f2bb1ad

7 files changed

Lines changed: 113 additions & 3952 deletions

File tree

README.md

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,10 @@
1-
# Swift Pro Firmware V4.5.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) )
1+
# Swift Pro Firmware V4.5.1 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) )
22

33
----------
4-
## Update Summary for v4.5.0
5-
6-
* Fix beep bug
7-
* Fix effector motor control bug
8-
* Add multi motor control interface
9-
* Fix motor angle read bug
10-
* Fix G2204 bug
11-
* Fix M2201 update position bug
12-
* Add M2220/M2221 interface
13-
* Add S1000 start/stop motion interface
14-
* Add S1100 clear current motion interface
15-
* Add uart3 communication interface
4+
## Update Summary for v4.5.1
5+
6+
* Compatible with version 3.0 air pump control
7+
168

179
## Caution
1810
#### The current firmware is not perfect and will be updated periodically

hex/uArmPro_V4.5.0_release_20190924.hex

Lines changed: 0 additions & 3933 deletions
This file was deleted.

src/uarm_common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
//#define EEPROM_ADDR_ANGLE_REFER 3072U
1616

1717
//#define UARM_MINI
18-
#define UARM_2500
18+
//#define UARM_2500
1919

2020

2121
#define EEPROM_ADDR_ANGLE_REFER 820U

src/uarm_peripheral.c

Lines changed: 89 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/* end-effector driver
66
*
77
*/
8+
89
/*************** servo mode ****************/
910
float duty_ms = 1.51;
1011
static void servo_init(void){
@@ -500,23 +501,107 @@ static int getAnalogPinValue(unsigned int pin)
500501
/* pump
501502
*
502503
*/
504+
#define VALVE_ON_TIMES_MAX 10
505+
506+
pump_state_t pump_state = PUMP_STATE_OFF;
507+
508+
void pump_set_state(pump_state_t state)
509+
{
510+
if (state >= PUMP_STATE_COUNT)
511+
return;
512+
513+
pump_state = state;
514+
}
515+
pump_state_t pump_get_state()
516+
{
517+
return pump_state;
518+
}
519+
520+
503521
void pump_on(void){
504522
DDRG |= 0x10; // PG4 PUMP_D5_N
505523
DDRG |= 0x20; // PG5 PUMP_D5
506524

507525
PORTG |= 0x10;
508526
PORTG &= (~0x20);
527+
528+
529+
pump_set_state(PUMP_STATE_ON);
509530
}
510531

511532
void pump_off(void){
512-
DDRG |= 0x10; // PG4 PUMP_D5_N
513-
DDRG |= 0x20; // PG5 PUMP_D5
533+
if (pump_get_state() == PUMP_STATE_ON)
534+
{
535+
536+
DDRG |= 0x10; // PG4 PUMP_D5_N
537+
DDRG |= 0x20; // PG5 PUMP_D5
538+
539+
PORTG &= (~0x10);
540+
PORTG |= 0x20;
541+
542+
543+
pump_set_state(PUMP_STATE_VALVE_ON);
544+
}
545+
}
546+
void pump_tick(void)
547+
{
548+
static uint8_t valve_on_times = 0;
549+
#define HARD_MASK ( 1<<6 | 1<<5 | 1<<4 | 1<<3 )
550+
551+
552+
switch (pump_state)
553+
{
554+
case PUMP_STATE_OFF:
555+
valve_on_times = 0;
556+
break;
557+
558+
case PUMP_STATE_ON:
559+
valve_on_times = 0;
560+
break;
561+
562+
case PUMP_STATE_VALVE_ON:
563+
valve_on_times++;
564+
PORTG |= 0x20;
565+
566+
if ( (PINJ & HARD_MASK) >0x00)
567+
{
568+
if (valve_on_times >= VALVE_ON_TIMES_MAX*10)
569+
{
570+
valve_on_times = 0;
571+
PORTG &= (~0x20);
572+
pump_state = PUMP_STATE_OFF;
573+
574+
}
575+
}
576+
else
577+
{
578+
579+
delay_ms(50);
580+
if (valve_on_times >= VALVE_ON_TIMES_MAX)
581+
{
582+
valve_on_times = 0;
583+
pump_state = PUMP_STATE_OFF;
584+
}
585+
else
586+
{
587+
pump_state = PUMP_STATE_VALVE_OFF;
588+
}
589+
590+
}
591+
break;
592+
593+
case PUMP_STATE_VALVE_OFF:
594+
PORTG &= (~0x20);
595+
delay_ms(50);
596+
pump_state = PUMP_STATE_VALVE_ON;
597+
598+
break;
514599

515-
PORTG &= (~0x10);
516-
PORTG |= 0x20;
517600

601+
}
518602
}
519603

604+
520605
uint8_t get_pump_status(void){
521606
if( (PORTG & 0x10) == 0x00 ){ return 0; }
522607
uint16_t value = analogRead(A9);

src/uarm_peripheral.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,18 @@
66
extern char hardware_version[8];
77
extern char bt_mac_addr[13];
88

9+
typedef enum _pump_state_t
10+
{
11+
PUMP_STATE_OFF,
12+
PUMP_STATE_ON,
13+
PUMP_STATE_VALVE_ON,
14+
PUMP_STATE_VALVE_OFF,
15+
16+
17+
PUMP_STATE_COUNT
18+
} pump_state_t;
19+
#define VALVE_EN 4
20+
921
void end_effector_init(void);
1022
void end_effector_set_angle(float angle);
1123
void end_effector_deinit(void);
@@ -30,6 +42,8 @@ void read_hardware_version(void);
3042

3143
void pump_on(void);
3244
void pump_off(void);
45+
void pump_tick(void);
46+
3347
uint8_t get_pump_status(void);
3448

3549
void gripper_relesae(void);
@@ -47,6 +61,7 @@ uint8_t get_power_status(void);
4761

4862
void check_motor_positon(void);
4963
void update_motor_position(void);
64+
unsigned long millis_2(void);
5065

5166

5267
#endif

src/uarm_swift.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@ void uarm_swift_init(void){
3030
uart_printf( "soft ver : %s\r\n" , SOFTWARE_VERSION );
3131
uart_printf( "api ver : %s\r\n", API_VERSION );
3232
uart_printf( "work mode : %d\r\n", uarm.param.work_mode );
33+
3334
printString( "@1\n" );
3435

3536
}
3637

3738
void uarm_swift_tick_run(void){
3839
// swift_buzzer.tick();
3940

41+
pump_tick();
4042
}
4143

4244

src/uarm_swift.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#endif
1414

1515
#define HARDWARE_VERSION hardware_version
16-
#define SOFTWARE_VERSION "V4.5.0"
16+
#define SOFTWARE_VERSION "V4.5.1"
1717
#define API_VERSION "V4.0.4"
1818
#define BLE_UUID bt_mac_addr
1919

0 commit comments

Comments
 (0)