Autor Tema: PUERTO A1 COMO ASINCRONO DE DATOS??  (Leído 5503 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

niroblock

  • Visitante
PUERTO A1 COMO ASINCRONO DE DATOS??
« en: 15 de Marzo de 2007, 08:50:14 »
Hola a todos,

Tengo un problema para adaptar mi programación en C en un 18F1320 y 18F452,

previamente programados con picbasic  :z)

Os explico:

Me han  echo un encargo de cambiar todo el software de un sistema de distribución automática para adaptarlo a un módulo Ethernet programados por mi empresa.
 
A bordo  tiene 3 PIC’S, dos de los tres se hablan a través del puerto RA1 :shock: con el comando SERIN de picbasic
trasmitiéndose comandos en modo asíncrono :shock:

Esto me ha dejado sin palabra datos que yo no suelo utilizar estos pins para la comunicación serial, a parte que la misma Microchip no lo aconseja.

Además la empresa que me ha contratado no esta dispuesta a cambiar su electrónica por completo  :?,endoses mi pregunta es la siguiente:

Como se puede emular dicha comunicación con  CCS, C18 o ASM

cualquiera de esto tres me valdría .

Se agradece ayuda. :lol:

niroblock@hotmail.com


Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #1 en: 15 de Marzo de 2007, 12:52:39 »
A bordo  tiene 3 PIC’S, dos de los tres se hablan a través del puerto RA1 :shock: con el comando SERIN de picbasic
trasmitiéndose comandos en modo asíncrono :shock:

No uso picbasic pero si C18 y assembler.  La pregunta es ¿cómo funciona esa rutina SERIN? ¿Es una comunicación serie con un solo cable en modo half duplex?
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Deimos

  • Visitante
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #2 en: 16 de Marzo de 2007, 08:07:31 »
Este foro tiene una categoría aparte para los Pic Basic y Pic Proton, dentro de Todo en Microcontroladores PIC. Prueba a realizar tu consulta en este subforo, quizás te puedan aconsejar mejor.

Dws!!!

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #3 en: 16 de Marzo de 2007, 12:55:23 »
Este foro tiene una categoría aparte para los Pic Basic y Pic Proton, dentro de Todo en Microcontroladores PIC. Prueba a realizar tu consulta en este subforo, quizás te puedan aconsejar mejor.

Dws!!!

Pero según interpreto del post de niroblock , él quiere hacer eso en C18, CCS o ASM.  Tal vez debiera ir y volver entre ambos subforos  8)
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Deimos

  • Visitante
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #4 en: 16 de Marzo de 2007, 14:28:09 »
Pues no se maunix, como dice que está previamente programados con picbasic....... y que se comunican a través del comando SERIN.........

Sinceramente no tengo ni idea de Picbasic o CCS, me quedé en asm y C, lenguajes de toda la vida, y con esos dos lenguajes lo programo todo (hace mucho que no toco el asm, y ahora casi todo lo programo en C porque uso o C18 o C30).

Niroblock puedes colgar esquemáticos o fuentes de tu proyecto? Lo digo porque al ser para la empresa en la que trabajas.........quizás te represente un problema. Lo sé por experiencia propia jejejeje  :lol:

De cádiz a pontevedra.......quien esté libre de culpa.........que tire la primera piedra.

Salud!!!!!!!


niroblock

  • Visitante
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #5 en: 17 de Marzo de 2007, 08:10:42 »

No uso picbasic pero si C18 y assembler.  La pregunta es ¿cómo funciona esa rutina SERIN? ¿Es una comunicación serie con un solo cable en modo half duplex?
[/quote]

Hola gracias por tu respuesta,

Te explico yo también no conozco muy bien Picbasic (y tampoco me interesa conocerlo) pero, leyendo el manual de este compilador vi que el comando SERIN se utiliza par declarar una comunicación serie I/O su cualquier pin che permita bi-direccional
E al mismo tempo recibe e interpreta  los datos así:

Comando                                                       Variable
picbasic   Pin   Velocidad   Identidad   Datos    de datos

Serin   RA1      t9600          A            ‘D’           ‘5’

Lo raro que para enviar datos utiliza otro comando SEROUT que trabaja en el mismo pin del puerto A así:

