Autor Tema: puts() y gets()  (Leído 15910 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: puts() y gets()
« Respuesta #15 en: 22 de Junio de 2009, 04:41:34 »
pues efectivamente, tienen razon asi si funcionan, busque informacion de la funcion fprintf y encontre lo siguiente

Función fprintf ANSI C

int fprintf(FILE *stream, const char *formato, ...);

Esta función envía datos al stream apuntado por stream, bajo el control de la cadena apuntada por formato que especifica cómo los argumentos posteriores son convertidos para la salida. Si hay argumentos insuficientes para el formato, el comportamiento no está definido. Si el formato termina mientras quedan argumentos, los argumentos restantes son evaluados (como siempre) pero ignorados. La función retorna control cuando el final de la cadena de formato es encontrado.


Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: puts() y gets()
« Respuesta #16 en: 25 de Junio de 2009, 09:14:36 »
Ahora lo que estoy pensando es agregarle un relog en tiempo real, que puede ser el ds1307.
este CI funciona mediante el bus I2C, una duda, se puede comunicar este bus por software? o es necesario que el pic tenga implementado este periferico por hardware, o este depende de la libreria que se esta utilizando.
yo he visto varias librerias en el internet y estoy viendo cual de ellas es la mas conveniente.


Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: puts() y gets()
« Respuesta #17 en: 25 de Junio de 2009, 10:29:37 »
Hola.

Si usas el CCS si se puede trabajar el i2c por software, de hecho, CCS lo trabaja por software por default.
El papel lo aguanta todo

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: puts() y gets()
« Respuesta #18 en: 29 de Noviembre de 2009, 14:38:05 »
Que tal amigos!
Voy a aprovechar este post para ver si alguien me puede decir que estoy haciendo mal o que le falta a mi programa  :(

Citar
#include <18f252.h>
#use delay (CLOCK = 40000000)
#fuses H4,PUT,NOWDT,NOSTVREN,CCP2C1,NOOSCSEN

#use rs232(baud=9600, xmit=pin_b7, rcv=pin_b6,stream=computadora)

#define LCD_ENABLE_PIN  PIN_C2                                  
#define LCD_RS_PIN      PIN_C0                                  
#define LCD_RW_PIN      PIN_C1                                  
#define LCD_DATA4       PIN_C4                                  
#define LCD_DATA5       PIN_C5                                  
#define LCD_DATA6       PIN_C6                                  
#define LCD_DATA7       PIN_C7

#include <lcd.c>

void main()
{
   char str1[20];
  
   lcd_init();
   while(1)
   {
      gets(str1,computadora);
      printf(lcd_putc,"%s",str1);
    
   }
  
}

Lo pruebo en el proteus y nada no me funciona y en fisico tampoco, no logro ver donde esta el error
Agradezco cualquier ayuda!
Gracias

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: puts() y gets()
« Respuesta #19 en: 29 de Noviembre de 2009, 14:58:04 »
gets termina la recepción de datos cuando recibe salto de linea y retorno de carro, lo estas asiendo así?

Exactamente cual es el problema, no recibís nada?

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: puts() y gets()
« Respuesta #20 en: 29 de Noviembre de 2009, 15:33:30 »
Que tal suky!
Mira como ves en el archivo adjunto que coloque cuando escribo por ejemplo "hola" y presiono enter en la lcd no me aparece nada al igual que en la varible str1  :5]
Se supone que gets deberia ir almacenandome los caracteres que vaya ingresando en str1 hasta que pulse enter y luego me deberia mostrar en la lcd las teclas que pulse pero como ves no hace nada no me almacena los datos en str1 por lo que no me muestra nada la lcd, porque?
He alli el dilema  :shock:

Saludos

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: puts() y gets()
« Respuesta #21 en: 29 de Noviembre de 2009, 16:19:11 »
No funciona  :5] Si se lee byte a byte hasta leer 0x0D con getc funciona  :shock:




