TODOPIC
Microcontroladores PIC => - Niple - => Mensaje iniciado por: batmand 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
-
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.
-
Hola Jorge, mil gracias!!!!!!!!!!!!!

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
-
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
-
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...
-
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.
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
-
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.
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