Proyectos Microcontroladores

Menu Principal

Joomla Slide Menu by DART Creations

Tarjeta de Adquisicion USB CDC

Valoración de los usuarios: / 1
PobreEl mejor 

En este pequeño articulo pertenece al proyecto TARJETA ADQUISICIÓN DE DATOS ITLERMA , aquí veremos como hacer un dispositivo USB CDC, yo que lo quise aprovechar para hacer algunas prácticas con Labwindows, así que este firmeware puede ser utilizado con las prácticas del curso de Labwindows. La diferencia más importante es que en este proyecto se utilizó uno de los hermanos pequeños del MC9S08JM60, el MC9S08JM8, que tiene los mismos perífericos, exceptuando el tamaño de la memoria RAM y FLASH.

Primero que nada, veremos la pila USB que nos ofrece CMX, es una pila USB que si bien no esta completa, es suficiente para hacernos de nuestro dispositivo, aqui podemos ver como esta organizado nuestro proyecto.

Para poder bajar el proyecto completo, necesitas estar registrado, además incluyo el driver .inf que tienes que instalar cuando conectas por primera vez la tarjeta.

 

 Free Image Hosting at www.ImageShack.us

 

En donde podemos ver la carpeta USB_CMX la cual contiene la pila CMX para un dispositvo CDC, aquí podemos descargar los ejemplos que ofrece freescale en su pagina oficial CMX, el programa es muy parecido al del dispositivo HID, con algunas diferencias muy pequeñas.En el menu principal podemos ver como configurar nuestro dispositivo CDC.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
for(;;) {
cdc_process();
 
while(!cdc_kbhit());
car=cdc_getch();
buffer[i++]=car;
 
if(car==0x0D){
 
data_process();
}
 
 
if(flag_botones){
 
if(IN1){
flag_in1=1;
}else{
flag_in1=0;
}
if(IN2){
flag_in2=1;
}else{
flag_in2=0;
}
 
}
 
}

