Ver tema anterior :: Ver tema siguiente |
Autor |
Mensaje |
alquimus modder
País: Sexo: Registrado: 24 julio 2006 Mensajes: 2
|
Publicado: Lun, 24 Jul 2006 10:28 pm Asunto: Recibir datos desde el PIC |
|
|
Hola a todos, he desarrollado el proyecto original, y he logrado grandes avances, mi objetivo es controlar 4 motores paso a paso a travez del pic, para lo cual he logrado aumentar la cantidad de informacion que le ENVIO al PIC ( en este caso un 18F4550), sin embargo no he podido RECIVIR desde el PIC mas de 1 byte, (como en la suma) .
Que parametros debo modificar tanto en el archivo .C que va en el pic, tanto como en el proyecto de visual c# para poder aumentar la cantidad de bytes recibidos?. |
|
Volver arriba |
|
|
Lars_Ulrich modder
País: Sexo: Registrado: 18 marzo 2007 Mensajes: 6
|
|
Volver arriba |
|
|
Teotekaplan Moderador
País: Sexo: Registrado: 31 marzo 2003 Mensajes: 4124 Ubicación: Madrid
|
Publicado: Dom, 18 Mar 2007 10:19 pm Asunto: |
|
|
Tienes bien soldados los pines del USB +D y -D ? Vamos, que no estén intercambiados. 'Me lo contaron y lo olvidé. Lo vi y lo entendí. Lo hice y lo aprendí.' |
|
Volver arriba |
|
|
Lars_Ulrich modder
País: Sexo: Registrado: 18 marzo 2007 Mensajes: 6
|
Publicado: Lun, 19 Mar 2007 9:42 pm Asunto: |
|
|
Gracias Teotekaplan por la respuesta, pero ya revisé y todo esta bien conectado, y sin embargo me sigue saliendo el mismo error alguna otra solucion ???... |
|
Volver arriba |
|
|
Teotekaplan Moderador
País: Sexo: Registrado: 31 marzo 2003 Mensajes: 4124 Ubicación: Madrid
|
Publicado: Lun, 19 Mar 2007 9:51 pm Asunto: |
|
|
Varios intentos:
-Cambiar el PICUSB de puerto
-Quitar el driver e instalar a mano (clic con el derecho en el .inf y opción instalar) y luego conectar el picusb.
Ah bueno, asegúrate de que el driver es apropiado, que no intentas meter una versión antigua... o como yo... dos dias intentando instalar el picusb y metiendole a la fuerza el driver del gtpusb (merluzas del teo) jajajaja
-Asegurarse de que el condensador de alimentación de USB (C7) está puesto, se han dado casos de mal funcionamiento por no ponerlo, aunque no tire del USB pa alimentar al circuito.
-Borra el pic y prográmalo de nuevo, o prueba otro pic.'Me lo contaron y lo olvidé. Lo vi y lo entendí. Lo hice y lo aprendí.' |
|
Volver arriba |
|
|
Lars_Ulrich modder
País: Sexo: Registrado: 18 marzo 2007 Mensajes: 6
|
Publicado: Mar, 20 Mar 2007 7:09 am Asunto: |
|
|
De antemano ,uchas gracias por la qyuda que me etas dando Teo...
Entrando en materia, hice las 2 primeras y sucedieron 2 cosas interesantes: 1) cuando instale el driver a mano ya por lo menos no lo reconoce como "Dispositivo desconocido", sino como "PicUSB"(eso creo que es bueno), lo malo es que ahora no me sale ni siquiera el icono ni nada de eso
por cierto, de las versiones, estoy instalando el que posteó J1M en la pag 4 de este foro... no se si sea el mas reciente...
con respecto al condensador de alimentacion, carajo no lo puse, y como un refran de mi tierra dice: "en casa de herrero, cuchillo de palo", no tengo un condensador de 100n y me toca ir a comprarlo mañana :p
si hay alguna mejora, escribiré mis agradecimientos, y si no, escribiré molestandoles mas la vida jejeje :p:p.... GRACIAS!!! |
|
Volver arriba |
|
|
Lars_Ulrich modder
País: Sexo: Registrado: 18 marzo 2007 Mensajes: 6
|
Publicado: Mar, 20 Mar 2007 7:50 pm Asunto: |
|
|
GRACIAS!!!! ya compre el condensador y funcionó a las mil maravillas... (eso me pasa por descuidado)... pero todo gracias a la ayuda que me dieron... ahhh por cierto, lo del icono personalizado en la clase de dipositivos no me salió correctamente, pero lo importante es que ya lo raconoce perfecto...
THANKS!!!! |
|
Volver arriba |
|
|
dianacarolito modder
País: Sexo: Registrado: 30 mayo 2007 Mensajes: 1
|
Publicado: Mie, 30 May 2007 4:01 am Asunto: |
|
|
Hola lo que pasa es que quiero utilizar el protocolo usb y el i2c pero cuando inicia la interrupcion producida por el usb no me realiza la del i2c, me podrian ayudar |
|
Volver arriba |
|
|
Teotekaplan Moderador
País: Sexo: Registrado: 31 marzo 2003 Mensajes: 4124 Ubicación: Madrid
|
Publicado: Mie, 30 May 2007 7:33 am Asunto: |
|
|
Añade en la linea 273 de tu código un "NOP" y listo.
Chic@... semos listos, pero no adivinos... sin código no te podemos ayudar.'Me lo contaron y lo olvidé. Lo vi y lo entendí. Lo hice y lo aprendí.' |
|
Volver arriba |
|
|
J1M modder
País: Sexo: Registrado: 28 octubre 2003 Mensajes: 167 Ubicación: Cartagena
|
|
Volver arriba |
|
|
Teotekaplan Moderador
País: Sexo: Registrado: 31 marzo 2003 Mensajes: 4124 Ubicación: Madrid
|
Publicado: Mie, 30 May 2007 11:05 pm Asunto: |
|
|
La verdad que mi respuesta fue rápida y con acritud, pero J1M tiene razón... tenía que haberme leído dos veces la pregunta... n hace falta código (en principio) para ver que una causa 99% probable es esa.
Como bien dicen, cuando entras en una interrupción, éstas quedan deshabilitadas ya que el PIC no tiene stack para interrupciones anidadas.
El truco es intentar modificar la rutina del I2C para que salve los registros principales del PIC (WREG, STATUS... etc) en unas variables, en lugar de dejar al compilador que lo haga.
Cuando entres en la de USB, los registros se guardan automáticamente. Ahí dentro has de habilitar de nuevo las interrupciones a mano (las de I2C y globales) y cuando la del I2C ocurra, los registros se salvarán en tus variables.
Al salir de la int de I2C, metes tus variables en sus registros originales y sales de la interrupción, con lo que volverías a la del USB.
Al loro porque ésto sólo lo podrás hacer en ASM o accediendo directamente a los registros.
Otra opción es pasarte a los 18F.... que tienen dos niveles de interrupción: una de alta prioridad y otra de baja.'Me lo contaron y lo olvidé. Lo vi y lo entendí. Lo hice y lo aprendí.' |
|
Volver arriba |
|
|
J1M modder
País: Sexo: Registrado: 28 octubre 2003 Mensajes: 167 Ubicación: Cartagena
|
|
Volver arriba |
|
|
Teotekaplan Moderador
País: Sexo: Registrado: 31 marzo 2003 Mensajes: 4124 Ubicación: Madrid
|
Publicado: Mie, 03 Oct 2007 6:13 pm Asunto: |
|
|
Ya que se actualiza el hilo, tengo una pregunta XDD programativa.
Para enviar una trama de 64 bytes del pc al pic no tengo problemas usando la función correspondiente.
El problema es recibir resultados, ya que la función en C# sólo retorna una variable, no una colección o una matriz.
Dentro de la función que lee datos del PIC, sí que se puede especificar los bytes a recibir, pero en el return de la función, devuelve sólo uno independientemente de los recibidos.
La pregunta es... ¿Cómo se hace para que una función en C# devuelva una matriz en lugar de una sola variable? Por supuesto sin recurrir a los punteros ni a código no seguro.
¿Alguien sabe?'Me lo contaron y lo olvidé. Lo vi y lo entendí. Lo hice y lo aprendí.' |
|
Volver arriba |
|
|
J1M modder
País: Sexo: Registrado: 28 octubre 2003 Mensajes: 167 Ubicación: Cartagena
|
Publicado: Mie, 03 Oct 2007 6:27 pm Asunto: |
|
|
Ostrin... pues a ver, los punteros convierten el código en no seguro, por lo que hay q compilarlo como tal. C# Tiene una variable 'propia' llamada IntPtr, es una mezcla entre puntero y variable pero 'segura'... Lo que no tengo claro es si puede ser bidimensional. De todas formas si tu bidimensionalidad es debida a un LCD, supongo que si previamente defines el WxH y son constantes, las dos dimensiones las puedes transformar en un array de una sola dimensión........... Creo que no me he explicado en absoluto :p Si puede pensarse, puede hacerse... |
|
Volver arriba |
|
|
Teotekaplan Moderador
País: Sexo: Registrado: 31 marzo 2003 Mensajes: 4124 Ubicación: Madrid
|
|
Volver arriba |
|
|
|