Hola gente, si bien soy nuevo en el foro, soy fanatico de los articulos de neoteo en especial de los articulos del amigo Mario, gracias a él me anime a hacer cosas. Bueno les comento lo que estoy queriendo hacer, resulta que compre una placa amicus 18, y tengo una consola DMX, y quiero hacer un receptor DMX , como driver RS485 uso el 75176. La idea es poder ver por la consola del amicus18 lo que recibo en los 4 primeros canales. Posteo el codigo, haber si me pueden dar una mano.
El problema es que no recibo nada, y en la consola recibo caracteres extraños, supongo que porque cambie la velocidad del puerto serie, pero entonces nose como hacer para poder recibir . HelppppppppppppCódigo:' 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 End


LinkBack URL
About LinkBacks
Citar


