Autor Tema: Duda con la programación de PIC 18F4550  (Leído 1359 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado piccolodaimaodbz

  • PIC10
  • *
  • Mensajes: 2
Duda con la programación de PIC 18F4550
« en: 13 de Octubre de 2013, 10:11:09 »
Hola muy buenas,

Estoy haciendo un proyecto con el PIC 18F4550, utilizando para ello la clase USB CDC.

Lo que pretendo básicamente es enviar bits desde Matlab, y sacarlos por las salidas digitales del PIC.

Lo que yo quiero es sacar 12 bits + un bit de signo, utilizando para ello el Puerto B (todos los pines), y el puerto D (utilizando los 5 primeros pines, 4 para el valor y el quinto para el signo).

La verdad, lo he conseguido y funciona muy bien, tengo control absoluto sobre ambos puertos si los trato con ejemplos sencillos. El problema es cuando intento enviar datos desde Matlab, mayores a 255.

Para leer lo que manda Matlab utilizo la función "u=usb_cdc_getc();" donde u es la variable donde guardo el dato recibido. Lo que me temo (aunque no lo se con seguridad, y gradezco si me lo aclaran), es que el problema no está en el gobierno de los propios puertos, sino que esta función tan solo puede leer 8 bits.

He probado con las siguientes alternativas:

gethex_usb(); //La cual funciona pero no me sirve, ya que creo que tiene la misma limitación que la otra y además no interpreta los números como yo quiero.
get_string_usb(char* s, unsigned int max); //La cual la he probado y no hace nada... tampoco tengo muy claro que parámetro es cada uno, así que a lo mejor la configure mal.

También he peinado Internet, y este foro y demás y no he sido capaz de dar con la tecla.

Muchas gracias por su ayuda!!


PD:Soy nuevo en el foro, ya he leido las reglas, espero estar haciendolo bien, sino, agradezco su paciencia y sus criticas constructivas. Creo que este tema esta en el lugar correcto en el foro, sino es así, avisenme. Gracias. :)








Desconectado piccolodaimaodbz

  • PIC10
  • *
  • Mensajes: 2
Re: Duda con la programación de PIC 18F4550
« Respuesta #1 en: 13 de Octubre de 2013, 12:45:54 »
Hola muy buenas,

Estoy haciendo un proyecto con el PIC 18F4550, utilizando para ello la clase USB CDC.

Lo que pretendo básicamente es enviar bits desde Matlab, y sacarlos por las salidas digitales del PIC.

Lo que yo quiero es sacar 12 bits + un bit de signo, utilizando para ello el Puerto B (todos los pines), y el puerto D (utilizando los 5 primeros pines, 4 para el valor y el quinto para el signo).

La verdad, lo he conseguido y funciona muy bien, tengo control absoluto sobre ambos puertos si los trato con ejemplos sencillos. El problema es cuando intento enviar datos desde Matlab, mayores a 255.

Para leer lo que manda Matlab utilizo la función "u=usb_cdc_getc();" donde u es la variable donde guardo el dato recibido. Lo que me temo (aunque no lo se con seguridad, y gradezco si me lo aclaran), es que el problema no está en el gobierno de los propios puertos, sino que esta función tan solo puede leer 8 bits.

He probado con las siguientes alternativas:

gethex_usb(); //La cual funciona pero no me sirve, ya que creo que tiene la misma limitación que la otra y además no interpreta los números como yo quiero.
get_string_usb(char* s, unsigned int max); //La cual la he probado y no hace nada... tampoco tengo muy claro que parámetro es cada uno, así que a lo mejor la configure mal.

También he peinado Internet, y este foro y demás y no he sido capaz de dar con la tecla.

Muchas gracias por su ayuda!!


PD:Soy nuevo en el foro, ya he leido las reglas, espero estar haciendolo bien, sino, agradezco su paciencia y sus criticas constructivas. Creo que este tema esta en el lugar correcto en el foro, sino es así, avisenme. Gracias. :)


____________

EDITO:

Me autocontesto  :-/   

Desde el micro me ha resultado imposible así que lo que finalmente he hecho es programarlo en Matlab. Primero tomo el número, evaluo si este es negativo, de ser así le sumo 4096 (para encender el bit de signo), despues lo paso a binario, y de la cadena binaria tomo los 8 bits menos significativos y los envio al puerto B del micro, y los 5 its restantes al puerto D.






Desconectado NarKo

  • PIC10
  • *
  • Mensajes: 12
Re: Duda con la programación de PIC 18F4550
« Respuesta #2 en: 14 de Octubre de 2013, 18:28:06 »
Hola, según como lo veo yo tendrías que reconstruir el valor mayor a 255, supongamos que envias un valor de 16Bit lo separas en 2 de 8 bit para enviarlo y lo reconstruyes al recibirlo. eso se me ocurre a mi.

saludos.