Autor Tema: Otra vez yo - Ahora con RS232  (Leído 4275 veces)

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

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
Otra vez yo - Ahora con RS232
« en: 30 de Noviembre de 2004, 15:00:00 »
Hola Jorge, disculpame que te moleste nuevamente, pero estoy intentando realizar un proyecto que salio en un curso de CEKIT, es para recibir señales analogicas y mandarlas a la PC via rs232.

Y no doy pie con bola. Hice un programa sencillo en el niple, para probar y que envie un dato cualquiera, y no funciona.

Ademas, cuando activo la casilla de comunicacion, me aparece el mensaje "recuerde que TX debe estar seteado en 1" o algo asi.

Que es ese TX? Como hago para setearlo en 1? Ya que probablemente ese sea el problema.

gracias de antemano, y disculpame una vez mas por hinchar con cosas elementales, pero recien estoy empezando y no entiendo casi nada.

saludos
Dario

Desconectado _Canito_

  • PIC12
  • **
  • Mensajes: 74
RE: Otra vez yo - Ahora con RS232
« Respuesta #1 en: 30 de Noviembre de 2004, 20:38:00 »
Hola Dario,

Por convención se llama TX al pin por donde el micro envia datos y se llama RX al pin por donde el micro recibe los datos.
Por norma electrica, el protocolo RS232 esta en Alto (1) mientras no se transmiten datos, al iniciar una comunicación, se envia un cero.

Por esto la linea de TX (pin por el cual el micro va  transmitir datos) debe estar en 1. esto se hace asignando el valor 1 al pin que vas a utilizar para transmitir datos a la PC.

Esto se hace insertando un bloque se asignacion a bit.
Ingresa a Rutinas Basicas/Asignacion/Asignar varlor a bit

Seleccionas el pin por el cual vas  transmitir datos y le asignas el valor 1.

Esto tenes que hacerlo al iniciar el programa inmediatemente despues de configurar el puerto.

Un saludo
Jorge.

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Otra vez yo - Ahora con RS232
« Respuesta #2 en: 01 de Diciembre de 2004, 09:39:00 »
Hola Jorge, mil gracias!!!!!!!!!!!!!Rebotado

Ya funciona casi perfecto, ademas ahora tengo mas claro lo del TX y RX.

Pero tuve algunos problemitas,  y quisiera hacerte mas consultas. En primer lugar, logre que se comunique con el hiperterminal, pero no envia lo que yo le puse.

Yo puse que envie el valor decimal 50, y me aparece un codigo ascii, no se porque. Despues voy a probar si enviando un valor binario, funciona bien. Tenes idea que me puede estar pasando?

Otra cosita. Cuando uso la temporizacion por bucle, el WDT esta desactivado. Pero en el curso de Cekit, de donde saque el proyecto, dice que debe estar activado para que funcione bien el rs232. Puede ser ese el problema? Que alternativa hay para temporizar de otra manera?

La 3°: Como puedo hacer para que el hiperteminal reciba un dato, baje de renglon y reciba el siguiente, y asi? Se puede hacer desde Niple? O poner una coma entre datos, algo por el estilo.

Desde ya, muchisimas gracias por tu tiempo.

Con respecto al Niple, yo estoy a punto de hacer que la empresa en la que trabajo compre las licencias para las dos versiones, F84 y F87x, pero lei por ahi que estas trabajando parar  que funcione con elr esto de la flia (puntualmente me interesa el F877, de 40 pines)

Eso va a tardar mucho? Si compro ahora la licencia, despues me la actualizas o tengo que volver a comprar?

Gracias y saludos
Dario

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Otra vez yo - Ahora con RS232
« Respuesta #3 en: 01 de Diciembre de 2004, 14:03:00 »
Hola otra vez, me olvide una consultita mas.

Donde puedo ver cuantos bit usa para comunicarse (6,7 u 8), y cuantos bit son de parada?.

gracias
Dario

Desconectado williambal

  • PIC10
  • *
  • Mensajes: 3
RE: Otra vez yo - Ahora con RS232
« Respuesta #4 en: 24 de Enero de 2005, 07:35:00 »
hola dario, yo estoy comenzando un proyecto en el cual tengo que enviar un tren de 8 bits en binario a un pc, via rs232, y creo que tiene mucho que ver con tu proyecto. la cuestion es que yo no tengo el niple, asi que queria saber si me puedes facilitar lo que has adelantado el formato asm. otra cosa que quiero saber es que pic estas usando...

Gracias...

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Otra vez yo - Ahora con RS232
« Respuesta #5 en: 07 de Febrero de 2005, 09:08:00 »
Hola williambal

Disculpa la demora. Te paso lo que hice, pero si sos nuevo como yo, te recomiendo desde ya que utilices este programa, porque es buenisimo y ahorra muchisimo tiempo. Podes bajarte una demo desde la pagina webb de Niple (www.niplesoft.com.ar) y la version full no es muy cara.

