Autor Tema: RS232 por RF con TWS433 y RWS433  (Leído 5201 veces)

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

Desconectado DroneBorg

  • PIC10
  • *
  • Mensajes: 5
RS232 por RF con TWS433 y RWS433
« en: 16 de Marzo de 2006, 04:30:00 »
Hola, esto trabajando con un proyecto y estoy enviando datos en seria atraves de radioondas de 433MHZ, antes usaba el PicBasic Pro, pero he empezafdo a usar Niple y me ha gustado bastante, se ha hecho facil transmitir datos en serie de PIC a PIC con Cable y de PC a PIC con cable pero al poner el transmisore y el receptor, la señal se degrada demasiado y no llega ningun dato correcto...

Hay alguna forma de hacer algo que imite el funcionamiento del SERIN de PIC Basic Pro...

Explico...

SerIn PORTA.1,N9600,["C"],D1

esa linea de PICBAsicPRo me indica:

Por el PORTA.1 a una velocidad de 9600 bps, espera a que llegue un byte, si es "C" el siguiente byte q recibas guardalo en D1

logicamente desde el PC envio lo siguiente...

MSComm1.Output = "AC" + Chr(xxx)

como uso radioondas, primero envio una A para iniciar la comunicacion y estabilizar posibles fluctuaciones en la señal, luego envio la C y seguidamente el byte que yo quiero q reciba el PIC...

Estas 2 Lineas han estado funcionando correctamente, pero ahora quiero hacerlo con Niple, ya que estoy intentando demostrar q con niple tambien podemos hacer proyectos de robotica.

http://maskax.sourceforge.net



Desconectado pic_es

  • PIC10
  • *
  • Mensajes: 41
Re: RS232 por RF con TWS433 y RWS433
« Respuesta #1 en: 18 de Julio de 2006, 03:33:26 »
Hola desde  El Salvador

Yo he transmitido por usart en rf 315mhz y todo bien con niple
este es un programa generado con niple

;------------------------------------------------------------
; Código assembler generado por Niple V4.0.0
; Nombre del Proyecto: RS232 por RF
; Autor: Emilio Flores.
; Fecha: 17/07/2006
; PIC: 16F877
; Velocidad de reloj: 4 Mhz
; Descripcion:
;------------------------------------------------------------


 LIST    P=PIC16F877


_XT_OSC          EQU  0x3FFD
_DEBUG_OFF       EQU  0x3FFF
_WDT_OFF         EQU  0x3FFB
_PWRTE_ON        EQU  0x3FF7
_BODEN_OFF       EQU  0x3FBF
_LVP_OFF         EQU  0x3F7F
_CPD_OFF         EQU  0x3FFF
_CP_OFF          EQU  0x3FFF
_WRT_ENABLE_OFF  EQU  0x3DFF

 __config _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_ENABLE_OFF & _CP_OFF


;------------------------------------------------------------
;                  Declaración de Registros
;------------------------------------------------------------
w                     equ  00h
status                equ  0x03
portc                 equ  0x07
pclath                equ  0x0a
intcon                equ  0x0b
pir1                  equ  0x0c
opcion                equ  0x181
trisb                 equ  0x186
rcsta                 equ  0x18
rcreg                 equ  0x1a
rf_byte1              equ  0x20
rf_byte2              equ  0x21
rf_byte3              equ  0x22
_np_w                 equ  0x2a
_np_status            equ  0x2b
_np_banderas2         equ  0x2d
trisa                 equ  0x85
trisc                 equ  0x87
trisd                 equ  0x88
trise                 equ  0x89
pie1                  equ  0x8c
txsta                 equ  0x98
spbrg                 equ  0x99
adcon1                equ  0x9f


