HT6P20B (da teoria para a pratica)...

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

HT6P20B (da teoria para a pratica)...

Mensagempor Fabio_Jerena » 20 Mai 2007 12:12

Acho que começo pecando no meu programa pela forma com que eu estou abordando o problema, minha ideia para decodificar esse CI é a seguinte:
- Medir a largura dos pulsos existentes na word(eu encontrarei duas larguras, a do startbit/24 clocks e a dos bits/3 cloks, pela largura eu consigo identificar quando o código começa, daí eu ia ler a cada T de bit/2, ou seja, eu seja, a cada borda de descida eu aguardo meio período de bit e faço a leitura neste momento (pois se for um vou ler zero e se for zero vou ler um)).
Só que eu estou achando que esse método é furado pois só uma leitura no bit fará com que a leitura seja totalmente susceptível a problemas devido ruído já que se ele ler errado um bit perde a word inteirinha...
Quem já fez esse decoder resolveu o problema como, medindo a largura do pulso em nível 1 e em nível 0, usou interrupções e etc???
Eu estou medindo a largura de pulso com o modulo CCP do 16F628A, qualquer ajuda é bem vinda, muito obrigado!!!
Fábio Jerena
Fabio_Jerena
Nibble
 
Mensagens: 52
Registrado em: 08 Mar 2007 08:59

Mensagempor fabim » 21 Mai 2007 08:07

