8 for (u
= 0; u
< 1000000; u
++);
14 /*nothing*/ 1, /*PWM1*/ 1, 15, 3, 17, /*PWM5*/ 11, /*PWM6*/ 19
17 uint32_t *PWM_MR
[] = {
27 void pwm_channel(int n
, int double_edge
) {
30 PWMPCR
|= (0x100 | (double_edge
&& n
)) << n
;
32 PINSEL1
|= 0x00000400;
33 PINSEL1
&= 0xfffff7ff;
36 bit
= 1 << PWM_PINSEL
[n
];
43 void pwm_set(int n
, uint32_t when
) {
48 void pwm_set_double(int n
, uint32_t from
, uint32_t to
) {
51 PWMLER
|= 0x3 << (n
-1);
54 void pwm_init(uint32_t prescale
, uint32_t period
) {
65 void motor_drive(float u
) {
66 uint32_t d
= (float)PWMMR0
*(0.5*(1.0+u
));
68 pwm_set_double(2, 0, d
);
69 pwm_set_double(4, d
, 0);