Bueno, les cuento que lo que me recomendaron jansuini, elreypic2 y todopic anduvo de lujo. Le puse el inversor a transistor y anda perfecto, transmite y recibe pero ahora me encuentro con otro problema.
Arme en una protoboard el mismo pic con su oscilador y un MAX232 e intento transmitir y recibir, funciona perfecto.
Luego intento hacer lo mismo pero usando el circuito que esta mas arriba y como ya les dije recibe muy bien de PC a Micro. Luego le pido al micro que haga un eco de lo que transmiti y el me envia el eco pero ademas enpieza a transmitir cualquier verdura.
Por ejemplo:
Envio: 1 ( el caracter uno )
Recibo: 1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Esto es lo que veo yo en el programa de la pc. ( No uso el hyperteminal porque no me deja manejar el RTS ) y si no le corto la corriente sigue indefinidamente.
Probe la pata del inversor, del Max 232 y del max 485 y son los valores que corresponden, es decir se pone el alto cuando tiene que ponerse en alto y en bajo cunado tiene que ponerse en bajo. en la protoboard es asi pero en la placa (Output-digital-schematic.pdf) el pin /RE(2) y DE(3) del integrado MAX485 estan en alto cuando transmite y se queda en alto, pero esto es porque el micro le manda la señal del pin RB0 que yo uso para decirle que todavia hay dato para transmitir.
Entiendo que el Hard esta perfecto y que el problema es el soft, porque es el micro el que deberia darse cuenta de que no hay mas nada para transmitir y deberia ordenarle al MAX485 que se ponga en recepcion pero esto no sucede.
Les adjunto el programa en ASM para que puedan leerlo y me digan que opinan. tambien les pongo en pantalla la parte que para mi es la que tiene problemas.
Les recuerdo que este soft que les mando anda perfecto como eco en caso de ser solo el micro y el max232 en una protoboard.
Funcion enviar:
ENVIAR
bcf STATUS,RP0 ; RAM Page 0
movlw b'00001001' ; Aqui enciendo el led de señalizacion y predispongo al MAX485 para la TX
movwf PORTB
bsf STATUS,RP0 ; banco 1
movlw B'00100000'
movwf PIE1
movlw B'00100100'
movwf TXSTA
bcf STATUS,RP0
movlw B'10010000'
movwf RCSTA
enciendeled ; Aqui va una rutina que demora una fraccion de segundo para poder ver el led encendido
bcf STATUS,RP0 ; RAM Page 0
movfw DATORX ; Aqui va el dato a transmitir previamente recibido
movwf TXREG ; echo data back to sender
bsf STATUS,RP0 ; RAM Page 1
WtHere
btfss TXSTA,TRMT ; (1) transmission is complete if hi
goto WtHere
bcf STATUS,RP0 ; RAM Page 1
movlw b'00000000' ; Pongo en alta impedancia el max 485 y lo predispongo para la RX
movwf PORTB ; y apago el led de indicacion
BCF PORTB,0
return
Quisiera hacer notar que una transmision satisfactoria deberia encender y apagar el LED en una fraccion de segundo, Esto sucede en el caso de la protoboard pero en la placa el led queda prendido continuamente mientras esta enviando.
Es decir:
Protoboard:
Envio: 1
(Enter)
(prende y apaga el led)
Recibo:1
Placa Output-digital-schematic.pdf:
Envio: 1
(Enter)
(prende led)
Recibo:1%%%%%%%%%%%%%%%%%%...
(hasta que no lo desenergizo no se apaga el led y no deja de recibir simbolitos)
Desde ya muchas gracias a todos por la mano que me puedan dar.
ATTE: @rielo