- Medir a largura dos pulsos existentes na word(eu encontrarei duas larguras, a do startbit/24 clocks e a dos bits/3 cloks..

de onde vc tirou isso ???

fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Fabio_Jerena » 21 Mai 2007 11:43

Olhando o manual têm a forma com que o CI transmite o código + informação, o Startbit possui uma largura de 24 cliclos de máquina do HT, 23 em nível 0 e um em nível 1, já os bits possuem 3, podendo ter 2 ciclos em nível 0 ou um...
Só não entendi muito bem se ele dá um tempo entre as word´s, se não der são somente duas larguras de pulso, sendo que exatamente no meio do T dos bits consegue se diferenciar o valor do bit!
Fábio Jerena
Fabio_Jerena
Nibble
 
Mensagens: 52
Registrado em: 08 Mar 2007 08:59

Mensagempor EDSONCAN » 21 Mai 2007 12:47

Na verdade eu dividi em 4 larguras:
- inicio bloco
- fim bloco
- bit 0
- bit 1
O resto sao contadores em um timer fixo.
Para evitar ruidos, conta em zero e conta em em 1 consecutivamente.
Um serve para validar o que contou em zero.
Conforme o estado anterior do sistema, o zero pode ser inicio ou fim do bloco ou bit 0 e bit 1.
Tem um monte dessas rotinas por ai, acho que ate no forum tem alguma coisa pronta.
Edson
EDSONCAN
Word
 
Mensagens: 876
Registrado em: 11 Out 2006 14:11

Mensagempor Fabio_Jerena » 21 Mai 2007 15:18

Eu já dei uma pesquisada pelo fórum e têm o programa para assembly, eu podia muito bem colocá-lo no meu projeto em C mesmo e tocar prá frente, mas queria tentar fazer o meu programa, desenvolver o conceito, eu não consegui entender a técnica de medição dos níveis 0 e 1 do programa escrito pelo Fabim...
Eu tb não entendi muito bem a carta de tempos desse CI, o que eu entendi agora depois de dar uma olhada é que ele transmite uma word e espera o tempo de uma word em zero, é isso???
Fábio Jerena
Fabio_Jerena
Nibble
 
Mensagens: 52
Registrado em: 08 Mar 2007 08:59

Mensagempor Fabio_Jerena » 23 Mai 2007 00:13

Dá certo eu medir as larguras de pulso assim:

while(!entrada)
{
tempo_nivel_zero = tempo_nivel_zero +1;
}

while(entrada)
{
tempo_nivel_um = tempo_nivel_um +1;
}

if (tempo_nivel_zero > tempo_nivel_um)
{
valor_bit = 1;
}
else
{
valor_bit = 0;

}

E estava pensando em fazer uma jogada com o Timer0 para identificar o Startbit, se não zerar o timer antes de ocorrer uma borda de descida por exemplo as próximas leituras já serão a word...

Eu estou tendo uma dificuldade danada com esse software, não tenho osciloscópio, é terrível ficar só no mundo virtual, mas mesmo assim eu ainda não desisti, agradeço quem puder me dar uns toques ou com programação, ou entendendo o CI, até agora eu não entendi se ele fica um tempo sem transmitir nada ...
Fábio Jerena
Fabio_Jerena
Nibble
 
Mensagens: 52
Registrado em: 08 Mar 2007 08:59

Mensagempor cristian » 24 Mai 2007 19:31

boa noite , bla bla....

estou fazendo um decoder do 6p20 e uso o ccp do pic identifico o startbit que fica em Low e aguardo a borda de subida ligo o timer1 e aguarda a borda de descida...desligo o timer pego seu valor e vou pra tabela testar se o tempo foi maior do x microseg emtao ele é Nivel alto e vice versa

o problema do ruido com o osciloscopio percebi que sem recepçao tinha uns picos e tal

dai o pic aguarda o birstart a 1 word e so na segunda ele salva o codigo acabou meus problemas de ruido
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor cristian » 28 Mai 2007 16:35

qual a melhor forma de decodificar o HT

espera o sinal piloto e de tempo em tempo checa a porta se é 1 ou 0
ou
medindo a largura do pulso ?
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor Fabio_Jerena » 06 Jun 2007 13:02

cristian escreveu:qual a melhor forma de decodificar o HT

espera o sinal piloto e de tempo em tempo checa a porta se é 1 ou 0
ou
medindo a largura do pulso ?


Ainda acho que a melhor forma é medindo a largura de pulso, pois gera uma redundancia de informações (já que vc acaba medindo o periodo inteiro que ele fica em 0 ou em 1), não só num instante, onde pode a verdade ler uma interferência momentânea, fora que será mais versátil com o controle que pode possuir diversos resistores (oscilador).
Fábio Jerena
Fabio_Jerena
Nibble
 
Mensagens: 52
Registrado em: 08 Mar 2007 08:59

Mensagempor fabim » 06 Jun 2007 13:27

huahuahua.. aiai. Desculpem mais não resisti.

Ta vendo, se conhecessem um tiko de asm..

Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Não existe a forma certa de se fazer

Mensagempor Andre Rasminio » 06 Jun 2007 22:53

Acho que não existe a forma "mais correta de se fazer" , e sim a forma com que funcione com os seus periféricos disponíveis.
Fiz este decodificador sem utilizar nenhuma interrupção de timer ou externo, fiz isso pq eu não tinha periféricos disponíveis, tava utilizando os dois timers e tambem a interrupção externa para outra coisa.
Se alguem quiser a função que fiz para isto eu envio por email.
Andre Rasminio
Bit
 
Mensagens: 26
Registrado em: 14 Abr 2007 17:30
Localização: Vale da Eletrônica

Re: Não existe a forma certa de se fazer

Mensagempor fabim » 08 Jun 2007 08:01

Andre Rasminio escreveu:Acho que não existe a forma "mais correta de se fazer" , .


OBS.. Existe sim, no caso de digital sempre existe a forma correta, simples, complicada = derivando isso pega-se a que funciona.

Eu bolei o programinha pra decodificar HT6P20B pro 16F628 e acabei passando o 12f629 por ser bem pequeno o programa.
Meu programa ao mesmo tempo para quem não conhece asm é complicado, mais pra quem começou com asm como eu e muitos outros aqui no forum, o programa é simples e correto.

Abraços

Fabim

OBS, ja expliquei exatamente como o meu fonte funciona em outros post´s, sem mais nem menos.
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?


Voltar para PIC

Quem está online

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

x