1+ #include "drive_control.h"
2+
3+
4+ /*L298N_init*/
5+ void L298N_init (void )
6+ {
7+
8+ PMOD_L = gpio_get_dev (DW_GPIO_PORT_A );
9+ PMOD_L -> gpio_open (L298N_L_MASK );
10+ PMOD_L -> gpio_control (GPIO_CMD_SET_BIT_DIR_OUTPUT , (void * )L298N_L_MASK );
11+
12+ PMOD_R = gpio_get_dev (DW_GPIO_PORT_A );
13+ PMOD_R -> gpio_open (L298N_R_MASK );
14+ PMOD_R -> gpio_control (GPIO_CMD_SET_BIT_DIR_OUTPUT , (void * )L298N_R_MASK );
15+
16+ PMOD_F = gpio_get_dev (DW_GPIO_PORT_A );
17+ PMOD_F -> gpio_open (L298N_F_MASK );
18+ PMOD_F -> gpio_control (GPIO_CMD_SET_BIT_DIR_OUTPUT , (void * )L298N_F_MASK );
19+
20+ PMOD_H = gpio_get_dev (DW_GPIO_PORT_C );
21+ PMOD_H -> gpio_open (L298N_H_MASK );
22+ PMOD_H -> gpio_control (GPIO_CMD_SET_BIT_DIR_OUTPUT , (void * )L298N_H_MASK );
23+
24+ }
25+
26+
27+ /**
28+ * \brief Control move.
29+ * \param dire.Direction of move.
30+ * \param pwm_left.Left PWM control.
31+ * \param pwm_right.Right PWM control.
32+ */
33+ void car_set (uint32_t dire ,uint32_t pwm_left , uint32_t pwm_right )
34+ {
35+ switch (dire )
36+ {
37+ //stop
38+ case 0 :
39+ PWM_L = 0 ;
40+ PWM_R = 0 ;
41+ break ;
42+ //forward
43+ case 1 :
44+ PMOD_F -> gpio_write (0x30000000 ,L298N_F_MASK );
45+ PMOD_H -> gpio_write (0x00000000 ,L298N_H_MASK );
46+ PWM_L = speed ;
47+ PWM_R = speed ;
48+ break ;
49+ //left
50+ case 2 :
51+ PMOD_F -> gpio_write (0x30000000 ,L298N_F_MASK );
52+ PMOD_H -> gpio_write (0x00000000 ,L298N_H_MASK );
53+
54+ PMOD_R -> gpio_write (0x80000000 ,L298N_R_MASK );
55+ PWM_L = 0 ;
56+ PWM_R = speed ;
57+ break ;
58+ //right
59+ case 3 :
60+ PMOD_F -> gpio_write (0x30000000 ,L298N_F_MASK );
61+ PMOD_H -> gpio_write (0x00000000 ,L298N_H_MASK );
62+
63+ PMOD_L -> gpio_write (0x40000000 ,L298N_L_MASK );
64+ PWM_L = speed ;
65+ PWM_R = 0 ;
66+ break ;
67+ case 4 : //speed up
68+ if (speed < 9 )
69+ {
70+ speed = speed + 1 ;
71+ PWM_L = speed ;
72+ PWM_R = speed ;
73+ }
74+ break ;
75+ case 5 : //speed down
76+ if (speed > 0 )
77+ {
78+ speed = speed - 1 ;
79+ PWM_L = speed ;
80+ PWM_R = speed ;
81+ }
82+ break ;
83+ //backward
84+ case 6 :
85+ PMOD_F -> gpio_write (0x00000000 ,L298N_F_MASK );
86+ PMOD_H -> gpio_write (0xC0000000 ,L298N_H_MASK );
87+ PWM_L = speed ;
88+ PWM_R = speed ;
89+ break ;
90+ }
91+ }
0 commit comments