Ir ao conteúdo
  • Cadastre-se

Leonardo-SP

Membro Pleno
  • Posts

    34
  • Cadastrado em

  • Última visita

Tudo que Leonardo-SP postou

  1. Ok, Rafael já está funcionando na prática. Joseca, corrigi o link, na descrição do vídeo está o algoritmo.
  2. Realmente entre dois PICs não possui, entretanto, utilizei o "Hardware Simulation Interface" onde simulo o envio TX e depois o recebimento RX, depois é na unha PIC/PIC P2P. RXTX-628 - YouTube
  3. Entendi, fiz como descrito no manual do PSI. Vou postar o código daqui a pouco. Detalhe, na simulação deu certinho e no protoboard ocorreu o problema descrito. Valeu!
  4. Saudações pessoal! É o segunte, estou com um projeto que necessita de comunicação entre dois 16F628A via RX/TX, onde o PIC master envia a variável "x" e o PIC slave recebe esta variável, e mostra o valor de "x" em um contador (três displays de 7 segmentos). A dúvida é a seguinte, comecei enviando "x" sendo o valor 5, o PIC slave recebia o valor correto e em seguida, dava um tempinho na contagem e acrescentava mais 5 ou 6 na contagem. Gostaria de saber se esse valor "a mais" é o buffer? Experimentalmente, fiz um código que, ao receber "x" descarrega em uma contagem primária onde o valor de "x" fica certinho, e em seguida abre uma contagem secundária onde é descarregado o buffer (eu acho) e é descartado. Abraço.
  5. Exatamente! Quando o circuito é ligado o programa vai direto para subrotina e, dependendo do projeto, isto é feito várias vezes, é uma forma de assegurar sempre o estado dos ports desejados. Abraço.
  6. Rafael, não esqueça o AllDigital no seu código. Meu problema com o erro já foi resolvido, só comentei aqui para que se algum usuário do PSI, viesse a enfrentar o mesmo erro, já ter como base a minha experiência. A "omissão" do nível lógico no meu caso foi gerada por erro ao digitar, como mencionado anteriormente, eu não digitei o "1". Realmente é uma besteira, mas gera o erro, aí num programa grande a gente se perde procurando o "fantasma". O Programa foi eu que fiz, e já está finalizado. Jfeliciano, nesse projeto enfrentei o mesmo problema que você mencionou em posts anteriores, o reset dos posts durante o funcionamento do PIC. Vou descrever como eu fiz, veja o que você acha: ------------------------------ ... gosub resetports' ... end resetports led1=1 led2=1'' daí você estabelece o nível lógico de cada port ... Return -------------------------------- Dessa forma toda vez que precisar de "resetá-los" é só buscar "gosub resetports", note que não coloquei (entre o led1 e o led2) o waitus que o Paulo citou anteriormente, estou nos testes finais da placa, como não houve nenhum mal funcionamento, vou deixar assim. Tá uma beleza! PS: Em muitos exemplos citamos em nossos códigos um port sendo "led", mas isso é para facilitar a compreensão, na prática pode ser um NPN, PNP, fotoacoplador,..., acionando/interropendo o que desejar. Espero ter contribuído de alguma forma. Abraço.
  7. Então pessoal, agradeço a atenção de todos. No PIC 18 Simulator IDE também gera o mesmo erro: Jfeliciano, não estou mexendo com LCD "ainda", mas, arrisco um pitaco, veja se a causa não está nas temporizações (muito rápido ou lento demais), pode haver uma diferença do PSI para o Proteus. Abraço.
  8. Jfeliciano, o Paulo faz falta mesmo, gosto de ler até os posts dele em outros tópicos, sempre ajudando. Pessoal, se alguém estiver tendo problema com o PSI 6.91 Run-time error '5' O PSI não compila, dá o erro e fecha o programa, para eu descobrir isso levou um bom tempo, apaguei o valor lógico sem querer. A causa está na ausência do valor lógico como no exemplo abaixo: led=0 waitms 500 led= Fica aí a dica. Abraços...
  9. Pessoal, Nosso amigo Paulo ( aphawk ) está resolvendo assuntos particulares e avisou que até o final de junho estará de volta. Vamos aguardar, o mestre não esqueceu da gente. Abraço.
  10. Olá pessoal, Alguém está usando a nova versão do PSI? Formatei o meu HD e instalei a nova versão 6.91, ao abrir alguns arquivos .bas, gera os seguintes erros: Run-time error 5 Run-time error 380 Minha licença é paga, reportei os erros a Oshon Software. Se alguém puder ajudar eu agradeço. Abraços...
  11. Olá Binho11, Vou "tentar" explicar um dos motivos para o uso das variáveis. Imagine um projeto com o 16F877, são 33 I/O, as variáveis ajudam na identificação de cada PORT, facilitando a lógica e o desenvolvimento do programa. A princípio eu também estranhava e resumia tudo, da mesma forma que você citou, aí quando o número de PORTs aumenta vira uma salada! Passei por isso no mês passado! Use as variáveis e não esqueça dos comentários são muito importantes. Abraço e bons projetos.
  12. Olá pessoal, Esses dias tava quebrando a cabeça para aumentar o valor do WaitMs, precisava de uma temporização de 2 horas para manter um LED aceso, resolvi da seguinte forma: '----------- Dim inicio As Byte Dim final As Byte final = 0 '----------- led: RB4 = 1 For inicio = 1 To 120 final = final + inicio WaitMs 60000 Next inicio RB4 = 0 End '------------ Pergunta: Tem outra forma de aumentar o WaitMs mais resumida? Estou trabalhando num projeto com o PIC 16F877, vou precisar de reproduzir mensagens de voz, serão quatro frases gravadas, alguém saberia indicar algum chip de voz com bom custo benefício? Abraços...
  13. Essa foi boa mesmo!!! Morri de rir , esperava uma resposta diferente! Tenho outra pergunta, vou fazer depois. [Off-topic] Estou saindo pra pescar. [Off-topic] Abraço
  14. Mestre, não resisti, tenho que perguntar, por que nos dois primeiros projetos da apostila o comando AllDigital não foi usado? Abraço.
  15. Caro Rodrigo, você está fazendo o 1° projeto da apostila? Quanto ao PIC 16F628, gravei o 1° programa da apostila e não funcionou nada, em seguida tentei apagá-lo sem sucesso, enfim, o bicho não apaga mais. Pesquisei na net e encontrei vários relatos descrevendo o mesmo problema. Gravei um 16F84 e funcionou perfeitamente. Espero ter ajudado. [Edit] Em tempo, não esqueça de confirmar as CONF_WORD antes de gravar o PIC. [Edit]
  16. [Off-topic] Caro Bcpetronzio, gostei do seu comentário, por um momento "pensei" estar confundindo o leitor com minhas confusões nos programas. Fiquei ausente porque estou montando umas placas, assim dou uma folga para o tópico e o Mestre. Esse tópico mudou a minha vida, literalmente!!! Abraço. [/Off-Topic]
  17. Paulo, incluí a "Rotina de Debounce" no prograna, nossa..., ficou show! Valeu!
  18. Paulo, ontem mesmo fiz as modificações no programa que você sugeriu, simulei no PSI e ficou perfeito. Gravei o PIC, fiz as modificações na placa e funcionou certinho, porém, tive que aumentar o valor do WaitMs para evitar o funcionamento do pull-up nos "toques momentâneos". Não sei o que é, vou pesquisar. Obrigado pelos ensinamentos!!! [Edit] Pesquisando no Google, encontrei a informação "Rotina de Debounce / Debouncing": http://forum.clubedohardware.com.br/debouncing-iniciantes/712912 [Edit]
  19. Mestre, no "Botão = 1 goto espera" eu modifico o estado dele para 1 clicando no pino correspondente RB3 no Microcontroller View do PSI, daí ele executa as rotinas e retorna a 0 aguardando o próximo clique. Se não clicar, o programa fica preso no laço. Se eu simular "Botão = 1 goto espera", o botão fica pressionado constantemente na simulação. Desulpe-me pela insistência, vou simular novamente e fazer um vídeo, aguarde. Mais uma vez obrigado por sua atenção. [Edit] Paulo, veja a simulação no PSI: YouTube - PSI.wmv Abraço. [Edit]
  20. Então, o pessoal da " Ucontrol " usa essa nomenclatura RB3..., achei prático. Pessoal, estou pesquisando desde ontem e não encontro uma forma de resolver esse problema: PIC 16F84A Dim a As Byte Dim b As Byte Dim x As Byte Symbol botao = RB3 a = 1 x = 10 espera: If botao = 0 Then Goto espera [COLOR="Blue"]'botão foi pressionado (é só um clique)[/COLOR] If botao = 1 Then [COLOR="Red"]b = a + 1[/COLOR] If b > x Then Goto zerar If b < x Then Goto espera zerar: b = 0 Goto espera End Não sei como fazer o código para armazenar o valor "crescente" de b, estou pesquisando desde ontem, mas não encontrei nada a respeito, "acho" que tenho que usar o RA4 (timer/counter) Estou ficando igual criança quando o pai a ensina andar, é só trabalho! jfeliciano, gostei das "bagaças", parabéns!!! Abraço.
  21. BINGO!!! Mestre, funcionou 100%, EXATAMENTE como eu queria, ou seja, seguindo a linha de raciocínio da apostila. Não fiz as modificações que você sugeriu no programa porque a simulação estava certinha no PSI, "porém", eu sabia que necessitava de alguns ajustes ou no soft ou no hard. Como você mesmo comentou, "há vários meios de atingir o objetivo, o importante é funcionar!" Segue o programa : PIC 16F84A ----------------------------- Define CONF_WORD = 0x3ff1 Define CLOCK_FREQUENCY = 4 TRISA = %00000 'todos como saída TRISB = %00001000 'RB3 entrada, demais saída Dim botao As Bit espera: 'aguarda botão ser pressionado botao = RB3 If botao = 1 Then Goto espera 'aguarda botão ser pressionado 'botão foi pressionado, somente um toque acende: RB6 = 1 'acende LED por 2 seg (no PSI 200ms) WaitMs 200 RB6 = 0 'apaga LED Goto espera End -------------------------------------- Considerações finais: 1° erro estava no circuito do "botão" RB3 tava ligado no 5V 2° erro: esqueci de modificar a lógica das portas quando fui gravar o PIC. Mais uma vez muito obrigado! [Editado] Resolvi deixar o programa pronto para rodar no PSI, quem quiser simular é só clicar no RB3 no "Microcontroller View" para executar as rotinas. Paulo, acho que assim ficou melhor.[Editado]
  22. Valeu Paulo, vou tentar mais tarde, minha cabeça tá dando tilt. Vou descansar um pouco e retorno. Muito obrigado!
  23. [Off-topic]Obrigado pelo convite!!! Eu pesco em duas modalidades esportiva e subaquática. [Off-topic] Voltando ao PSI, tomei uma surra ontem, passei o dia inteiro tentando fazer um LED acender (por 1seg) acionado por um botão. Veja o programa: PIC 16F84A Code Protection = OFF (por enquanto uso o CP desabilitado para verificar se o PIC foi gravado) --------------------- Define CONF_WORD = 0x3ff1 Define CLOCK_FREQUENCY = 4 TRISA = %00000 'todos como saída TRISB = %00001000 'RB3 entrada, demais saída Dim botao As Bit espera: 'aguarda botão ser pressionado botao = RB3 If botao = 0 Then Goto espera 'aguarda botão ser pressionado 'botão foi pressionado acende: RB6 = 1 'acende LED por 1 segundo( no PSI 200ms) WaitMs 200 RB6 = 0 'apaga LED Goto espera End ----------------------- A simulação está perfeita, depois do PIC gravado, e colocado na placa o LED não acende, acredito que o problema seja na tensão que estou aplicando no RB3. Em tempo, antes de gravar o PIC modifiquei a lógica das portas conforme a apostila. Coisas de iniciante...

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!