TODOPIC
Microcontroladores PIC => - Niple - => Mensaje iniciado por: brio2002 en 22 de Febrero de 2007, 09:25:06
-
Hola a todos:
Estoy tratando de comunicar mediante canal serie un MODEM GSM con el pic 16f876, hasta ahora todo perfecto, el problema viene cuando el MODEM me envía una trama mayor de 48 Bytes, no se como almacenar tal cantidad de Bytes, ya que Niple solo me deja asignar como máximo 48 registros para la comunicación serie, ya sea por UART o por código.
¿Hay algún modo de recibir por ejemplo una trama de 120 Bytes?
Gracias de antemano,
brio2002
-
Hola
Hasta donde se no se puede. Me contré con tu mismo problema en una situación diferente y bueno tampoco encontré la forma de hacerlo, pregunté sobre una posible solución buscando soporte (sin respuesta) :?.........y terminé cambiando de plataforma.
Saludos.
Facundo Solari
-
Muchas gracias Facundo,
Lástima, me hubiese encantado que se pudiera hacer con Niple, pero finalmente me he decantado como tu bien dices, por otra plataforma (MikroBasic) en mi caso , no es tan rápido de programar como Niple, pero para tratar con cadenas es ideal.
Un saludo,
brio2002
-
Yo he pensado en lo mismo pero por dicha todavia no me he enfrentado al problema .. en todo caso .. lo que he notado en el niple es que dentro de la rutina de recepcion del RS se pueden hacer muchas cosas y no solo recibir y ya .. te adjunte un pantallazo de la rutina de recepcion por RS232 de un proyecto que realize .. como podras ver el primer byte que se recibe es de comando .. despues comparo este byte para ver que funcionalidad tiene ese comando y para saber si hay bytes que vienen en cola, no importa si son 2 o 10 el primer byte le dice al pic que se debe hacer ... ahora para tu problema yo utilizaria una memoria RAM por I2C y de manera "recursiva " recibiria el resto de los bytes utilizando un apuntador de direccion (empezando en 0 hasta 119) que se incremente conforme vayan llegando el resto de los bytes ... es decir se recibe un byte se guarda en la RAM, se incrmenta el apuntador y se regresa al bloquesito de recepción todo esto dentro de la rutina de RS232 finalmente cuando el apuntador sea 120 se sale de la rutina ... de manera resumida seria la complementación de un FOR en niple .. De todas maneras para recibir tantos bytes no recomendaria que utiizaras la memoria RAM del pic ya que esta es muy limitada y ademas se utiliza para para los registros que declaramos en el proyecto ... Cualquier duda avisame
-
Hola blackcat22,
Muchas gracias por tu ayuda, la verdad es que he probado el sistema que me comentas pero se me pierden bytes por el camino, es decir, si le envió la siguiente trama: “1 2 3 4 5 6 7 8 9”, solo me almacena “1 3 5 7 9”, he probado de transmitir más lento, a 1.200 baudios, pero el problema persiste, actualmente trabajo con el pic 16f876 con un Xtal de 12 Mhz y no lo consigo, se me pierden esos bytes por el camino.
Por el momento, para hacer pruebas trabajo con la RAM del pic, ciertamente deberé usar una memoria ram (para la cantidad de bytes que utilizo) te agradezco mucho que me hayas hecho caer en ese detalle.
Me he fijado que trabajamos con la misma versión de Niple, si tuvieras alguna rutina te agradecería mucho si me la pudieras enviar, perdona por el atrevimiento :oops: , pero es que estoy atrapado con un proyecto de fin de estudios y la verdad, me sería muy práctico poderlo hacer con Niple.
Nuevamente agradecerte tu ayuda,
brio2002
-
Jorge Cano me mando un codigo parecido a este desde Niple 3, y es como lo he estado usando desde entonces y no he tenido ningun problema.
Te envio la imagen.
Saludos!
-
Miguel Angel
Mike79
-
¡¡¡Al fin lo he conseguido!!!
Me habéis sido de gran ayuda, ¡¡¡ mil gracias!!! al final a sido un poco de todo, inexperiencia y mala suerte ya que he puesto un pic nuevo y entonces todo a empezado a funcionar a las mil maravillas, y encima he aprendido cosas que ni se me hubiesen pasado por la cabeza.
Un saludo,
brio2002