Yo uso un 16F84, conectado a un max232 para la comunicacion rs232.  Este es el programa que use para probar, envia un valor decimal, espera 2 segundo, y despues envia otro. Te adjunto el archivo, cualquier cosa decime.

Ah, y tambien te dejo un programa que es para ver los datos en la PC, es muy util porque podes ver el dato que estas recibiendo en binario, decimal y hexa.

Avergonzado Mala suerte, no puedo subir los archivos.

Te adjunto aca el asm, si queres mandame una direccion de mail y te envio el otro programita.

Saludos
Dario


;------------------------------------------------------------
; Código assembler generado por Niple.
; Nombre del Proyecto:
; Autor: Desarrollo Niple.
; Fecha: 10/12/2004
; PIC: 16F84
; Velocidad de reloj: 4 Mhz
; Descripcion:
;------------------------------------------------------------


 LIST    P=PIC16F84


;------------------------------------------------------------
;                  Declaración de Registros
;------------------------------------------------------------
w                     equ  00h
status                equ  0x03
portb                 equ  0x06
_np_temp1             equ  0x0c
_np_temp2             equ  0x0d
_np_temp3             equ  0x0e
_np_config_interrup   equ  0x0f
_np_tiempo            equ  0x10
_np_tiempo1           equ  0x12
_np_tiempo2           equ  0x13
_np_tiempo3           equ  0x14
trisb                 equ  0x86


;------------------------------------------------------------
;                  Declaración de Bits
;------------------------------------------------------------
c               equ  0   ;carry / borrow bit
rb4             equ  4   ;bit 4 del puerto b
rp0             equ  5   ;registrer banck select bit


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

reset   org 0
   goto paso2


;------------------------------------------------------------
;                      programa principal
;------------------------------------------------------------
paso2
   movlw b"00000000"      ;configurar el puerto b como ssssssss
   bsf status,rp0         ;cambiar a pagina 1
   movwf trisb
   bcf status,rp0         ;cambiar a pagina 0
   bsf portb,rb4
   ;enviar un dato mediante comunicacion rs232
   movlw d"35"
   movwf _np_temp1
   call rs232_tb4_1200
   ;temporizador 2 seg
   movlw .2
   call tiempo_1_255_seg
   ;fin del temporizador 2 seg
   ;enviar un dato mediante comunicacion rs232
   movlw d"33"
   movwf _np_temp1
   call rs232_tb4_1200
   ;temporizador 2 seg
   movlw .2
   call tiempo_1_255_seg
   ;fin del temporizador 2 seg
   goto paso2             ;     cierra el ciclo


;------------------------------------------------------------
;                  Declaración de Subrutinas
;------------------------------------------------------------

rs232_tb4_1200
   ;enviar un dato rs232 por portb,4 (por codigo)
   ;_np_temp1 = dato a enviar
   ;_np_temp2 = contador de bits
   movlw .8
   bcf status,rp0         ;cambiar a pagina 0
   movwf _np_temp2
   bcf portb,4
   call tiempo_1200_bd
rs232_tb4_1200_tx_otro
   bcf portb,4
   bcf status,c
   rrf _np_temp1,1
   btfsc status,c
   bsf portb,4
   call tiempo_1200_bd
   decfsz _np_temp2,1
   goto rs232_tb4_1200_tx_otro
   bsf portb,4
   call tiempo_1200_bd
   return


tiempo_1_255_seg
   movwf _np_tiempo
   goto tiempo_1_255_seg_1
tiempo_1_255_seg_bucle2
   nop
   nop
   nop
   nop
   nop
   nop
   nop
tiempo_1_255_seg_1
   movlw .10
   movwf _np_tiempo1
tiempo_1_255_seg_bucle1
   nop
   nop
   movlw .99
   movwf _np_tiempo2
tiempo_1_255_seg_bucle0
   nop
   nop
   nop
   movlw .200
   movwf _np_tiempo3
tiempo_1_255_seg_bucle
   nop
   nop
   decfsz _np_tiempo3,1
   goto tiempo_1_255_seg_bucle
   nop
   nop
   nop
   decfsz _np_tiempo2,1
   goto tiempo_1_255_seg_bucle0
   nop
   nop
   nop
   decfsz _np_tiempo1,1
   goto tiempo_1_255_seg_bucle1
   decfsz _np_tiempo,1
   goto tiempo_1_255_seg_bucle2
   return


tiempo_1200_bd
   ;temporizador de un bit a 1200 baudios
   movlw .205
   bcf status,rp0         ;cambiar a pagina 0
   movwf _np_temp3
tiempo_1200_bd_bucle
   nop
   decfsz _np_temp3,1
   goto tiempo_1200_bd_bucle
   retlw 0


 End

Desconectado batmand

  • PIC16
  • ***
  • Mensajes: 103
RE: Otra vez yo - Ahora con RS232
« Respuesta #6 en: 07 de Febrero de 2005, 09:11:00 »
Hola williambal

