TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: manex_1987 en 08 de Febrero de 2006, 05:59:00

Título: Problema con #use rs232! (he vueltOoO)
Publicado por: manex_1987 en 08 de Febrero de 2006, 05:59:00
Holaaa estoy aqui de nuevo listo para meteros la petardada, despues de haber acabado los examenes... jejeje

Resulta que se me ha perdido la placa MAX232 que tenia, y nada, cogi 2 resistencias y me hice una interfaz de esas cutres:
TXD------20k--------rx pic
RXD------1k---------tx pic
GND------------------gnd pic

La pega es que la usart debe funcionar en modo invertido... pero como la usart por hardware de mi 18f458 no se puede invertir pues implemento por software:

Codigo:

#include <18f458.h>
#fuses HS,NOWDT
#use delay(clock=20000000)
#use rs232(baud=9600, bits=8,parity=N,xmit=PIN_C6,rcv=PIN_C7,INVERT,FORCE_SW,DISABLE_INTS)



El programa es bien simple, cuando reciba algo, mandar un eco...

Codigo:

   while(1)
   {
      if(kbhit())
      {
      putc(getc());      
      }
   }



Pues bien... mediante un programa visual basic para mandar datos, intento comprobar todo el tinglado.... y fijaros que curioso!

envio  "HOLA" y recibo "HL" ... y si envio "H.O.L.A" recibo "HOLA"...
osea, dicho a grosso modo, el pic coge un caracter, descarta el otro, coge uno, descarta el otro...

El pic es un 18f458 a 20mhz (aunq en el codigo se ve)... y yo ya no se que hacer...

ayudadme plz! jejeje
Título: RE: Problema con #use rs232! (he vueltOoO)
Publicado por: lovando en 08 de Febrero de 2006, 13:17:00
por qué tienes force_sw.....????

quitalo....mejor usa


#include <18f458.h>
#fuses HS,NOWDT
#use delay(clock=20000000)
#use rs232(baud=9600, bits=8,parity=N,xmit=PIN_C6,rcv=PIN_C7,INVERT)

#int_rda
putc(getc());

main(){
 while(1)
}


Saludos
Título: RE: Problema con #use rs232! (he vueltOoO)
Publicado por: manex_1987 en 08 de Febrero de 2006, 16:27:00
elemental querido watson... lo intenté asi al principio principio... pero el compilador da error... dice que el rs232 implementado por hardware no puede ser invertido... y de hecho lo advierte en el archivo de ayuda, en el apartado dedicado a la opcion "INVERT", pone "may not be used with hardware USART". por eso implemento rs232 por soft.
Título: RE: Problema con #use rs232! (he vueltOoO)
Publicado por: lovando en 08 de Febrero de 2006, 19:26:00
Bueno, entonces ponle un 7404 en los pines del USART....y si no tienes, usa transistores para hacer el traslado de niveles

Saludos