TODOPIC

Mecatrónica => DMX512 - Diseños y Proyectos => Mensaje iniciado por: gaston23 en 18 de Enero de 2011, 13:31:57

Título: [Ayuda] Amicus18 + DMX512 + SN75176
Publicado 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.
Código: [Seleccionar]
      '  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.