Ir ao conteúdo
  • Cadastre-se

PIC - Simulação funciona - realidade não


Dogolino

Posts recomendados

Fiz uma simulação no proteus e funcionou perfeito, coisa mais linda haha, porém quando foi gravado no pic, não funcionou, as portas de entrada não funcionavam, cheguei a fazer um programa só pra testar tipo

se tiver sinal na porta A1, A2 não tem sinal e A3 tem, coisas do tipo, não mudava nada quando jogava um sinal na entrada, ai fui testar só com um led piscando com delay e funcionou, então acho q o gravador ta beleza, ai fiz um bem simples pra acender a led quando houvesse sinal na porta, e nada, colocando sinal ou não dava na mesma, fiquei triste porque parece q a simulação da proteus não tão perfeita assim, sera q é porque estou usando uma tensão de 3,3V ?

Estou acreditando q póde ser a tensão só pode ser,

Tenho uma fonte regulada, porém de 7V, tem como baixar pra 5V regulado sem gastar quase nada, tipo só usar diodo e resistor?

Link para o comentário
Compartilhar em outros sites

Qual pic você está usando amigo?

Está configurando as portas como entrada e saída tudo certinho?

Você está alimentando com 3.3V? Você precisaria de 5V para um bit de uma porta ir para nível alto!

Você já verificou no datasheet do pic isso? E a tensão mínima de trabalho?

Para reduzir 7V para 5V você pode usar um zener 5V ou um 7805.

As duas opções são de baixo custo, porém só tem que ficar atento com a potência do zener quando for comprar!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Amigo não chore. Verifique:

-os fuses clock e reset estão corretos? Pro proteus tanto faz. O de wdog também é importante

-Qual pic é esse: Alguns tem controle de reset por baixa tensão. É outro fuse importante

-de 7v pra 5v: se for 7vdc bem regulado bastam uns 3 diodos em série com o +. Mas nada melhor que o bom e velho 7805. (se não for o tipo LDO, 8V na entrada dele, tá?)

-etc...(como sempre minha opção predileta que deve ser a correta)

Duas frases prontas se aplicam ao teu dilema:

“Na prática a teoria é outra” e “Só Deus é Perfeito”

abç

Link para o comentário
Compartilhar em outros sites

o pic é o 16F628A

Estou alimentando ele com 3,3v funcionou com o led como disse, porém as portas dele não ativam com essa tensão,

Estou puxando a energia da usb do micro, consigo 2 tensoes la, uma 3,3 e outra de 7V,

to fazendo essa configuração no programa

#include <16F628A.h>

#fuses INTRC_IO,NOWDT,PUT,BROWNOUT,NOLVP,NOMCLR

#use delay(clock=4000000)

Link para o comentário
Compartilhar em outros sites

entendi, quer dizer q dessa formar as portas dele vão interpretar 3,3v como sendo I, e é pra funcionar normalmente?

Sendo que a alimentação de entrada seria = a tensão TTL necessária pra funcionar redondo

Para o bit TTL ir para alto, você precisa de 5V.

E a porta USB fornece 5V sim.

pinagensyz3.jpg

Link para o comentário
Compartilhar em outros sites

Conforme o Felipe_Eletronic muito bem atentou, quando você ativa o Brown-out Reset, você tem que alimentar o PIC com uma tensão de 5v.

Se vai alimentar com 3,3v tem que desativar ele.

Caso não saiba, o Brown-out Reset serve para resetar o PIC caso a tensão de alimentação caia abaixo de 4v. Este valor pode variar entre 3,65v e 4,35v.

Os níveis nas entradas são interpretados como alto e baixo em função da tensão de alimentação.

Link para o comentário
Compartilhar em outros sites

Realmente funcionou, porém uma coisa muito estranha acontece,

o programa roda normal no simulador,

no PIC fiz uns testes e ele não esta armazenando nada na variavel, alguem sabe porque?

e outra coisa é normal ter um delay no nivel logico de entrada? por exemplo ter q segurar a tensão por 1 segundo +- na porta de entrada para que o programa entenda, pois achei q um um simples toque em frações de milisegundos seria suficiente, o pior q no simulador vai

não estou com o programa aqui, mas é mais ou menos assim:

main() {

int ola=1;

while(1){

if(input(pin_a1)==1){

ola=2;

}

if(ola==2){

....rotina

}else{

...rotina

}}

ele simplesmente nao mama a variavel, da impressao de resetar

Link para o comentário
Compartilhar em outros sites

ah sim isso ja entendi, na verdade ja estava usando o delay,

o unico problema é q ele reseta ao invés de mudar de variavel.

se eu ja coloco por exemplo a variavel a=2;

no programa ela funciona como 2, agora de falo pra trocar assim:

if(input(pin_a1)==1){

ola=2;

}

pronto, daí ele reseta

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!