TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: niroblock en 15 de Marzo de 2007, 08:50:14

Título: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: niroblock 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

Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: maunix 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?
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: Deimos 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!!!
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: maunix 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)
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: Deimos 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!!!!!!!

Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: niroblock 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?
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: niroblock 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..
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: maunix 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.
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: LABmouse 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.
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: niroblock 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 (http://www.hackin9.org/html/notices.html)

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.
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: niroblock 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... (http://www.google.es/language_tools?hl=es)
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: Deimos 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
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: LABmouse 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.!
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: maunix 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



Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: aitopes 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:
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: niroblock en 19 de Marzo de 2007, 09:44:55


¡Perdón!  ¡Perdón! ¡Perdón!  ¡Perdón! 

0)            para Todos:

Se que a veces soy un poco borde .

disculpa Picmouse, disculpa Maunix, disculpa Deimos, disculpa Aitopes

 vaya 4 enemigos con  un post se sigo aky monto la 3ª guerra mundial.

¡ES BROMA!   

1)   para Maunix:
Agradezco tu respuesta y procederé con la programación de la Serie con software y implementaré las interrupciones que tu me aconsejas.

He pensado en simular el  protocolo enviado los bit meno significativos hasta obtener el ultimo bit
Ho pensado en trasmitir un octeto a la vez y en el otro lado reconstruirlos y analizar su resultado  e si no es cierto llamar el primer stack
Se que es muy contorcido pero  este pic mueve motores electricos de mucha potencia y no puedo permitirme fallos.
Simplemente me preocupo mucho de que un procedimiento que nunca he utilizado (e que pienso no sea el correcto) pueda ocasionar errores e corte las manos de alíen.
     
2)   para Picmouse:
no quería ofenderte, solo estaba nervioso para tener que hacer un  trabajo importante con limites muy grandes debido a que la electrónica ya esta echa
e no puedo utilizar mis recursos habituales.
 Nada de personal.

Por contestarte al tema del “guru”  no quiero serlo ni presumirlo,
programo desde que tenia 10 años e con 30 tacos  pienso que presumir ser el mejor es la actitud mas estupida que hay .
En ningún momento Ho insinuado ser un guru, solo que al trabajar con más de 10 lenguajes de programación se me hace fácil entender una sintaxis.
Y sin duda el trabajar con demasiados lenguajes  en  algún caso puede ocasionar problemas de interpretación en la estructura del flujo desde un lenguaje a otro.

Simplemente me considero un programador como lo demás.
con mucho que aprender e como todos  programo mas che hablo.
Espero acepte mi disculpas.

3) para Deimos:
       a ti no te hecho nada, ademas fuiste el primero a intender mi
       post.
       lo del codigo fuente dame tu email e te lo envio
       el mio es niroblock@hotmail.com por problemas relacionados con
       mantener mi puesto de trabajo no puedo publicar el codigo echo
       por otros programadores, pero si necitarias alguna rutina echa
       por mi no tengo ningun problema a publicarla por esto estoy en
       el forum.
       mi especialidad son las redes, protocolos, seguridad, bla bla
   
4)   para Aitopes:
Antes de ponerte a la defensiva, déjame que te ofenda primero.
(Estoy bromeando)
     
5)   para los demás:
Este forum me gusta en serio e si alíen del forum de microchip lee esto seguramente ya sabe que estoy como una cabra! Pero aky hay gente mas autentica e con mucha mas mala leche
(Estoy bromeando).

PS.: soy italiano si que se hay errores gramaticales los aguantas
 (Estoy bromeando).
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: maunix en 19 de Marzo de 2007, 10:03:41
Niroblock , me parece muy bien tu actitud.  Realmente has demostrado entereza   :)

Algo raro había en tu escritura, supuse que usabas un traductor o algo parecido.  Ahora que dices que eres de italia, te doy la bienvenida al foro, se te ha entiendido bastante bien.

