Root/Examples/Beta1/src/UNROBOT_pwm_test.c

1
2
3#include <stdio.h>
4#include <unistd.h>
5#include <stdlib.h>
6
7#include "jz47xx_gpio.c"
8#include "jz47xx_mmap.c"
9
10#define CS2_PORT JZ_GPIO_PORT_B
11#define CS2_PIN 26
12
13int
14main ()
15{
16#ifdef DOUBLE
17  set_fpu (0x27F); /* use double-precision rounding */
18#endif
19
20  int i;
21  int pwm1=0xFF; //PWM Led en SIE, entre 0 y 255
22  int pwm2=0xFF; //PWM Led fuera SIE, entre 0 y 255
23  int pwm3=0xFF; //PWM Led en SIE, entre 0 y 255
24  int pwm4=0xFF; //PWM Led fuera SIE, entre 0 y 255
25
26  int dutycycle1; //PWM Led en SIE
27  int dutycycle2; //PWM Led fuera SIE
28  int dutycycle3; //PWM Led en SIE
29  int dutycycle4; //PWM Led fuera SIE
30
31  JZ_PIO *pio;
32  int *virt_addr;
33
34  // Set GPIOB26 as part of External Memory Controller
35  pio = jz_gpio_map (CS2_PORT);
36  jz_gpio_as_func (pio, CS2_PIN, 0);
37
38  virt_addr = (int *) jz_mmap (0x13010000) + 0x18;
39
40  printf ("\nIniciado: \nPrueba Beta Alpha3 UNROBOT \n");
41
42  if (*virt_addr != 0xFFF7700)
43    { // 0 WS, 8 bits
44      *virt_addr = 0xFFF7700;
45      printf ("Configuring CS2 8 bits \n");
46    }
47  else
48    printf ("CS2, already configured\n");
49
50  virt_addr = (int *) jz_fpga_map (0x14000000);
51
52 dutycycle1=(int)((float)((100.0/255.0)*pwm1));
53 dutycycle2=(int)((float)((100.0/255.0)*pwm2));
54 dutycycle3=(int)((float)((100.0/255.0)*pwm3));
55 dutycycle4=(int)((float)((100.0/255.0)*pwm4));
56
57
58  printf ("DUTY1:%d%% \n", dutycycle1);
59  printf ("DUTY2:%d%% \n", dutycycle2);
60  printf ("DUTY3:%d%% \n", dutycycle3);
61  printf ("DUTY4:%d%% \n", dutycycle4);
62
63
64  printf ("Setting PWM..\n");
65     virt_addr[1024] = pwm1+(pwm2<<8)+(pwm3<<16)+(pwm4<<24);//0xFFFFFFFF Cada dos digitos es un PWM
66  usleep (1000 * 1000);
67
68
69  printf ("Writing In Memory1 the Dutycycles and pwm references from 0x100 to 0x103..\n");
70
71    virt_addr[1536] = pwm1;
72    virt_addr[1537] = dutycycle1;
73    virt_addr[1538] = pwm2;
74    virt_addr[1539] = dutycycle2;
75    virt_addr[1540] = pwm3;
76    virt_addr[1541] = dutycycle3;
77    virt_addr[1542] = pwm4;
78    virt_addr[1543] = dutycycle4;
79
80  printf ("Reading from Memory1 the Dutycycles and pwm references..\n");
81
82    printf("1- PWM_REF:%d, Duty Cycle:%d%% \n", virt_addr[1536], virt_addr[1537]);
83    printf("2- PWM_REF:%d, Duty Cycle:%d%% \n", virt_addr[1538], virt_addr[1539]);
84    printf("1- PWM_REF:%d, Duty Cycle:%d%% \n", virt_addr[1540], virt_addr[1541]);
85    printf("2- PWM_REF:%d, Duty Cycle:%d%% \n", virt_addr[1542], virt_addr[1543]);
86
87    printf("1- Encoder1:%d\n", virt_addr[0]);
88    printf("1- Encoder2:%d\n", virt_addr[512]);
89
90  return 0;
91}
92

Archive Download this file

Branches:
master



interactive