TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jeremylf en 19 de Mayo de 2007, 15:29:40

Título: Limites en RS232 ??
Publicado por: jeremylf en 19 de Mayo de 2007, 15:29:40
Hola a todos, mi duda es saber si el RS232 tiene limites al mostrar variables sumadas o restadas constanmentes, me explico:

Tengo este codigo:

Código: C
  1. #include <18F452.h>
  2. #use delay(clock=4000000)
  3. #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
  4. #use rtos(timer=0,minor_cycle=100ms)
  5.  
  6. #task(rate=1000ms,max=100ms,queue=2)
  7. void The_first_rtos_task ( );
  8.  
  9. #task(rate=500ms,max=100ms,queue=2)
  10. void The_second_rtos_task ( );
  11.  
  12. void The_first_rtos_task ( ) {
  13.    int count=0;
  14.    // rtos_yield allows the user to break out of a task at a given point
  15.    // and return to the same ponit when the task comes back into context
  16.    while(TRUE){
  17.       count++;
  18.       rtos_msg_send(The_second_rtos_task,count);
  19.       rtos_yield ( );
  20.    }
  21. }
  22.  
  23. void The_second_rtos_task ( ) {
  24.    if(rtos_msg_poll( ))
  25.    {
  26.       printf("%i\n\r",rtos_msg_read ( ));
  27.    }
  28. }
  29.  
  30. void main ( ) {
  31.    rtos_run();
  32. }

Lo q hace es mostrar por el RS232 el numero 1 y sumando.... una imagen:
(http://img61.imageshack.us/img61/6294/dibujoel3.th.jpg) (http://img61.imageshack.us/my.php?image=dibujoel3.jpg)

Y bien lo q pasa esq por el numero 140 masomenos, despues se comienza a "malograr" y lo q quiero esq llege hasta... 100000 a mas masomenos, deverdad lo necesito.
Haber si alguien puede ayudarme  :-)


Gracias, un saludo 8) 8) 8)
Título: Re: Limites en RS232 ??
Publicado por: vszener en 19 de Mayo de 2007, 15:33:44
Una variable int, sin signo puede llegar del 0-255, ya que es de 8-bits, con signo llega menos.

Deberás declarar la variable de 16-bits y sin signo para poder albarcar del 0-2^16

Suerte!!! ;)
Título: Re: Limites en RS232 ??
Publicado por: jeremylf en 19 de Mayo de 2007, 15:42:47
 :shock: q raro crei q lo habia cambiado, eso si lo sabia  :? En fin, lo cambie a: unsigned int32 y sige igual se malogra en el numero 127 se va al 128 pero cn signo negative y restandose  :?  creo q es lo de %i tiene q ser %lu creo no estoy seguro..... ¿Alguien?  :lol:


salu2, gracias 8) 8) 8)
Título: Re: Limites en RS232 ??
Publicado por: vszener en 19 de Mayo de 2007, 15:45:38
Pues sí, tambié, tienes que indicar el formato a mostrar por el rs232, en este caso de 16 o 32 bits, %lu o %ld, donde la l significa long si no recuerdo mal....


Suerte!!! ;)
Título: Re: Limites en RS232 ??
Publicado por: jeremylf en 19 de Mayo de 2007, 15:58:52
Pues puse %u y funciono hasta el 255, despues se fue al 1 y asi sucesivamente. Ahora, cuando pongo %lu o %ld me sale el error: PRINT TYPE FORMAT IS INVALID.   :(

¿Q hacer?  :-)


Salu2, gracias. 8) 8) 8)
Título: Re: Limites en RS232 ??
Publicado por: maunix en 19 de Mayo de 2007, 18:21:06
¿Q hacer?  :-)

Mmm, ¿leer el manual? 

Esto no es prueba y error, en el manual tienes que tener los parámetros para imprimir cada tipo de variable.
Título: Re: Limites en RS232 ??
Publicado por: BrunoF en 20 de Mayo de 2007, 02:28:38
Una variable int, sin signo puede llegar del 0-255, ya que es de 8-bits, con signo llega menos.

Deberás declarar la variable de 16-bits y sin signo para poder albarcar del 0-2^16

Suerte!!! ;)

Corrijo: 0 - 2^16-1

Que maaaalo que soyyyy!!!
jaja un saludo.
Título: Re: Limites en RS232 ??
Publicado por: vszener en 20 de Mayo de 2007, 07:23:22
Jeje mira que hice los calculos mentales....algo como 655xx pero dije bah, le pongo en forma exponencial, 2^16 pero como se cuenta el 0 puessss 2^16-1 jeje

PD: 2^16=65536 -1 = 65535


Gracias por la corrección!!! ;)
Título: Re: Limites en RS232 ??
Publicado por: BrunoF en 20 de Mayo de 2007, 08:33:25
Ah pero era pura broma hombre :)