Autor Tema: printf() muy lenta imprimiendo caracteres en RS232  (Leído 8943 veces)

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

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #15 en: 26 de Agosto de 2012, 11:43:08 »
Pregunta 1:
Porque usar una constante y no un string preformateado con esos valores ??

Pregunta 2:
Estas seguro que no te envia 2700 veces el string completo??
Porque no veo que pongas el indice en Valores, y es muy posible que el compilador lo tome como que debe enviar el string completo cada vez...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #16 en: 26 de Agosto de 2012, 11:44:17 »
Si necesitas velocidad podes usar la rutina más eficiente que encuentres y un micro que lo puedas llevar a 60/70 MIPS por ejemplo, los nuevos dsPIC o PIC24E.


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

Desconectado pic32

  • PIC12
  • **
  • Mensajes: 57
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #17 en: 27 de Agosto de 2012, 04:17:00 »
Pregunta 1:
Porque usar una constante y no un string preformateado con esos valores ?? No puedo enviar los numeros como una cadena de string y pista? Teneis algun ejemplo, o poder enviar los numeros preformados float, pero de forma mucho mas rápida

Pregunta 2:
Estas seguro que no te envia 2700 veces el string completo??
Porque no veo que pongas el indice en Valores, y es muy posible que el compilador lo tome como que debe enviar el string completo cada vez...

En cada iteración envio una constante, no toda la matriz númerica. inicializa cada vez el printf() y envia un valor del vector.

No entiendo como tarda tanto en enviar los numeros, si estan utilizando los DSpic para enviar video por VGA.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #18 en: 27 de Agosto de 2012, 05:41:41 »
No entiendo como tarda tanto en enviar los numeros, si estan utilizando los DSpic para enviar video por VGA.

El problema no es el envío, es la conversión de float a string. Si quieres enviar el float sin convertir a string, directamente con los bytes que lo componen, tendrías de sobras.

Desconectado pic32

  • PIC12
  • **
  • Mensajes: 57
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #19 en: 27 de Agosto de 2012, 06:00:36 »
Si eso lo tengo claro, y como puedo enviar directamente los bytes que lo componen? te refieres a usar puts() ?

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #20 en: 27 de Agosto de 2012, 09:19:50 »
Para enviar un flotante de 32 bits podes hacer:

Código: C
  1. float temp=12.3;
  2.  
  3. putc(*((char*)&temp));    // <- LSB
  4. putc(*((char*)&temp+1));
  5. putc(*((char*)&temp+2));
  6. putc(*((char*)&temp+3));
No contesto mensajes privados, las consultas en el foro

Desconectado pic32

  • PIC12
  • **
  • Mensajes: 57
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #21 en: 27 de Agosto de 2012, 09:46:20 »
he probado tu codigo y lo he grabado en el DSPic, imprime en pantalla lo siguiente:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Asi que o esta muy caliente o algo raro no hace bien al imprimir en ascii

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #22 en: 27 de Agosto de 2012, 09:52:46 »
Enviandolo asi, cada dato deberas volver a componerlo en float cuando vayas a usarlo. :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pic32

  • PIC12
  • **
  • Mensajes: 57
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #23 en: 27 de Agosto de 2012, 10:52:29 »
jajaj ya entiendo, pero como pasar de ascii a formato float?

Desconectado pic32

  • PIC12
  • **
  • Mensajes: 57
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #24 en: 28 de Agosto de 2012, 05:39:09 »
al final los mejores resultados los estoy logrando con:


for(i=0;i<2700;i++)

{    putc(*((char*)&vis));    // <- LSB
    putc(*((char*)&vis+1));
    putc(*((char*)&vis+2));
    putc(*((char*)&vis+3));
}
Aun asi da una imagen cada 1.4 segundos, esta lejos de tiempo real, pero al menos ya no tarda 1 minuto, en imprimir una imagen estelar    :P

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #25 en: 28 de Agosto de 2012, 15:38:09 »
Si necesitas más velocidad tienes que cambiar de tecnología, quizás SPI o paralelo.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #26 en: 28 de Agosto de 2012, 17:56:51 »
Y porque no subirla a 115200 Bps ??
Tardarias 1/4 de ese tiempo... :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pic32

  • PIC12
  • **
  • Mensajes: 57
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #27 en: 29 de Agosto de 2012, 07:43:54 »
ya lo probe a esa velocidad 115200 bps pero no tira. la velocidad limite lo establece el conversor FT232RL

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: printf() muy lenta imprimiendo caracteres en RS232
« Respuesta #28 en: 29 de Agosto de 2012, 08:23:50 »
Heyyy !!!
Yo estoy usando un conversor de esos a esa velocidad !!
Por que dices que no tira??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.