[Resolvido] PIC e DMX512

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

[Resolvido] PIC e DMX512

Mensagempor [Daniel] » 07 Mai 2010 09:12

Colegas,

Alguém sabe como receber informações através do PIC e também como endereçar.

Se eu precisar de 8 canais por exemplo, terei que endereçar 8 canais?

Obrigado
Editado pela última vez por [Daniel] em 07 Mai 2010 13:09, em um total de 2 vezes.
Avatar do usuário
[Daniel]
Byte
 
Mensagens: 106
Registrado em: 18 Nov 2009 09:14

Re: PIC e DMX

Mensagempor fabim » 07 Mai 2010 09:24

[Daniel] escreveu:Colegas,

Alguém sabe como receber informações através do PIC e também como endereçar.

Se eu precisar de 8 canais por exemplo, terei que endereçar 8 canais?

Obrigado


Daniel. você conhece DMX512 ? bom pelo jeito não.. mass

Seguinte o DMX é composto por um pacote.

Este pacote, contem

"start"+"512bytes".

O pic tal, quer utilizar o canal 28.
Independente de qualquer coisa, ele vai sempre receber o pacote completinho!!!! ou seja, ele sempre vai enxergar os 512 canais, podendo ele "pegar" um ou mais canais...
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor [Daniel] » 07 Mai 2010 09:32

Sim é verdade, nao conheço mesmo, por enquanto...

Ah bom entendi o fato dos canais, seria entao como usar um "filtro" e pegar os outros canais por ex. +29, 30, 31, 32, 33, 34 ,35 junto com o 28. sendo que os 512byts estarao em todas as entradas. nesse caso o numero 36 seria o proximo aparelho correto?

veja mas alguem sabe me dizer como posso receber as infos e endereçar? que dados eu recebo? tals... com assembly ou como proceder?


-----------------------------
Pesquisei um pouco mais e encontrei alguns sites com informaçoes, é o suficiente pra mim.

http://www.dmx512.com.br/

Obrigado a todos.

Abraço
Avatar do usuário
[Daniel]
Byte
 
Mensagens: 106
Registrado em: 18 Nov 2009 09:14

Mensagempor Guri » 07 Mai 2010 16:51

Bom aquí vai uma linda rotina em asm que recebe os canais de forma correta...

Os créditos deste trabalho são divididos com meu caro amigo Paulo teodoro o qual não tenho notícias a muitos anos:



; *****************
; ** CERTIFICADO **
; *****************

BTFSS PIR1, RCIF ; TEST RECEPTION INTERRUPT
GOTO INT_EXIT ; FALSE, THEN RETURN

BTFSC RCSTA, OERR ; TEST OVERRUN ERROR
GOTO RX_RESET ; YES, GOTO SERIAL MODULE RESET

BTFSC RCSTA, FERR ; TEST FRAMMING ERROR
BSF _FERR ; YES, SAVE INFO

MOVF RCREG, W ; DOWNLOAD BYTE RECEIVED
MOVWF RX_DATA ; AND TRANSFER TO RAM
BCF PIR1, RCIF ; CLEAR INTERRUPT FLAG
BCF CTRL_DIP ; TRAVA LEITURA DO DIP

BTFSC _FERR ; RE-TEST FRAMMING ERROR SAVED IN RAM
GOTO DMX_RESET ; YES, BREAK DETECTED, GOTO DMX RESET

BTFSS _BREAK ; TEST BREAK ALREADY DETECTED
GOTO INT_EXIT ; NO, THEN RETURN

BTFSS _STACODE ; TEST START CODE
GOTO TX_STACODE ; YES, THEN TRANSMIT START CODE

MOVF ADDR_LOW, F ; MOVE ADDRESS LOW
SKPNZ ; AND TEST IT
GOTO CHECK_HI ; ADDRESS LOW = 0, GOTO CHECK HIGH
DECF ADDR_LOW, F ; ADDRESS LOW > 0, THEN DECREMENT IT
GOTO INT_EXIT ; AND GOTO EXIT
CHECK_HI:
MOVF ADDR_HIGH, F ; MOVE ADDRESS HIGH
SKPNZ ; AND TEST IT
GOTO TX_DATA ; ADDRESS LOW & HIGH = 0, THE TRANSMIT DATA
DECF ADDR_HIGH, F ; ADDRESS LOW = 0 & HIGH > 0, DECREMENT IT
MOVLW 0XFF ; ### PT 18.12.2003 ###
MOVWF ADDR_LOW ; ### PT 18.12.2003 ###
GOTO INT_EXIT ; AND GOTO EXIT
RX_RESET:
CLRF CONTROL ; CLEAR CONTROL REG
BCF RCSTA, CREN ; RESET SERIAL MODULE TO CLEAR ERROR
BSF RCSTA, CREN ; ...
GOTO INT_EXIT ; GOTO EXIT
DMX_RESET:
CLRF CONTROL ; CLEAR CONTROL REG
BSF _BREAK ; FLAG BREAK DETECTED
MOVF ADDR_HI, W ; ...
MOVWF ADDR_HIGH ; ...
MOVF ADDR_LO, W ; PICK-UP START DMX ADDRESS
MOVWF ADDR_LOW ; ...
TSTF ADDR_LOW
SKPNZ
GOTO DEC_HI
DECF ADDR_LOW, F
GOTO CONT
DEC_HI:
MOVF ADDR_HIGH, F
SKPNZ
GOTO CONT
DECF ADDR_HIGH, F
MOVLW 0XFF
MOVWF ADDR_LOW
CONT:
MOVF NCHANNELS, W ; PICK-UP NUMBER OF CHANNELS
MOVWF COUNT_CH
#INCLUDE <SEMDMX.INC> ; 8 CICLOS
GOTO INT_EXIT ; EXIT
TX_STACODE:
BSF _STACODE ; SET FLAG
GOTO INT_EXIT ; EXIT
TX_DATA:
MOVF COUNT_CH, W ; O ENDEREÇO DE INICIALIZAÇÃO DA RAM
ADDLW 0X1F ; É 20 H, 1F É POR CAUSA DO DESCONTO
BCF STATUS, IRP ; BANK 0,1
MOVWF FSR ; DE COUNT_CH EM "1"
MOVF RX_DATA, W
MOVWF INDF
BCF STATUS, IRP ; BANK 2,3

DECFSZ COUNT_CH, F ; DECREMENT CHANNELS COUNTER
GOTO INT_EXIT ; AND EXIT
CLRF CONTROL ; IF COUNTER = 0, THEN CLEAR CONTROL REG
INT_EXIT:
POP ; RESTORE REGISTERS
RETFIE ; RETURN FROM INTERRUPT
;---------------

essa rotina aquí é o include da anterior:

;***************
;* CERTIFICADO *
;***************
; *** TIME CALCULADO PARA +/- 10 SEGUNDOS ***
BANK1
MOVLW 10
MOVWF TIME_OCIOSO3
MOVLW 50
MOVWF TIME_OCIOSO2
CLRF TIME_OCIOSO1
BANK0
BCF LIB_TIME_OCIOSO
Guri
Byte
 
Mensagens: 457
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x