Disculpa la demora. Te paso lo que hice, pero si sos nuevo como yo, te recomiendo desde ya que utilices este programa, porque es buenisimo y ahorra muchisimo tiempo. Podes bajarte una demo desde la pagina webb de Niple (www.niplesoft.com.ar) y la version full no es muy cara.

Yo uso un 16F84, conectado a un max232 para la comunicacion rs232.  Este es el programa que use para probar, envia un valor decimal, espera 2 segundo, y despues envia otro. Te adjunto el archivo, cualquier cosa decime.

Ah, y tambien te dejo un programa que es para ver los datos en la PC, es muy util porque podes ver el dato que estas recibiendo en binario, decimal y hexa.

Avergonzado Mala suerte, no puedo subir los archivos.

Te adjunto aca el asm, si queres mandame una direccion de mail y te envio el otro programita.

Saludos
Dario


;------------------------------------------------------------
; Código assembler generado por Niple.
; Nombre del Proyecto:
; Autor: Desarrollo Niple.
; Fecha: 10/12/2004
; PIC: 16F84
; Velocidad de reloj: 4 Mhz
; Descripcion:
;------------------------------------------------------------


 LIST    P=PIC16F84


;------------------------------------------------------------
;                  Declaración de Registros
;------------------------------------------------------------
w                     equ  00h
status                equ  0x03
portb                 equ  0x06
_np_temp1             equ  0x0c
_np_temp2             equ  0x0d
_np_temp3             equ  0x0e
_np_config_interrup   equ  0x0f
_np_tiempo            equ  0x10
_np_tiempo1           equ  0x12
_np_tiempo2           equ  0x13
_np_tiempo3           equ  0x14
trisb                 equ  0x86


;------------------------------------------------------------
;                  Declaración de Bits
;------------------------------------------------------------
c               equ  0   ;carry / borrow bit
rb4             equ  4   ;bit 4 del puerto b
rp0             equ  5   ;registrer banck select bit


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

reset   org 0
   goto paso2


;------------------------------------------------------------
;                      programa principal
;------------------------------------------------------------
paso2
   movlw b"00000000"      ;configurar el puerto b como ssssssss
   bsf status,rp0         ;cambiar a pagina 1
   movwf trisb
   bcf status,rp0         ;cambiar a pagina 0
   bsf portb,rb4
   ;enviar un dato mediante comunicacion rs232
   movlw d"35"
   movwf _np_temp1
   call rs232_tb4_1200
   ;temporizador 2 seg
   movlw .2
   call tiempo_1_255_seg
   ;fin del temporizador 2 seg
   ;enviar un dato mediante comunicacion rs232
   movlw d"33"
   movwf _np_temp1
   call rs232_tb4_1200
   ;temporizador 2 seg
   movlw .2
   call tiempo_1_255_seg
   ;fin del temporizador 2 seg
   goto paso2             ;     cierra el ciclo


;------------------------------------------------------------
;                  Declaración de Subrutinas
;------------------------------------------------------------

rs232_tb4_1200
   ;enviar un dato rs232 por portb,4 (por codigo)
   ;_np_temp1 = dato a enviar
   ;_np_temp2 = contador de bits
   movlw .8
   bcf status,rp0         ;cambiar a pagina 0
   movwf _np_temp2
   bcf portb,4
   call tiempo_1200_bd
rs232_tb4_1200_tx_otro
   bcf portb,4
   bcf status,c
   rrf _np_temp1,1
   btfsc status,c
   bsf portb,4
   call tiempo_1200_bd
   decfsz _np_temp2,1
   goto rs232_tb4_1200_tx_otro
   bsf portb,4
   call tiempo_1200_bd
   return


tiempo_1_255_seg
   movwf _np_tiempo
   goto tiempo_1_255_seg_1
tiempo_1_255_seg_bucle2
   nop
   nop
   nop
   nop
   nop
   nop
   nop
tiempo_1_255_seg_1
   movlw .10
   movwf _np_tiempo1
tiempo_1_255_seg_bucle1
   nop
   nop
   movlw .99
   movwf _np_tiempo2
tiempo_1_255_seg_bucle0
   nop
   nop
   nop
   movlw .200
   movwf _np_tiempo3
tiempo_1_255_seg_bucle
   nop
   nop
   decfsz _np_tiempo3,1
   goto tiempo_1_255_seg_bucle
   nop
   nop
   nop
   decfsz _np_tiempo2,1
   goto tiempo_1_255_seg_bucle0
   nop
   nop
   nop
   decfsz _np_tiempo1,1
   goto tiempo_1_255_seg_bucle1
   decfsz _np_tiempo,1
   goto tiempo_1_255_seg_bucle2
   return


tiempo_1200_bd
   ;temporizador de un bit a 1200 baudios
   movlw .205
   bcf status,rp0         ;cambiar a pagina 0
   movwf _np_temp3
tiempo_1200_bd_bucle
   nop
   decfsz _np_temp3,1
   goto tiempo_1200_bd_bucle
   retlw 0


 End


 

anything