Comando                                                       Variable
picbasic   Pin   Velocidad   Identidad   Datos    de datos

Serout   RA1      t9600          A            ‘D’           ‘5’

Yo estoy acostumbrado a utilizar SPI a dos hilos sobre pin TX y RX


 E me pregunto si la declaración en CSS

#use rs232(baud=9600, xmit=PIN_A1, rcv=PIN_A1)

Seguido da comandos tipo: putchar() o getchar();

¿Valdría?

Como veis xmit y rcv trabajarían en el mismo pin.
Esto me preocupa para administrar las identidades de los dispositivos

Gracias por vuestra atención…

PS.:
 Deimos ¿porque tendría che preguntar en el forum de picbasic?
 Si lo que voy hacer es cambiar  todo el software Basic con C…

¿Qué tiene un programador Basic que no tenga un Programador de C?

niroblock

  • Visitante
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #6 en: 17 de Marzo de 2007, 08:35:57 »
A mi también me gustaría poderlo reprogramarlo en C18 che además es el compilador con el cual programo  los módulos Ethernet, y pienso que es el mas funcional de todos los compiladores  superado solo por C30..

Pero el 18f1320 es una mie….. Y no entran más de 8kb de programa  si che solo a cargar delay.h, adc.h, usart.h  o spi.h el PIC se queda pequeño

Almeno que alíen sepa de un pic con el mismo mapeo de los pin, pero con mas memoria de programa, esto me permitiría utilizar mis librerías en C18

En el post anterior cometí un error el compilador es CCS: no CSS tengo la cabeza echa una ….

Gracias a todos por vuestra atención a mis post’s., empieza a gustarme mas este forum que lo de microchip…
Lo aconsejaré a mis amigos..

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #7 en: 17 de Marzo de 2007, 09:09:35 »
niroblock , varios comentarios

1) Ahora que entiendo mejor tu problema, creo que sí debieras ir al foro de basic para preguntar allí cómo funciona esa rutina a nivel de hardware.  Al parecer es una usart por software por el pin que se le pasa como parámetro.

2) Los compiladores de C para pics tienen sus cosas acá y allá, pero debes comprender que un microcontrolador no es una pc y que sus recursos son limitados.  Programar en C para un microcontrolador requiere un enfoque diferente al usado en las pcs. Este es el primer escollo que uno enfrenta al usar estos dispositivos.

Si usando seas 4 librerías el pic te ocupa todos los recursos realmente me parece muy raro.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #8 en: 17 de Marzo de 2007, 11:35:41 »
Bueno, pues tampoco se como funciona serin, pero por lo que muestras en el ejemplo es simplemente una comunicacion RS232, por software, entonces lo que se hace es configurar el pin como entrada  o como salida, dependiendo de la direccion de la comunicacion. debe ser eso.

niroblock

  • Visitante
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #9 en: 17 de Marzo de 2007, 11:52:33 »
Vale preguntaré a lo de Picbasic
Haber que pasa con esta serial (con los simple que es utilizar dos pin)

Conozco muy bien los límites de los PIC y por esto me soy planteado de programarlo con CCS e todo el ASM que pueda y no con C18

Al ver tu ficha imagino que tienes mucho conocimiento de los procesadores
Si que seguramente sabrás che por ejemplo:
 Un Pentium IV por cuanto aparente ser un procesador muy potente en ejecución,
 Su vida es limitada.
 Si que los Sistemistas de (Windows,Linux, etc.) han optado con utilizar solo el 50% de   
 sus potencialidad (mira eschema de flujo del Kernel de estos sistemas) noticias

si que las diferencia que tu pones entre la programación  PC y PIC no es del todo exacta
simplemente utilizan una escala de capacidad distinta pero los limites son idénticos

si eres un buen programador y seguramente lo eres
sabes que utilizar al 100% de su capacidad cualquier sistema electrónico o informático, abreviará su vida e su eficiencia.

mis módulos Ethernet(18f6680) utilizan solo el 50% de su capacidad  ,y aun no e tenido que cambiar ni uno desde hace dos años.

Otros amigos han sobrecargado sus procesos y cada 6 meses están obligados a cambiar sus módulos.

 Para no comentar los problemas que la sobrecarga de procesos en lectura y escritura puede causar a una EEPROM interna o externa.

