Autor Tema: Problema con #use rs232! (he vueltOoO)  (Leído 2053 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Problema con #use rs232! (he vueltOoO)
« 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

Desconectado lovando

  • PIC16
  • ***
  • Mensajes: 193
RE: Problema con #use rs232! (he vueltOoO)
« Respuesta #1 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

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Problema con #use rs232! (he vueltOoO)
« Respuesta #2 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.

Desconectado lovando

  • PIC16
  • ***
  • Mensajes: 193
RE: Problema con #use rs232! (he vueltOoO)
« Respuesta #3 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