Off topic: Gooool Del Barca  :-/  :mrgreen:
No contesto mensajes privados, las consultas en el foro

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: puts() y gets()
« Respuesta #22 en: 29 de Noviembre de 2009, 16:27:01 »
Hola suky
Si con getc funciona perfecto pero con el gets nada de nada de hecho probe el ejemplo que coloca la ayuda donde esta el gets y no funciona debe ser un bug al que no le han parado mucho la gente del ccs, porque en input.c utilizan el getc para capturar el string  :shock:

Bueno alli queda eso para los que se les ocurra entrar en el misterioso mundo del gets  :D

Saludos

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: puts() y gets()
« Respuesta #23 en: 29 de Noviembre de 2009, 21:15:36 »
Buenas!
Revizando el programa con la ayuda del maestro palitroquez he podido resolver el problema  :-/ :mrgreen:
La falla se deriba del proteus  :shock:   si otra vez me dejo mal mi querido simulador  :(
pero bueno nada es perfecto  :D

Les adjunto el programa con el nuevo diseño  ;-)

Saludos

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: puts() y gets()
« Respuesta #24 en: 29 de Noviembre de 2009, 21:19:18 »
nooo vale jeje ni que maestro voy a ser yo   :)

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: puts() y gets()
« Respuesta #25 en: 29 de Noviembre de 2009, 21:21:55 »
La falla se deriba del proteus  :shock:   si otra vez me dejo mal mi querido simulador  :(

 :D :D Era de esperar  :5]

Hay que hacerle caso a Santiago me parece  :mrgreen: Grande Pali!!



Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: puts() y gets()
« Respuesta #26 en: 30 de Noviembre de 2009, 00:51:02 »
Bueno bueno sigo en la lucha con el gets  :shock:
Probe el codigo con un pic18f252 en fisico y lamentablemente tampoco funciono  :5] apenas tenga un chance pruebo con un pic16f876A para ver, si definitivamente el problema esta en el proteus o en el CCS  :shock:
No se si sera mi codigo que no le gusta al pic o al ccs pero bueno si alguien tiene un pic18f252 y lo puede probar en fisico o postar aqui un codigo de prueba no estaria de mas y asi salgo de la duda  :mrgreen:
 

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: puts() y gets()
« Respuesta #27 en: 01 de Diciembre de 2009, 21:28:47 »
Que tal amigos!
Coloco esta informacion para corregir algunas cosas que escribi arriba  :mrgreen:
Realizando pruebas con el pic 18f252 operando a 40Mhz los resultados obtenidos, fueron que el ccs falla cuando el pic opera a esa velocidad con el gets  :shock:  asi es amigos el problema no se debe al proteus sino al ccs!.
El problema lo solvente cambiando el cristal por uno de 4Mhz y luego con uno de 20Mhz, con ambos probe y el gets funciona como se debe, pero, si coloco un cristal de 10Mhz y activo el pll el gets falla  :5]
Les coloco esta aclaratoria que considere pertinente y para corregirme a mi mismo!

Saludos

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: puts() y gets()
« Respuesta #28 en: 01 de Diciembre de 2009, 23:14:41 »
Recuerdo ahora que un forero uso un cristal de 8MHz u otro (no recuerdo bien) y no le funcionaba bien la transmisión serial. Raro, raro ..... !!!! nada raro tratándose de CCS.

Saludos
El papel lo aguanta todo

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: puts() y gets()
« Respuesta #29 en: 01 de Diciembre de 2009, 23:42:20 »
Asi es MLO_

Yo lo probe con un cristal de 20Mhz y trabaja fino el problema esta cuando uno opera a alta frecuencia de hecho probe con un cristal de 4Mhz y el PLL activado (16Mhz) y funciona bien pero cuando le meto un cristal de 10Mhz para que opere a 40Mhz no trabaja.
Por lo visto la libreria no esta ajusta bien para operar a altas frecuencias  :(


 

anything