TODOPIC
Mecatrónica => DMX512 - Diseños y Proyectos => Mensaje iniciado por: gaston23 en 18 de Enero de 2011, 13:31:57
-
Hola gente, tengo una placa amicus18 que es una placa como arduino pero con pic, el pic que lleva es el 18f25k20, y estoy queriendo probar y experimentar con DMX512, tengo un tranceiver rs485 que es el 75176, Mi idea es poder ver por la consola que trae el amicus el valor que va adquiriendo el canal, quisiera saber si ustedes me pueden ayudar, la manera de conectar el sn75176 fue la que saque de otro POST.
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=29789.0;attach=12880;image)
Y el codigo es el siguiente. ' XTAL 20 'cristal externo de 20MHz
' LCD_DTPIN PORTC.0 'interfase a 4 lineas a partir de portc.0
' LCD_RSPIN PORTC.4 'rs pin
' LCD_ENPIN PORTC.5 'e pin
' LCD_INTERFACE 4 'interfase a 4 lineas
' LCD_LINES 4 'lcd a utilizarr 16x4
Hserial_Baud = 250000 ' Set baud rate to 250k
Hserial_RCSTA = %11010000 ' Enable serial port and continuous receive
Hserial_TXSTA = %01100101 ' Enable transmit and asynchronous mode
Hserial_Clear = On ' Optionally clear the buffer before receiving
All_Digital = TRUE ' todas las entras en modo digital
Dim BREK As Byte 'variables a utilizar en el programa
Dim X As Byte
Dim ST1[10] As Byte ' array que contendra los datos del dmx solo 10 (st1[0] al st1[9])
Dim DUMMY As Byte ' byte encargado de vaciar el buffer de recepcion, antes de recibir
'la señal del dmx
Symbol Rx = PORTB.3 'alias a algunos pines y registros del pic
Symbol SPEN = RCSTA.7
Symbol CREN = RCSTA.4
Symbol RCIF = PIR1.5
DelayMS 500 'retardo para estabilizar el sistema en el arranque
Cls 'borra la pantalla del lcd
GoTo MAIN 'salta a main
ERROR_OERR: 'rutina de chequeo de errores (oerr) leer data sheet
Cls 'boora la lcd
HRSOut "ERROR OERR",13
' Print "ERROR OERR" 'imprime el error en a lcd
' DelayMS 2000 'retardo de 2 seg para visualizar el mensaje en la lcd
GoTo MAIN
ERROR_FERR: 'rutina de chequeo de errores (ferr) leer data sheet
Cls 'boora la lcd
HRSOut "ERROR FEER",13
'Print "ERROR FERR" 'imprime el error en a lcd
'DelayMS 2000 'retardo de 2 seg para visualizar el mensaje en la lcd
GoTo MAIN
ERROR_DMX: 'rutina de chequeo de error en la recepcion del dmx
Cls 'boora la lcd
HRSOut "ERROR DMX",13
'Print "ERROR DMX" 'imprime el error en a lcd
'DelayMS 2000 'retardo de 2 seg para visualizar el mensaje en la lcd
GoTo MAIN
'Aqui comiensa la rutina de recepcion de los datos por dmx512 solo son mostrados en la lcd los primeros
'4 canales
MAIN:
CREN = 0 'deshabilita la recepcion del usart del pic
BREK = PulsIn Rx , 0 'Espera a que se genere el pulso del break del dmx
HRSOut "funciono",10
If BREK <= 44 Then MAIN 'si el pulso es mayor o igual a 88µseg (44 x 2µs)
'comiensa a recibir los canales del dmx, sino salta a main
For X = 0 To 9 'lazo para capturar solo 10 canales de los cuales solo se veran 4
ST1[X] = HRSIn , {1000 , ERROR_DMX} 'en la lcd
If RCSTA.1 = 1 Then ERROR_OERR 'si durante la recepcion ocurre un error este es
If RCSTA.2 = 1 Then ERROR_FERR 'mostrado en la lcd y vuelve a empesar desde main
Next X
'borroa la lcd
Cls
HRSOut Dec3 ST1[1],4
HRSOut Dec3 ST1[2],4
HRSOut Dec3 ST1[3],4
' Print Dec3 ST1[1] , ", " , Dec3 ST1[2] , At 2 , 1 , Dec3 ST1[3] , ", " , Dec3 ST1[4] 'imprime el canal 1 y 2 en la primera linea
DelayMS 100 'imprime el canal 3 y 4 en la segunda linea
GoTo MAIN
Como pueden ver utilizo el comando HRSout para recibir por la consola los valores, pero recibo caracteres extraños, me podrían ayudar? gracias.