;------------------------------------------------------------
;                  Declaración de Bits
;------------------------------------------------------------
c               equ  0   ;carry / borrow bit
cren            equ  4   ;
gie             equ  7   ;habilitador general de interrupciones
peie            equ  6   ;ee write complete interrupt enable bit
rcie            equ  5   ;
rcif            equ  5   ;bandera de interrupcion por fin de recepción usart.
rp0             equ  5   ;registrer bank select bit
rp1             equ  6   ;registrer bank select bit
spen            equ  7   ;
z               equ  2   ;bit cero
sub_inte        equ  0   ;bandera de subrrutina cancelada por interrupcion.


;------------------------------------------------------------
;                        Inicio
;------------------------------------------------------------

reset   org 0
   goto paso2
   org 4
   movwf _np_w
   swapf _np_w,1
   movf status,w
   movwf _np_status
   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   btfsc pir1,rcif
   goto interrupcion_rc
salir_interrupcion
   bsf intcon,gie
   bsf _np_banderas2,sub_inte       ;activar la bandera de rutina cancelada por interrupcion
   movf _np_status,w
   movwf status
   swapf _np_w,w
   retfie


;------------------------------------------------------------
;                      inicio de la interrupción por rc usart
;------------------------------------------------------------
interrupcion_rc_salir
   bcf pir1,rcif
   goto salir_interrupcion
interrupcion_rc
   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   bcf intcon,gie                   ;desactivar habilitador general de interrupciones.

inte_rc_usart_3_esperar_byte_1
   btfss pir1,rcif
   goto inte_rc_usart_3_esperar_byte_1
   movf rcreg,w
   movwf rf_byte1
   bcf pir1,rcif
inte_rc_usart_3_esperar_byte_2
   btfss pir1,rcif
   goto inte_rc_usart_3_esperar_byte_2
   movf rcreg,w
   movwf rf_byte2
   bcf pir1,rcif
inte_rc_usart_3_esperar_byte_3
   btfss pir1,rcif
   goto inte_rc_usart_3_esperar_byte_3
   movf rcreg,w
   movwf rf_byte3
   bcf pir1,rcif
   nop                              ;nota: puedes agregar un checksum a los datos recividos
   nop                              ;usar como deseas el byte 3 (dato recivido)
   goto interrupcion_rc_salir
   goto interrupcion_rc_salir

;------------------------------------------------------------
;                      programa principal
;------------------------------------------------------------
paso2
   movlw b'00000000'                ;configurar el puerto e como xxxxxsss
   bsf status,rp0                   ;cambiar a banco 1
   bcf status,rp1
   movwf trise
   movlw b'00000000'                ;configurar el puerto a como xxssssss
   movwf trisa
   movlw b'00000111'                ;puerto a/e = e/s digital
   movwf adcon1
   movlw b'00000000'                ;configurar el puerto b como ssssssss
   bsf status,rp1                   ;cambiar a banco 3
   movwf trisb
   movlw b'10000000'                ;configurar el puerto c como esssssss
   bcf status,rp1                   ;cambiar a banco 1
   movwf trisc
   movlw b'00000000'                ;configurar el puerto d como ssssssss
   movwf trisd
   movlw b'00100110'
   movwf txsta
   movlw .25
   movwf spbrg
   bcf status,rp0                   ;cambiar a banco 0
   bsf rcsta,spen                   ;habilitacion del puerto de comunicacion serial
   bsf rcsta,cren
   bsf intcon,gie                   ;activar habilitador general de interrupciones.
   bsf intcon,peie                  ;activar habilitador general de interrupciones por perifericos.
   bsf status,rp0                   ;cambiar a banco 1
   bsf pie1,rcie                    ;activar interrupción por fin de recepción por usart.
paso8
   nop
   nop
   goto paso8                       ;cierra el ciclo
 End
Lo que compartes es eterno lo demas perece.

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: RS232 por RF con TWS433 y RWS433
« Respuesta #2 en: 15 de Octubre de 2006, 01:51:50 »
cholo si lo pones a 9600 jamas te va a funcionar ... tenes que ponerlo a 2400 o 1200 bps .... demasiado tarde pero por aquello de alguien que haga lo mismo !
Control Automático, DSP & Microcontroladores


 

anything