Y en la función data_process() en la linea 10, procesamos todo la información que se guarda en la variable tipo cadena llama buffer.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
void data_process(void){
 
if(buffer[0]=='A'&& buffer[1]=='0'){
 
if(!flag_12bits){
CDC_Send_String("AN0 ");
val=READ_CH0();
cdc_putch(val);
cdc_putch(0x0D);
}else{
CDC_Send_String("AN0 ");
val12=READ_CH0_12();
cdc_putch(min);
cdc_putch(max);
cdc_putch(0x0D);
}
 
}else if(buffer[0]=='A'&& buffer[1]=='1'){
 
if(!flag_12bits){
CDC_Send_String("AN1 ");
val=READ_CH1();
cdc_putch(val);
cdc_putch(0x0D);
}else{
CDC_Send_String("AN1 ");
val12=READ_CH1_12();
cdc_putch(min);
cdc_putch(max);
cdc_putch(0x0D);
}
}else if(buffer[0]=='A'&& buffer[1]=='2'){
 
if(!flag_12bits){
CDC_Send_String("AN2 ");
val=READ_CH2();
cdc_putch(val);
cdc_putch(0x0D);
}else{
CDC_Send_String("AN2 ");
val12=READ_CH2_12();
cdc_putch(min);
cdc_putch(max);
cdc_putch(0x0D);
}
}else if(buffer[0]=='A'&& buffer[1]=='3'){
 
if(!flag_12bits){
CDC_Send_String("AN3 ");
val=READ_CH3();
cdc_putch(val);
cdc_putch(0x0D);
}else{
CDC_Send_String("AN3 ");
val12=READ_CH3_12();
cdc_putch(min);
cdc_putch(max);
cdc_putch(0x0D);
}
}else if(buffer[0]=='1' && buffer[1]=='2' && buffer[2]=='b'){
 
flag_12bits=1;
ADC_Init_12bit();
CDC_Send_String("12b ok\r");
}else if(buffer[0]=='8' && buffer[1]=='b'){
 
flag_12bits=0;
ADC_Init();
CDC_Send_String("8b ok\r");
}else if (buffer[0]=='P' && buffer[1]=='W' && buffer[2]=='1' && buffer[3]=='O'&& buffer[3]=='N'){
TPM_Start();
}else if (buffer[0]=='P' && buffer[1]=='W' && buffer[2]=='1' && buffer[3]=='O'&& buffer[3]=='F'){
TPM_Stop();
/*setting PWM frecuency*/
}else if (buffer[0]=='S' && buffer[1]=='F' && buffer[2]=='1'){
frec_pwm=buffer[2];
err1=TPM_Config(frec_pwm,duty_pwm);
if(err1)CDC_Send_String("ok\r");
else CDC_Send_String("error1\r");
/*setting duty cycle pwm*/
}else if (buffer[0]=='S' && buffer[1]=='D' && buffer[2]=='1'){
duty_pwm=buffer[2];
err1=TPM_Config(frec_pwm,duty_pwm);
if(err1)CDC_Send_String("ok\r");
else CDC_Send_String("error2\r");
/*error general*/
}else if(buffer[0]=='P' && buffer[1]=='W' && buffer[2]=='2' && buffer[3]=='O'&& buffer[3]=='N'){
TPM_Start2();
}else if(buffer[0]=='P' && buffer[1]=='W' && buffer[2]=='2' && buffer[3]=='O'&& buffer[3]=='F'){
TPM_Stop2();
}else if (buffer[0]=='S' && buffer[1]=='F' && buffer[2]=='2'){
frec_pwm2=buffer[2];
err1=TPM_Config2(frec_pwm2,duty_pwm2);
if(err1)CDC_Send_String("ok\r");
else CDC_Send_String("error1\r");
/*setting duty cycle pwm*/
}else if (buffer[0]=='S' && buffer[1]=='D' && buffer[2]=='2'){
duty_pwm2=buffer[2];
err1=TPM_Config2(frec_pwm2,duty_pwm2);
if(err1)CDC_Send_String("ok\r");
else CDC_Send_String("error2\r");
/*error general*/
}else if (buffer[0]=='L'&& buffer[1]=='1'){
LED=0;
}else if (buffer[0]=='L'&& buffer[1]=='0'){
LED=1;
}else if(buffer[0]=='O' && buffer[1]=='1' && buffer[2]=='1'){
OUT1=1;
CDC_Send_String("out1 on\r\n");
}else if(buffer[0]=='O' && buffer[1]=='2' && buffer[2]=='1'){
OUT2=1;
CDC_Send_String("out2 on\r\n");
}else if(buffer[0]=='O' && buffer[1]=='1' && buffer[2]=='0'){
OUT1=0;
CDC_Send_String("out1 off\r\n");
}else if(buffer[0]=='O' && buffer[1]=='2' && buffer[2]=='0'){
OUT2=0;
CDC_Send_String("out2 off\r\n");
}else if(buffer[0]=='B' && buffer[1]=='1'){
flag_botones=1;
 
}else if(buffer[0]=='B' && buffer[1]=='0'){
flag_botones=0;
 
}else if(buffer[0]=='I'&& buffer[1]=='1'){
if(flag_in1)CDC_Send_String("In1 1\r\n");
else
CDC_Send_String("In1 0\r\n");
}else if(buffer[0]=='I'&& buffer[1]=='2'){
if(flag_in1)CDC_Send_String("In2 1\r\n");
else
CDC_Send_String("In2 0\r\n");
}
else{
CDC_Send_String("Error 0\r\n");
}
clean_buffer();
}

Aquí podemos ver como funciona el programa:

 

 

 

Escribir un comentario

No agredir a los demás compañeros
Evitar comentarios racistas o insultantes


Código de seguridad
Refescar

Buscador ThinkChip

Ingresar

¿Deseas apoyarme?

Enter Amount:

Distribuidores

Banner

Más allá de la ciencia

23:1 Jehová es mi pastor; nada me faltará.23:2 En lugares de delicados pastos me hará descansar;Junto a aguas de reposo me pastoreará.
23:3 Confortará mi alma;Me guiará por sendas de justicia por amor de su nombre.23:4 Aunque ande en valle de sombra de muerte,No temeré mal alguno, porque tú estarás conmigo;Tu vara y tu cayado me infundirán aliento.23:5 Aderezas mesa delante de mí en presencia de mis angustiadores;Unges mi cabeza con aceite; mi copa está rebosando.23:6 Ciertamente el bien y la misericordia me seguirán todos los días de mi vida,Y en la casa de Jehová moraré por largos días.
mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterToday11
mod_vvisit_counterYesterday83
mod_vvisit_counterThis week11
mod_vvisit_counterLast week567
mod_vvisit_counterThis month434
mod_vvisit_counterLast month1863
mod_vvisit_counterAll days2297

We have: 2 guests online
Your IP: 38.107.191.103
 , 
Today: Sep 06, 2010