TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micronet3 en 10 de Febrero de 2010, 18:22:02

Título: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 10 de Febrero de 2010, 18:22:02
hola, amigos del foro, bueno les cuento que he estado viendo la forma, de enviar  codigo ascci al microcontrolador, especificamente el 16f628, me reconoce perfectamente el codigo ascii normal (0-127), pero el codigo ascii extendido(128-255) los valores ya no concuerdan, alguien sabe mas o menos a que se debe, o sera que el microcontrolador todavia no reconoce el codigo ascii extendido.
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: migsantiago en 10 de Febrero de 2010, 19:06:12
El código ascii depende estrictamente del compilador y no del microcontrolador.

Asegúrate de que los bytes del 128 al 255 que envía tu aplicación en la PC realmente sean bytes ascii (1 byte por caracter) y no código Unicode (2 bytes por caracter).

http://en.wikipedia.org/wiki/Unicode
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 10 de Febrero de 2010, 20:30:52
he visto. la tabla de el unicode y no concuerda  con lo que el pic me devuelve

yo utilizo el siguiente codigo

byte rx;
rx=getc();
printf(rx);

bueno envio el caracter ascii al microcontrolador y este me devuelve asi estoy viendo los caracteres que me generan el codigo ascii, los estoy simulando en proteus y  envio el caracter al microcontrolador por el virtual teminal, presionando alt+codigo ascci.

todavia no he encontrado la solucion.

Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 10 de Febrero de 2010, 20:39:34
mmm bueno como estoy simulando el proteus, entonces dependera del proteus la codificacion
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: migsantiago en 10 de Febrero de 2010, 22:43:31
Prueba con putc(rx);
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 11 de Febrero de 2010, 11:59:19
pues que curioso, solo me funciona el codigo ascii estandar, el codigo ascii extendido me devuelve numeros negativos y comienza a decrecer, aqui les adjunto los valores que me genero el proteus. seguire averiguando
si probe con putc amigo migsantiago pero me devuelve el mismo valor.
estos valores quiero utilizarlo para controlar luces rgb, a sugerencia del amigo mlo



letra=€ ascii=-128
letra= ascii=-127
letra=‚ ascii=-126
letra=ƒ ascii=-125
letra=„ ascii=-124
letra=… ascii=-123
letra=† ascii=-122
letra=‡ ascii=-121
letra=ˆ ascii=-120
letra=‰ ascii=-119
letra=Š ascii=-118
letra=‹ ascii=-117
letra=Œ ascii=-116
letra= ascii=-115
letra=Ž ascii=-114
letra= ascii=-113
letra= ascii=-112
letra=‘ ascii=-111
letra=’ ascii=-110
letra=“ ascii=-109
letra=” ascii=-108
letra=• ascii=-107
letra=– ascii=-106
letra=— ascii=-105
letra=˜ ascii=-104
letra=™ ascii=-103
letra=š ascii=-102
letra=› ascii=-101
letra=œ ascii=-100
letra= ascii=-99
letra=ž ascii=-98
letra=Ÿ ascii=-97
letra=  ascii=-96
letra=¡ ascii=-95
letra=¢ ascii=-94
letra=£ ascii=-93
letra=¤ ascii=-92
letra=¥ ascii=-91
letra=¦ ascii=-90
letra=§ ascii=-89
letra=¨ ascii=-88
letra=© ascii=-87
letra=ª ascii=-86
letra=« ascii=-85
letra=¬ ascii=-84
letra=­ ascii=-83
letra=® ascii=-82
letra=¯ ascii=-81
letra=° ascii=-80
letra=± ascii=-79
letra=² ascii=-78
letra=³ ascii=-77
letra=´ ascii=-76
letra=µ ascii=-75
letra=¶ ascii=-74
letra=• ascii=-73
letra=¸ ascii=-72
letra=¹ ascii=-71
letra=º ascii=-70
letra=» ascii=-69
letra=¼ ascii=-68
letra=½ ascii=-67
letra=¾ ascii=-66
letra=¿ ascii=-65
letra=À ascii=-64
letra=Á ascii=-63
letra=Â ascii=-62
letra=Ã ascii=-61
letra=Ä ascii=-60
letra=Å ascii=-59
letra=Æ ascii=-58
letra=Ç ascii=-57
letra=È ascii=-56
letra=É ascii=-55
letra=Ê ascii=-54
letra=Ë ascii=-53
letra=Ì ascii=-52
letra=Í ascii=-51
letra=Î ascii=-50
letra=Ï ascii=-49
letra=Ð ascii=-48
letra=Ñ ascii=-47
letra=Ò ascii=-46
letra=Ó ascii=-45
letra=Ô ascii=-44
letra=Õ ascii=-43
letra=Ö ascii=-42
letra=× ascii=-41
letra=Ø ascii=-40
letra=Ù ascii=-39
letra=Ú ascii=-38
letra=Û ascii=-37
letra=Ü ascii=-36
letra=Ý ascii=-35
letra=Þ ascii=-34
letra=ß ascii=-33
letra=à ascii=-32
letra=á ascii=-31
letra=â ascii=-30
letra=ã ascii=-29
letra=ä ascii=-28
letra=å ascii=-27
letra=æ ascii=-26
letra=ç ascii=-25
letra=è ascii=-24
letra=é ascii=-23
letra=ê ascii=-22
letra=ë ascii=-21
letra=ì ascii=-20
letra=í ascii=-19
letra=î ascii=-18
letra=ï ascii=-17
letra=ð ascii=-16
letra=ñ ascii=-15
letra=ò ascii=-14
letra=ó ascii=-13
letra=ô ascii=-12
letra=õ ascii=-11
letra=ö ascii=-10
letra=÷ ascii=-9
letra=ø ascii=-8
letra=ù ascii=-7
letra=ú ascii=-6
letra=û ascii=-5
letra=ü ascii=-4
letra=ý ascii=-3
letra=þ ascii=-2
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 11 de Febrero de 2010, 12:09:21
upps ahi me equivoque en el formato, ya lo corregi parece que estoy cerca de la solucion