De todo modo agradezco tu comentario y espero acepte el mío.

niroblock

  • Visitante
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #10 en: 17 de Marzo de 2007, 12:27:22 »
Bueno, pues tampoco se como funciona serin, pero por lo que muestras en el ejemplo es simplemente una comunicacion RS232, por software, entonces lo que se hace es configurar el pin como entrada  o como salida, dependiendo de la direccion de la comunicacion. debe ser eso.

 :5]  :5]  :5]  :5]

Para PICmouse: Vaya descubrimiento ¿lo has pensado tu solito?

Lo che hace SERIN no es lo importante
 (Además que hasta  un niño interpretaría su sintaxis)

Solo quería saber si el “use_232” mapeado en el mismo pin pudiera trabajar bien como un SPI o I2C sin interrupciones ni perdida de datos.

……:. :..::.:.   si no me entiedes...

Deimos

  • Visitante
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #11 en: 17 de Marzo de 2007, 21:16:21 »
Niroblock me parece que con esas actitud no conseguirás demasiada ayuda de este foro.

Suerte

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #12 en: 18 de Marzo de 2007, 12:45:29 »
niroblock no sabia que eras el Guru de la programacion, el que todo lo sabe. Bueno, solo te deseo suerte en tu vida, con esa actitud no se consigue nada en la vida.!

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #13 en: 18 de Marzo de 2007, 13:07:53 »
Solo quería saber si el “use_232” mapeado en el mismo pin pudiera trabajar bien como un SPI o I2C sin interrupciones ni perdida de datos.

Las usart por software tienen sus limitaciones cuando se las usa con otras interrupciones habilitadas y si las mismas no están controladas por un timer.

Me explico mejor.

Cuando en una usart por software detectas el 'start' , debes comenzar a recibir el byte completo si o si.  Ese start nunca se sabe cuando vendrá porque precisamente es una comunicación asíncrona, un byte puede venir 2 segundos después que el otro y nadie nos avisará de eso.

Una vez detectado el start (que puede ser por un monitoreo contínuo del puerto o bien por un timer activado cada n useg que lea el pin) los siguientes bits deben ser leídos a un tiempo exacto (o casi exacto) entre bits para que el byte sea interpretado correctamente. 

Si durante esta lectura de los bits a tiempos exactos, se habilita una interrupción en otro periférico es muy probable que te pierdas "un bit" o bien que lo malinterpretes y te quede la recepción corrida algunos useg.

En una usart por hardware esto daría un error de framing, en una usart por software no habrá error alguno.  Es el protocolo que uno usa (empleando cheksums, crc, o lo que a uno le de la gana) el que debe lidiar con estos posibles errores de recepción.

Si tu usart por software, deshabilitará todas las interrupciones durante la detección de los bits del byte entrante, entonces es muy probable que lo recibas bien.

Espero se haya entendido.

Saludos

PD: es cierto que algunos posts no suman al debate pero también debes entender (y te sugiero que así lo hagas) que agrediendo a quien te quiere ayudar no logras nada y hasta te pondrás gente en contra.
Cuando alguien es nuevo en un foro (como lo eres tú en este), nadie te conoce ni puede evaluar si sabes o no sabes del tema y por eso a veces te pueden plantear algún concepto que para tí sea muy obvio.. pero creeme que para muchos que ingresan no lo son y eso es lo que quiso hacer Picmouse.

De la misma forma yo me podría burlar de tí porque no comprendas las limitaciones de una usart por software, sin embargo no lo he hecho. ¿se entiende la idea?

Saludos



« Última modificación: 18 de Marzo de 2007, 13:10:10 por maunix »
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: PUERTO A1 COMO ASINCRONO DE DATOS??
« Respuesta #14 en: 18 de Marzo de 2007, 13:16:09 »
Citar
Para PICmouse: Vaya descubrimiento ¿lo has pensado tu solito?
.....
 (Además que hasta  un niño interpretaría su sintaxis)

La verdad, que da gusto que la gente sepa tanto como vos  :-/ .
Es una lastima que pierdas tu tiempo preguntando cositas en foro. :shock:

Saludos. :mrgreen:
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert