Ir ao conteúdo

Posts recomendados

Postado

Olá!

Recentemente estava fazendo um firmware de um projeto com PIC e me deparei com a falta de pinos para ele.

Queria usar um 16F628 mas os 18 pinos não eram suficientes.

Tenho 6 botões no projeto.

Aí me veio a lembrança que li que se pode fazer um identificador de tecla pressionada com um comparador analógico do PIC.

Pesquisei mas não me satisfiz com os detalhes. Então resolvi estudar a lógica da identificação e acabei fazendo um mini tutorial, que apresento a seguir.

Lembro que o PIC em questão não possui um CAD em seu interior, então tive que usar o comparador mesmo.

Na verdade só precisaria de um pino para tal, mas dentre as sete opções de modo de uso do módulo comparador, a que usava menos pinos foi o Modo 5, com dois pinos.

Recomendo que para baixar o arquivo, façam LOGIN antes. Caso contrário, vai ser levado para diversas páginas e acaba ficando difícil achar o arquivo para download.

O login pode ser feito via diversos aplicativos, de modo que fica relativamente fácil entrar.

 

http://www.4shared.com/office/lK1nnJgFce/Leitura_de_Teclado_com_Dois_Pi.html

 

MOR_AL

  • Curtir 4
Postado

@MOR,

Excelente tutorial !!!!

Essa técnica ajuda muito nos casos de poucos pinos, o que eu conheçia era usando o conversor A/D, pelo comparador eu nunca havia visto, obrigado pela excelente dica !

Paulo

Postado

@test man*~,

Tá ficando complicado usar o 4shared. A melhor coisa é sempre ter uma conta no 4shared, assim quando voce clicar no link, faça o login primeiro, e aí sim clique em BAIXAR....

Paulo

Postado