el formato correcto seria
printf("letra=%c ascii=%u\n\r",i,i);

el anterior que utilize es
printf("letra=%c ascii=%d\n\r",i,i);
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 11 de Febrero de 2010, 12:33:01
pues, he generado el codigo ascii en el microcontrolador y lo he enviado a la PC, he comparado los caracteres generado con el codigo ascii y con el codigo ascii extendido, pues son iguales, no hay problema.

pero cuando envio desde la pc, ahi esta la cuestion

por ejemplo envio el codigo asccii 199 y me devuelve otro valor(195) por eso no concuerdan los valores
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: bmfranky en 11 de Febrero de 2010, 15:28:56
Hola micronet3 , si estas utilizando css, ¿tuviste en cuenta que para el compilador todas las variables char , son por defecto, unsigned, de 0 a 127 y despues se vuelven negativas?. chequealo y después me comentas. :mrgreen:
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: migsantiago en 11 de Febrero de 2010, 17:46:50
Hola micronet3 , si estas utilizando css, ¿tuviste en cuenta que para el compilador todas las variables char , son por defecto, unsigned, de 0 a 127 y despues se vuelven negativas?. chequealo y después me comentas. :mrgreen:

Cuidado, en CCS un char equivale a un unsigned int8.

http://img521.imageshack.us/img521/1408/dibujoyy.png
(http://img521.imageshack.us/img521/1408/dibujoyy.th.png) (http://img521.imageshack.us/img521/1408/dibujoyy.png)
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 11 de Febrero de 2010, 18:19:14
si por ejemplo si le pongo el formato: printf("%d\n\r",i); efecticvamente llega hasta 128 y despues comienza a decrecer, pero:
cuando le doy el formato printf("%u\n\r",i); entonces si llega a contar hasta 255,

Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 11 de Febrero de 2010, 18:25:10
que sea de tipo unsigned int8 quiere decir que puede contar de 0 a 255.

utilizando la siguiente codificación en la rutina de interrupcion del usart

#int_rda
void int_usart()
{
char rx;
rx=getc();
printf("%u",rx);
buffer[CaracteresRecibidos]=rx;
if(rx==13)
ComandoRecibido=true;
else
CaracteresRecibidos=CaracteresRecibidos+1;
}



cuando envio el codigo ascii 198, este me devuelve el valor de 227. la incongnita es porque me devuelve un valor distinto si solo le estoy diciendo que me regrese el caracter ascii que le he enviado?
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 11 de Febrero de 2010, 18:26:34
migsantiago si he probado con putc y me pasa lo mismo, ahora le he puesto printf para ver el codigo ascii y de esa manera comprobar.
saludos
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: migsantiago en 11 de Febrero de 2010, 18:46:33
cuando envio el codigo ascii 198, este me devuelve el valor de 227. la incongnita es porque me devuelve un valor distinto si solo le estoy diciendo que me regrese el caracter ascii que le he enviado?


Pues entonces tendrás que revisar qué está enviando tu aplicación en Windows. Usa la hyperterminal con eco (pin rx y tx de tu pc puenteados) para ver qué está enviándose.
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: bmfranky en 12 de Febrero de 2010, 05:14:59
Perdonad , chicos , es que en el manual que yo leí, ponía, que no se comportaba como el c standar , y asignaba al char el valor signed int. =0->127->-1->-127.
Perdonad la confusión... :(
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: bmfranky en 12 de Febrero de 2010, 05:25:57
Por cierto Micronet3 , parece como si estuviera descontando te el valor de las primeras letras ascii que no son inprimibles, que programa usas para comunicar con el pic,¿ es el hiperterminal?, si es así ,recuerda que puede trabajar con el ascii de 7 bits, que no es del todo compatible con el de 8 bits. revisa la configuración del mismo, para caracteres hasta el 127 no notaras pega, pero después el resultado es imprevisible.
Revisa también el tipo de fuente que utilices, no todas las letras tienen el mismo valor bajo windows..
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 12 de Febrero de 2010, 17:16:57
mmmm, estoy enviando los datos desde un programa en visual basic, lo que esta pasando es que el visual basic envia codigo unicode,y creo que el microcontrolador al recibirlo lo interpreta como codigo ascii. que piensan ustedes?
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: migsantiago en 12 de Febrero de 2010, 21:19:21
Unicode... 2 bytes por caracter.

ASCII... 1 byte por caracter.
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 13 de Febrero de 2010, 12:59:30
ya he llegado una solucion, en ves de enviar caracteres estoy enviando especificamente  bytes de 8 bits desde un programa hecho en visual basic y le llega perfectamente los valores
muchas gracias a todos.

un saludos
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 13 de Febrero de 2010, 13:40:19
y cualquier duda respondere con todo gusto

saludos
Título: Re: trabajar con el codigo ascii extendido en el microcontrolador
Publicado por: micronet3 en 13 de Febrero de 2010, 14:19:39
amigo migsantiago, muchas gracias por tu ayuda, si efectivamente se tiene que enviar un byte y no el codigo unicode que es el que utiliza por defecto el visual basic