TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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
-
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?
-
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!!!
-
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)
-
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!!!!!!!
-
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?
-
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..
-
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.
-
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.
-
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.
-
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)
-
Niroblock me parece que con esas actitud no conseguirás demasiada ayuda de este foro.
Suerte
-
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.!
-
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
-
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:
-
¡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).
-
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
-
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.
-
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:
-
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)
-
Hola!
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. ;)
-
:shock: Muy interesante ese tema de PLC :shock:
-
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!!!!