Entendo @aphawk, eu loguei e consegui fazer o download mas não consegui acessar todos os arquivos do @MOR... Quando clico no perfil dele o site mostra que ele tem duas pastas e um total de 52 arquivos mas não mostra os arquivos  :(

Postado

Valeu pessoal!

Quanto a usar o 4share.

Não conheço outro link GRÁTIS de armazenamento de arquivos. Só para arquivos do tipo jpg.

test man*~

Como informei, você nem precisa estar inscrito no 4share, você pode fazer o login via Facebook, Google, etc.

Aí fica mais fácil o acesso.

 

Para baixar os outros arquivos é necessário ter os links. Todos os arquivos estão disponíveis, distribuídos em postagens de fóruns.

 

MOR_AL

 

Postado

Hmm entendi... Lembro-me de um tempo (uns 5~6 anos atrás) em que era possível entrar no perfil de outro usuário e ver todos os seus arquivos separados por pastas e nem era necessário estar logado, eles devem ter mudado  :angry:.

 

Obrigado pela dica @aphawk e pelo arquivo @MOR!

  • Curtir 1
Postado

@_xyko_,

Não, não fechou não, só "complicou" o acesso.....

Poxa nem fale uma coisa dessas kkkk eu sempre deixei lá os arquivos para compartilhamento, tenho uma conta antiga, e funciona que é uma beleza !

O que mudou é apenas a facilidade que a gente tinha de baixar qualquer coisa, de pesquisar, de ver o que cada um compartilhava, agora ficou meio burocrático, mas eu ainda não encontrei nada melhor do que eles !

@test man*~,

Eu também tenho conta lá faz muito tempo, era ótimo do jeito que era, mas os tempos são novos... Novas regras contra pirataria, contra acesso sem se identificar, complicou um pouco hehehe !

Paulo

  • Membro VIP
Postado

moris para anexar arquivos zip numa imagem e compartilhar aqui mesmo neste forum, veja como eu faço - faria - fazia - fiz:

no prompt do dos (enquanto ainda existe)

copy /b arquivo.zip + imagem.jpg imagem1.jpg

aí anexo imagem1.jpg

quem quiser o arquivo.zip basta renomear a extensão imagem1.jpg para xxx.zip

Bom de fato aqui em casa uso linux. Digito isso de memória Amanhã faço um teste completo e exemplo prático.

 

Sobre ler várias entradas, meio que intuitivamente entendi sua técnica. apesar de não ter baixado pra ver. Amanhã (sempre amanhã) dou uma olhadela.

 

Certa feita fiz um conversor ad 5 bits meia boca com o comparador com umas 3 ou 4 linhas de C. E também usei 1 pino pra ler um potenciômetro para ajuste de um temporizador num pic12f509 (nem comparador tem). Amanhã (de novo) analiso se vale a pena compartilhar pois é 1/2 on topic

  • Curtir 1
Postado

moris para anexar arquivos zip numa imagem e compartilhar aqui mesmo neste forum, veja como eu faço - faria - fazia - fiz:

no prompt do dos (enquanto ainda existe)

copy /b arquivo.zip + imagem.jpg imagem1.jpg

aí anexo imagem1.jpg

quem quiser o arquivo.zip basta renomear a extensão imagem1.jpg para xxx.zip

Bom de fato aqui em casa uso linux. Digito isso de memória Amanhã faço um teste completo e exemplo prático.

 

Sobre ler várias entradas, meio que intuitivamente entendi sua técnica. apesar de não ter baixado pra ver. Amanhã (sempre amanhã) dou uma olhadela.

 

Certa feita fiz um conversor ad 5 bits meia boca com o comparador com umas 3 ou 4 linhas de C. E também usei 1 pino pra ler um potenciômetro para ajuste de um temporizador num pic12f509 (nem comparador tem). Amanhã (de novo) analiso se vale a pena compartilhar pois é 1/2 on topic

Isadora!

Testa sim, para ver se funciona. Aí poderemos nos ver livre de ter que armazenar no 4share.

Em tempo:

Testei e infelizmente o sítio que coloco minhas imagens (http://s100.photobucket.com/) não caiu nessa. Não identificou o arquivo como jpg, em consequência, não gerou o link para download

 

Quanto ao seu conversor e o uso de apenas um pino, sem comparador, mostra aí para a gente.

Seria uma boa inclusão.

MOR_AL

  • Membro VIP
Postado

Moris realmente não está dando certo mais. Fiz isso há muitos anos. na época dava certo. Acho que nem vale a pena insistir. Mas qualquer dia tento inserir uma imagem modificada destas no fb p.ex. pra ver que merdadá. Ou em outros foruns

Talvez seja por segurança.

http://g1.globo.com/tecnologia/noticia/2015/06/virus-de-pc-pode-ser-escondido-em-imagem-mostra-pesquisador.html

 

Enfim, compartilho os trechos-fonte abaixo. Quiçá pode não ser totalmente inútil. É de décadas atrás. Claro atualmente pode ter o visual melhorado.

//le valor analógico 4bits na entrada de um comparador . Pra 5 bits não achei o fonte correto. Vá quebrando o galho com este mesmounsigned char adcreadcomp(){unsigned char vr=0;VREN=1; //hab. referênciafor (vr=0;vr<16;vr++) //só lower. (VREN,VRR=1)                {                wdt;                VRCON=vr|0b10100000; //incrementa referência até setar o...                if (COUT) goto fim; //... bit da comparação / captura                }fim:VREN=VRR=0; //des. ref. - bits 7 e 5 de VRCONreturn VRCON;}//le valor de um potenciometro 10k em GP5 pro vcc com 10nF pro gndunsigned char lepot(){unsigned char an=0;GP5=0;                  //descarrega capacitorTRIS=0b100000;          //GP5=entradado  { an++; }while (!GP5);TRIS=0;GPIO=0;         //saidas=0. descarrega capacitorreturn an;

abç

 


ah sim. Você, meu caro amigo, pode gostar disso...

http://www.datasheetarchive.com/dl/Datasheets-SW5/DSASW0095373.pdf

ou google ds40040

Postado

Moris realmente não está dando certo mais. Fiz isso há muitos anos. na época dava certo. Acho que nem vale a pena insistir. Mas qualquer dia tento inserir uma imagem modificada destas no fb p.ex. pra ver que merdadá. Ou em outros foruns

Talvez seja por segurança.

http://g1.globo.com/tecnologia/noticia/2015/06/virus-de-pc-pode-ser-escondido-em-imagem-mostra-pesquisador.html

 

Enfim, compartilho os trechos-fonte abaixo. Quiçá pode não ser totalmente inútil. É de décadas atrás. Claro atualmente pode ter o visual melhorado.

//le valor analógico 4bits na entrada de um comparador . Pra 5 bits não achei o fonte correto. Vá quebrando o galho com este mesmounsigned char adcreadcomp(){unsigned char vr=0;VREN=1; //hab. referênciafor (vr=0;vr<16;vr++) //só lower. (VREN,VRR=1)                {                wdt;                VRCON=vr|0b10100000; //incrementa referência até setar o...                if (COUT) goto fim; //... bit da comparação / captura                }fim:VREN=VRR=0; //des. ref. - bits 7 e 5 de VRCONreturn VRCON;}//le valor de um potenciometro 10k em GP5 pro vcc com 10nF pro gndunsigned char lepot(){unsigned char an=0;GP5=0;                  //descarrega capacitorTRIS=0b100000;          //GP5=entradado  { an++; }while (!GP5);TRIS=0;GPIO=0;         //saidas=0. descarrega capacitorreturn an;

abç

 

ah sim. Você, meu caro amigo, pode gostar disso...

http://www.datasheetarchive.com/dl/Datasheets-SW5/DSASW0095373.pdf

ou google ds40040

Isa.

Vou dar uma estudada no seu código e tentar entender.

Não uso quase a linguagem C, mas parece meio que fácil entender o programa.

Depois eu comento.

Em tempo:

Foi deste arquivo mesmo que eu peguei o gancho, mas faltava os detalhes das tensões.

MOR_AL

  • Membro VIP
Postado

ok moris.

 

Essencialmente apenas vou subindo o valor da referência interna do comparador até "achar" o ponto da transição. Neste momento, o valor da referencia VRCON é meu resultado digitalizado. (ideia 100% original)

 

Quanto a ler o pot, descarrego um capacitor (TRIS5=GP5=0) e espero ele subir (TRIS5=1;while (!GP5)) contanto um tempo (an++). Entrada st por favor. Menor valor, carrega + rápido, menor tempo ululantemente óbvio (=mente 100% original da época ... primórdios da internet. Sem "ganchos" kk).

 

espero ter somado

 

abç

Postado

Isa!

 

O bit 6 (VROE) tem que ser ligado para conectar a tensão de referência no pino AR2, certo?

VRCON = vr | 0b11100000;

C1OUT ou C2OUT, né? Vai depender onde você vai conectar as chaves. Se em RA0 ou RA3, ou em RA1 ou RA2.

if (COUT) goto fim;

Vi os valores para VRR = 1. Pode-se colocar até 15 chaves. Se incluirmos os possíveis valores para VRR = 0, podemos acrescentar mais 3 chaves.

Legal a sua ideia. Mas os comparadores ficam no modo 2, que ocupam 2 pinos.

A sua opção com o capacitor é "meia boca". Vai depender muito da tensão de transição de zero para um digital.

É semelhante à minha solução, que veio daquele arquivo que você postou.

O diferencial é que eu calculei os valores dos componentes (R's e C) para que não ficassem juntos. Também incluí um fluxograma para que fosse feito em assembler, com pequeno erro.

[]'s

MOR_AL

 

  • Membro VIP
Postado

Môr

esqueci de dizer que era pic12f ou seja bem minimalista mesmo

comparador do 12f629: ocupa um pino só amigo. A comparação é feita entre este pino e a referência interna que tem 32 "steps", capistes? Se fizer VRR=0 = + 15 chaves ou algo como um conversor ad 5 bits

 

A opção do capacitor é "outra" coisa, "outro" pic, "outro" projeto. Era o 12f509. Sim é "meia boca" (apesar da indelicadeza, provavelmente não quis ofender) mas atendeu perfeitamente a proposta de um ajuste de um temporizador. Agora se consideraste "meia boca" por depender do valor da transição, então estás enganado amigo. Lembra-te que mencionei entrada st? Smitch trigger nos garante um valor de transição meio que preciso. Por isso tens que escolher um pino com esta característica quando entrada. Pra quem não sabe, uma entrada tipo st foi feita exatamente pra o mc não ficar indeciso se 0 ou 1

 

abç

Postado

Môr

esqueci de dizer que era pic12f ou seja bem minimalista mesmo

comparador do 12f629: ocupa um pino só amigo. A comparação é feita entre este pino e a referência interna que tem 32 "steps", capistes? Se fizer VRR=0 = + 15 chaves ou algo como um conversor ad 5 bits.

Haan! Tá certo.

 

A opção do capacitor é "outra" coisa, "outro" pic, "outro" projeto. Era o 12f509. Sim é "meia boca" (apesar da indelicadeza, provavelmente não quis ofender) mas atendeu perfeitamente a proposta de um ajuste de um temporizador. Agora se consideraste "meia boca" por depender do valor da transição, então estás enganado amigo. Lembra-te que mencionei entrada st? Smitch trigger nos garante um valor de transição meio que preciso. Por isso tens que escolher um pino com esta característica quando entrada. Pra quem não sabe, uma entrada tipo st foi feita exatamente pra o mc não ficar indeciso se 0 ou 1

Não quis ofender, não!

É que estive olhando as especificações no arquivo 33023a.pdf. Lá constam apenas os limites da tensão de gatilho.

De 0 até 0,2Vdd (o '0' é minha suposição) para entrada em '0' e de Vdd até 0,8Vdd (o Vdd também) para entrada em '1'.

Ele não garante uma faixa menor para '0' ou para '1', apenas os limites.

Outro detalhe é que considerei uma tensão de referência de 0,5Vdd e o Schimitt Trigger seria em 0,8Vdd. Na minha condição, eu forcei que o crescimento da tensão no capacitor fosse quase linear. Com o disparo em 0,8Vdd a tensão sobre o capacitor está tendendo mais para a "horizontal". Pequena variação de tensão gera grande variação de tempo, dificultando a linearidade do sistema. Considerando que ainda tem o detalhe do valor do resistor. Geralmente se usam os valores comerciais e não os calculados, o que altera ainda mais os tempos.

Daí a minha expressão "meia boca". Não quis ofender, só quis fazer entender que os espaçamentos dos tempos seriam mais diferentes e ainda aceitar uma variação de limites reais que não foi apresentado no manual.

abç

Você sabe que não te ofenderia, né? ;)

[]'s

MOR_AL

  • Membro VIP
Postado

pelo que entendia (na época) a entrada st passa a ser 1 se for >=0.8VCC e volta a 0 se <=0.2VCC. Entre um e outro, vale o último estado. Realmente a carga do capacitor não é linear. Cogitara (na época) um circuito com corrente constante mas a meta era tirar água de pedra, então mesmo com carga logaritimica (de fato de 0.2 a 0.8VCC tende a  ficar uma quasi-rampa-reta) o treco ficou filé e muita gente (mesmo) ficou feliz.

Anos (ou décadas) depois microchip lançou mc´s com circuito de fonte de corrente constante como pullup com aplicação de teclado capacitivo. Esqueci qual é e agora não quero procurar

 

Pouca coisa me ofende. Portando mesmo se teclar pouca coisa... já sabe

 

abç

Postado

A dica de usar o comparador com a tensão de referência interna é boa, já que não usa capacitor, que tem boa variação do seu valor com a temperatura.

Fiz um resumo de um programa com esta aplicação, mas não calculei os valores dos resistores.

segue em anexo. Fiz meio que "meia boca" (rápido e sem conferir). Pode haver erros.

Em tempo:

A instrução

 

RMaIfV Valor, 00001110, Maior

 

é uma macro que eu fiz. Significa "Se Registro R for Maior ou Igual a Valor, então desvie para o endereço Maior

 

O registro no caso é Valor, o Valor é o 00001110 e o endereço é Maior

RMaIgV macro R, V, End_R_maior_ou_igual_a_V	  movlw	V				; w = V	  subwf	R, w				; w = R – V	  btfsc	STATUS, C			; Se C = 0, o resultado é negativo (R < V). 						; Se C = 1, o resultado é positivo ou nulo (R >= V).	  goto	End_R_maior_ou_igual_a_V	; C = 1. R >= V	  endm					; C = 0. R < V

MOR_AL

post-683989-0-03613800-1433972916_thumb.

  • Curtir 1
Postado

Eu até tentei me acostumar com ele, mas não gostei, não. Acho que minha necessidade era de armazenar meus muitos arquivos, aí ficava impossível com a m&r#@ da minha internet.

MOR_AL

  • 5 meses depois...
Postado

Valeu pessoal!

Quanto a usar o 4share.

Não conheço outro link GRÁTIS de armazenamento de arquivos. Só para arquivos do tipo jpg.

test man*~

Como informei, você nem precisa estar inscrito no 4share, você pode fazer o login via Facebook, Google, etc.

Aí fica mais fácil o acesso.

 

Para baixar os outros arquivos é necessário ter os links. Todos os arquivos estão disponíveis, distribuídos em postagens de fóruns.

 

MOR_AL

Sei que faz um tempo,mais baixar do 4share é muito ruim. Tem o google drive,15GB gratis,não tem propaganda,não precisa de fazer login. É apenas um sugestão

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...