Mientras no hablemos de Calcio creo que nos vamos a tratar bien  :D :D :D :D :D :D



Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: aitopes en 19 de Marzo de 2007, 11:36:41
Hola!

Por mi parte, esta todo bien. Solo que conozco a PICMouse, y se que sabe bastante mas de lo que hacia presumir tu post.... ;)

Bienvenido al foro.

Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: LABmouse en 19 de Marzo de 2007, 13:45:31
De mi parte están aceptadas las disculpas. Bienvenido al foro y espero poder cruzar mas palabras en el foro en un futuro.

Saludos!


PD: Gracias aitopes por las palabras.  :mrgreen:
Título: (Re: PUERTO A1 COMO ASINCRONO DE DATOS??) ya este asunto sta resuelto
Publicado por: niroblock en 20 de Marzo de 2007, 08:09:03
Gracias a todos  por la bienvenida.
            Ahora empiezo a sentirme de la familia, espero pueda ser un miembro valioso
            en este forum.

             Además a nivel personal estoy estudiando el
              Power Line Communication o (PLC), que no es el PLC de los cuadros
              eléctricos.

             Este sistema de comunicación nos permitirá a todos lo PIC’ermans gracias a un         
             al chip DS2 de conectar nuestros PIC’s sobre una red eléctrica tradicional y
             trabajar a frecuencias de escándalos , permitiéndonos conectar  nuestros PIC’s a
             todo e digo a todo.
             
             Os pongo algún enlace interesante de este tema:
             
                           
                             Power Line Communication (http://es.wikipedia.org/wiki/Power_line_communication)

                             el Chip DS2 (http://www.ds2.es/products/chipset.aspx)

             Y aky los productos que estoy examinando:
                                     
                PLC de la DEVOLO (http://www.devolo.com/co_EN/produkte/dlan/dlan200avsk.html)
                 
               
                PLC de la ALLNET (http://www.allnet.de/product_info_allnet.php?cPath=_&products_id=99958)


                PLC de la NetGear (http://www.netgear.com/Products/PowerlineNetworking.aspx)

             si alíen se apunta a este estudio se podría abrir nueva sala no creéis?
             Yo aportare toda la documentación que pueda.

              MaUnix : el Pseudo-Serial funciona si errores, algo lento pero eficaz
                               Gracias por tus consejos.
               
              Para todos: se necesitáis  un Web Server de escándalo aki lo teneis
                   
                                   Web Server ETRAX 100LX (http://www.acmesystems.it/?id=4)
 
             yo personalmente utilizo lo de Modtronix que es mas barato pero es un buon
             producto
                                 
                                   Web Server Modtronix P18F6680 (http://www.modtronix.com/product_info.php?cPath=1_36&products_id=196)
                             
               
              Espero que esta información se útil para alíen.

             
               Ciao.   8)
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: aitopes en 20 de Marzo de 2007, 09:46:29
Hola!
Citar
             Además a nivel personal estoy estudiando el
              Power Line Communication o (PLC), que no es el PLC de los cuadros
              eléctricos.

             Este sistema de comunicación nos permitirá a todos lo PIC’ermans gracias a un         
             al chip DS2 de conectar nuestros PIC’s sobre una red eléctrica tradicional y
             trabajar a frecuencias de escándalos , permitiéndonos conectar  nuestros PIC’s a
             todo e digo a todo.

¡Parece muy interesante!
Voy a seguir de cerca este tema. ;)
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: LABmouse en 20 de Marzo de 2007, 10:56:03
 :shock:  Muy interesante ese tema  de PLC :shock:
Título: Re: PUERTO A1 COMO ASINCRONO DE DATOS??
Publicado por: Deimos en 21 de Marzo de 2007, 07:22:32
He encontrado estos enlaces que hablan del comando SERIN.

http://www.todomicrostamp.com/blogger/blogall.php?user=lorenzo2

http://www.iua.upf.es/~jlozano/interfaces/interfaces6.html

http://www.todopic.com.ar/pbp_sp.html

espero que te sean de ayuda

Dews!!!!