TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: elvysr44 en 22 de Diciembre de 2009, 18:25:24

Título: RS 232 pic 16f877
Publicado por: elvysr44 en 22 de Diciembre de 2009, 18:25:24
saludos amigos.
Tengo pocas semanas estudiando los pic, he logrado realizar cietas aplicaciones en lenguaje C, actualmente intento enviar un Msj via puerto serial RS232 para leerlo en el hyperterminal, estoy probando con el codigo abajo mencionado y al compilar  recibo este mensaje

Error   [1098] ../../common/printf.c; 14. conflicting declarations for variable "_printf"

esto es utilizando MPLAP IDE7.10 con Hi-Tech V9.7 como compilador, para todo lo demas me ha funcionado pero en este falle, les agradezco toda ayuda que me puedan brindar.
elvysr44@hotmail.com

#include <pic.h>
#include <pic1687x.h>
#include <htc.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=4000000)
#use rs232(baud=2400, xmit=PIN_C6, rcv=PIN_C7, PARITY=N)

void main(void)
{
do
printf("prueba serial");
while(1);
}
Título: Re: RS 232 pic 16f877
Publicado por: MLO__ en 23 de Diciembre de 2009, 02:02:55
#fuses XT,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=4000000)
#use rs232(baud=2400, xmit=PIN_C6, rcv=PIN_C7, PARITY=N)

Estas definiciones no son del HiTech, si no del CCS. Puede ser ese tu problema.
Título: Re: RS 232 pic 16f877
Publicado por: elvysr44 en 09 de Enero de 2010, 15:39:30
Ok amigos, hace varios dias logre el objetivo que buscaba en funcion al rs 232 con el pic16f877, lo relice con las siguientes herramienta: PICC de CCS y simulé con  isis de pruteus v7.x, todo salio calidad, ahora quiero hacer algo parecido pero con el pic16f84a pero al compilar el ccs me dice que no encuentra el archivo 16f84.h a pesar de que estoy seleccionando el pic desde el proyec wizard, lei que ese archivo se carga desde la instalacion del ccs y alli viene el problema yo tengo la version demo, donde consigo el archivo o la version full "GRATIS" tambien acepto otras ideas.
Título: Re: RS 232 pic 16f877
Publicado por: PalitroqueZ en 09 de Enero de 2010, 16:00:21
Hola elvysr44


Ok amigos, hace varios dias logre el objetivo que buscaba en funcion al rs 232 con el pic16f877, lo relice con las siguientes herramienta: PICC de CCS y simulé con  isis de pruteus v7.x, todo salio calidad...

una pregunta: ¿que compilador usaste para compilar con el 16f877?

porque el hitech en su modo lite soporta el 16f84a

http://www.htsoft.com/products/compilers/piccpro-modes.php


Título: Re: RS 232 pic 16f877
Publicado por: elvysr44 en 09 de Enero de 2010, 16:38:34
Hola elvysr44


Ok amigos, hace varios dias logre el objetivo que buscaba en funcion al rs 232 con el pic16f877, lo relice con las siguientes herramienta: PICC de CCS y simulé con  isis de pruteus v7.x, todo salio calidad...

una pregunta: ¿que compilador usaste para compilar con el 16f877?

porque el hitech en su modo lite soporta el 16f84a

http://www.htsoft.com/products/compilers/piccpro-modes.php




ok el hitech soporta el pic16f84a pero no la directrices #use y # rs232 que aparecen en el inicio de este mensaje, y con ellas manejar el 232 es bastante sencillo asi que cambie de compilador por el Picc de CCS.
Título: Re: RS 232 pic 16f877
Publicado por: Suky en 09 de Enero de 2010, 20:01:15
En el 16F84 en la linea #use RS232 se debe agregar el parámetro force_sw ya que este dispositivo no tiene Hardware UART.


Saludos!
Título: Re: RS 232 pic 16f877
Publicado por: elvysr44 en 10 de Enero de 2010, 13:12:55
Ok, pero mi problema actual es que tengo el CCs version demo y a pesar que en el proyec wizhard seleccione el pic 16f84a al compilar se genera un mensaje  de error diciendo que no se encontro el archivo pic16f84.h, mi pregunta es donde consigo esa libreria para adicionarcela a mi ccs o donde consigo la version full GRATIS ?
Título: Re: RS 232 pic 16f877
Publicado por: migsantiago en 10 de Enero de 2010, 14:14:12
La librería es 16f84.h sin la palabra pic. Ya viene incluida en CCS completo. El demo de CCS no la trae.

http://ccsinfo.com/ccsfreedemo.php?navcode=/rhDemo

Ahí puedes adquirir la versión completa.
Título: Re: RS 232 pic 16f877
Publicado por: elvysr44 en 12 de Enero de 2010, 15:58:50
ok muchas gracis por todas sus colaboraciones y valiosos aporte, logre comunicar el pic 16f877 y el 16f84a en fisico " no simulado " con el hyper terminal de mi PC atraves del puerto rs 232, los resultados obtenidos superaron mis espectativas ahora tengo 02 nuevas metas que las describo a continuacion para que me densus sugerencias.

ok recibo datos via 232 de un equipo "A" , los acondiciono y los envio de regreso via 232 a un equipo "B" incluyendo el valor de la hora en la que recibi los datos , la hora es generada por una pequeña rutina que diseñe pero tiene un retardo de 5seg por cada 90min medidos en tiempo real , acontinuacion les dejo  un segmento del codigo.


void crono(void){
delay_ms(1);
mm++;
if (mm>885){
seg++;
mm=0;
}

if (seg>59){
mn++;
seg=0;
}
if(mn>59)
{
hs++;
mn=0;}

if (hs>23){
hs=0;
mn=0;
seg=0;
mm=0;
}
if(hs>=13){
h24=(hs-12);
st="PM";}
else{
h24=hs;
if(hs==12)
st="PM";
else
st="AM";}
}

main(){

if(kbhit()){
gets(pin);///capturo el valor del rs232
cadena();///acondiciono lo recibido
printf("\r una linea de texto \r");
printf("\r%lu : %lu : %lu   %s\r",h24,mn,seg,st);// imprime la hora calculada en crono

y la segunda es que quiero generar una rutina inteligente donde el puerto rs232 del pic se va auto configurar  osea va a auto detectar la velocidad, paridad y largo de la palabra  teniendo como referencia que debe encontrar un cr o cr/lf en la trama recibida en el 232 para conciderar valida la configuracion, ya que el proyecto actual lo tengo trabajando a (9600 8 n 1)
Título: Re: RS 232 pic 16f877
Publicado por: jhozate en 12 de Enero de 2010, 18:17:53
para el tiempo puedes utilizar la interrupcion del timer1 que te puede dar 1 segundo, es mas preciso y asi te ahorras ese eterno tiempo del delay de 1mS.
saludos
Título: Re: RS 232 pic 16f877
Publicado por: elvysr44 en 13 de Enero de 2010, 15:51:36
para el tiempo puedes utilizar la interrupcion del timer1 que te puede dar 1 segundo, es mas preciso y asi te ahorras ese eterno tiempo del delay de 1mS.
saludos
ok investigare un poco sobre la interrupcion mencionada, mucahs gracias por el aporte