Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: komun_roji en 31 de Agosto de 2010, 08:00:44
Título: AYUDA CON EL C18 Y LA TRANSMISION POR RS 232!!!
Publicado por: komun_roji en 31 de Agosto de 2010, 08:00:44
Hola a todos!!!
Era para ver si me podrias hechar una mano, ando detras del proyecto final de carrera y me estoy intentando familiriazar con el pic y too su mundillo. Ando haciendo un programilla para que el pic me envie el abecedario completo al hyperterminal a la vez que mediante un juego de led q tiene la placa con la que estoy jugando, PICDEM HPC EXPLORER BOARD, me muestre su valor hexadecimal iluminando los correspondioentes led.
Todo creo q esta mas o menos bien hecho, me estado guiando por la marivilla de tutorial de Suky, y mas o menos e sacado algo, lo malo esq el ejemplo de ese tutorial es de recepcion de datos por el pic, no de envio. Hice un programa por mi cuenta pero lo malo esq apedar de funcionar perfectamente los led, en el hyperterminal solo me apraecen Ç, 38 para ser exactos,cuando el abecedario tiene 25, enviandome primero una despues 4, o 3, otra vez 1....Ademas de que intetnto que cuando el rs232 este transmitiendo a traves de la funcion Busyusart, se me enciendo un led exteriror a la placa y no se me enciende.
No se donde podre tener el fallo y llevo ya una semana detras de el...Os dejo el programa aqui y si alguien me pudiera echar una manita se lo agradeceria!!!
if (PORTBbits.RB0==1){ //Leds apagados.- PORTD=0; }
else {
char a=0x61;
char z=0x7A;
for(PORTD=a;PORTD<=z;PORTD++){
Write1USART( PORTD );
Delay10KTCYx(15); //retardo entre letra y letra while (Busy1USART()==1){ //mientras usart transmita encender led aparte de la placa LATAbits.LATA1=1; }
} Close1USART();
} } }
Esperando alma caritativa q responda, gracias por adelantado!!
Título: Re: AYUDA CON EL C18 Y LA TRANSMISION POR RS 232!!!
Publicado por: Suky en 31 de Agosto de 2010, 11:05:03
Hola komun_roji. Habrá muchas más almas caritativas si no rompes las reglas del foro. Todo el titulo en mayúscula, y con la palabra ayuda, hace que muchos se salteen el post. :?
Así como está debería de enviar los caracteres correctamentes, salvo que esté mal configurado el oscilador interno y no esté trabajando a 8MHz. Revisa el datasheet, seguramente en el main hay que setearlo a 8 MHz.
Luego para trabajar correctamente con los registros PORT y LAT, y para que veas el led prendido deberías hacerlo de la siguiente forma:
Código: C
for(LATD=a;PORTD<=z;LATD=++PORTD){
Write1USART( PORTD );
while(Busy1USART()==1){//mientras usart transmita encender led aparte de la placa
LATAbits.LATA1=1;
}
}
Saludos!
Título: Re: AYUDA CON EL C18 Y LA TRANSMISION POR RS 232!!!
Publicado por: komun_roji en 01 de Septiembre de 2010, 05:25:55
Muchas gracias por la respuesta suky!!
Ya ta solucionado, era la velocidad del micro, porque cambie el valor de la velocidad del hyperterminal y me funciono, se me ocurre eso despues de una semana... porq el valor de spbrg lo habia mirado en unas tablas y daba por supuesto q taba bien, pero por la pinta no era asi.
Si nos por ti entre esto y tu tutotial no se si habria hecho algo... gracias!!!