Ir ao conteúdo
  • Cadastre-se

Otavio Pessini Bini

Membro Pleno
  • Posts

    34
  • Cadastrado em

  • Última visita

Tudo que Otavio Pessini Bini postou

  1. @aphawk @Isadora Ferraz , Não tive tempo para dar um feedback pra vocês, mas só tenho a agradecer mesmo.. Vocês nao tem a noção de como pequenas e grandes dicas passadas aqui me ajudaram a entender melhor o funcionamento do mc e também me despertaram o forte interesse no assunto.. Agora estou focado em programar o módulo gsm para integrar o funcionamento que eu quero.. E no mais, continuem assim, passando conhecimento adiante, pois tal atitude só vem a engrandecer ambas as partes! Forte abraço, e nos vemos em algum outro post.. hahahaha
  2. @Isadora Ferraz , consegui de novo!!! Depois de voltas e voltas, refazer todas as ligações e etc.. adivinha? Acredito que meu gravador estava bichado.. gravei de novo reiniciei o pc e tchumba, tudo OK.. Sei que não vem ao caso, mas aproveitando: Estava querendo adicionar uma rotina de interrupção 2, para quando a entrada RX/TX recebesse dados fizesse a mesma coisa.. é possível duas interrupções em um único MC? Isa, nem tenho como te agradecer, só Deus mesmo!!! Manda a conta que pago umas brejas hahahahahhahahahaha
  3. @Isadora Ferraz Outra pergunta besta: A saída RC4 precisa ter uma fonte de alimentação nela? Ou o próprio PIC alimenta a mesma? Valeu!
  4. Tentei realizar o teste do pisca pisca simples, e agora a saída simplesmente não sai do nivel baixo.. ta difícil... adicionado 32 minutos depois @Isadora Ferraz , tira umas duvidas? 1. Os capacitores do cristal, são ligados ao negativo certo? 2. Como saber se o cristal está ok? 3. Se está alimentado no MCLR/RESET 5V, quer dizer que está ok certo ? Que testes posso fazer? estou entrando em colapso.. kkk
  5. Fala pessoal, Achando que tinha cabado, fui passar pra placa, até que... 1. RB5 se encontra em pullup (alimentado), porém com uma tensão bem abaixo da alimentação.. 2. RC4 (saída) está setado em nível lógico quando RB5 está em nível alto, e quando desco o nivel do RB5, RC4 vai para quase 0 (deveria ser ao contrario, WTF?) 3. Mesmo assim, depois q joguei na placa, a tensão na saída está muito baixa, a ponto de não acender o relé.. Alguem sabe porque essa perca, já que quando meço o pino de laimentação do PIC está em 5V, e os outros abaixo? 4. Estou usando um soquete na placa, será que pode ser isso ? Não consigo concluir issooooooooo.... E precisava pra hoje,.. hahaha apanhando feito criança para algo simples!
  6. @aphawk Cara, acredita em mim.. Ja tinha feito tudo que foi mencionado, inclusive para tirar o efeito bouncing, o cap, enfim, tudo.. Mas não sei qeu diabos com o led acontecia isso, eu ein.. Agora no relé, tchumba, perfeito.. Enfim, vitória na guerra! hahahahaha
  7. @Isadora Ferraz , descobri sem querer o que estava de errado.. Testei ligando ao invés do LED, o proprio relé... e tcharam, funcionou perfeitamente como eu queria.. Acredito que o LED deva precisar de qualquer escape de tensão para acuionar, algo q o relé acredito que não... Agora você me deixou com uma curiosidade.. Ativando esse pullup interno, descartaria o uso do externo teoricamente? porque na pratica, com o detecctor de tensão (que funcionará como o interruptor/button), acredito ser mais interessante.. Outra perguntinha: Nesse caso, se a corrente está sendo suficiente para acionar o relé, não se faz necessário um transistor depois do resistor certo?! isso só derrubaria a tensão nesse caso, right? Valeu meus amores!
  8. @Isadora Ferraz Bom, fiz o que voce falou (tirar o interrupt no delay).. e notei algo.. Pode ser besteira, mas por exemplo, quando está em nivel alto a entrada, agora está apagada a saída.. Só de chegar proximo(encostar) no push button para direcionar a 0 a entrada, a saida faz o processo certo (vai p 1 no tempo do delay, e retorna a 0). Se eu fico segurando o button, sem apertar para fechar p 0 a entrada, a saida ja identifica a mudança, ai fica em 1 intermitente.. Ai preciso segurar o push button (que joga p 0), e soltar p a saida desligar de novo.. Algo que possa fazer para tirar essa sensibilidade?
  9. @Isadora Ferraz Bom, vamos lá. Isso será para controlar uma solenoide.. como? Por exemplo, a entrada no caso (RB5), será ligado um detector de tensão. O que eu quero é que, caso o detector de tensão está apontado que está em 1 (alimentado), vai para 0 (queda de tensão), quero que acione a saída RC4, ddurante 2 segundos, e depois desligue a saída RC4.. Quando essa entrada que caiu a tensão, se reestabelecer (ir para 1), quero que de novo a saida RC4 acione, durante 2 segundos, e desligue novamente.. Esse processo inifinito. Por que?! Veja, a saída RC4 será ligada a um relé de estado sólido, e esse relé será ligado a um pistão eletromagnetico.. O pistão precisa só de um pico de 2 segundos para acionar e ter a força que precisamos.. Entendeu? Vamos ver como se comporta desabilitando a interrupt durante o delay. Valeu!
  10. @Isadora Ferraz , Eis meu codigo atual : unsigned char temp; void interrupt (void) { if(INTCON.RBIF == 1) { RBIE_bit = 0x00; RBIF_bit = 0x00; RC4_bit = 0x01; temp = PORTB; RBIE_bit = 0x01; } } void main() { CMCON = 0x07; // Desabilita Comparadores; RBIE_bit = 0x01; // Habilita a interrupção por mudança do PORTB <7:4> RBIF_bit = 0x00; PEIE_bit = 0x01; // Desabilita Periféricos GIE_bit = 0x01; // Habilita a interrupção global TRISB = 0b00100000; // PORTB configurado como entrada digital TRISC = 0xEF; // Apenas usaremos RC4 como saída digital RC4_bit = 0x00; while(1){ if(RC4_bit) { delay_ms(2000); RC4_bit = 0x00; } } } Bom, coloquei o cap conforme mencionou, na entrada do RB5, e ligado ao resistor e ao pushbutton. Porém, agora o que acontece é que quando RB5 está em nivel logico alto, RC4 também fica, por alguns mtos segundos, e depois desliga. Quando nesse estagio que está RB5 em nivel alto e RC4 em nivel alto tb, se eu mando p nivel baixo a entrada, RC4 vai para 0 (desliga LED), e quando volto p nivel 1 a entrada ele acende de novo, porém nao por tantos segundos e desliga.. ainda está meio confuso.. Eu ein......
  11. @Isadora Ferraz , Sim, eu entendi .. Mas foi o que falei, direcionando só a RB5 como entrada e as outras como saída, indifere se elas ficam alimentadas então, é isso ? Vou colocar o cap conforme mencionado, e testar esse código que você está citando.. Posto já para não perder-lo de vista kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk E to tentando epgar no tranco, mas tá difícil..
  12. @Isadora Ferraz , bom dia. Realmente houve uma melhora.. Mas ainda continua estranho.. A saída fica ligada (LED ACESO), quando eu corto a alimentação de RB5, o LED apaga, porém quando volto a alimentação ele acende (mas não fica 3 segundos e desliga de novo).. Percebi que as outras entradas RB ainda estão sendo alimentadas (não sei porque).. Não teria um jeito de simplesmente desativar elas para teste? Não colocando apenas como saída? Outra coisa que pensei, na interrupt, não daria apenas para monitorar a porta que eu quero para acionamento da saída, ao invés de monitorar o PORTB inteiro? No aguardo, e com prazo esgotando.. hahahaha
  13. @Isadora Ferraz , sim, venho com good news! Agora funcionou, apenas desabilitando o GIE e as outras interrupções.. Nem precisei pullup em todo o portB.. Como podemos continuar pra ir eliminando o que pode estar errado ?
  14. @Isadora Ferraz hahaha sem erro com as brincadeiras.. rs agora a bad news, usando: for(;;) { RC4_bit=1; delay_MS(3000); RC4_bit=0; delay_MS(3000); //2º delay } O LED NÃO PISCA! que diabos ser isso ? Ele fica aceso full time.. Sério, nao da p entender! o cristal de 16 usa-se p gravar o HS esmo né ?
  15. @aphawk Paulo, boa tarde. Seguindo seu conselho, conforme pode ver na imagem abaixo, utilizei so os pinos a direita para alinmentação, e recoloquei o cristal colado ao PIC.. @Isadora Ferraz , o pino RB5 agora está em 5V sem o interruptor pressionado, porém quando pressiono, vai para 0V absoluto, só que não faz nenhuma diferença na saída RC4.. A saída RC4 está setada sempre em 5V agora (alimentando o LED), nada nas entradas consegue mudar a tensão nessa saída.. Vi que as outras entradas RB estavam em 5V.. pensei que como a gente estava analisando o PORTB, poderia dar algum conflito só alterando a RB5 e as outras não.. Portanto, setei o PORTB para iniciar em 0V, e agora fica assim: Apenas RB5 em 5V, e as todas as outras RB e RC com exceção da RC4 ficam em 0.54V mais ou menos... Estou gravando com cofig HS, pois o cristal é de 16MHz.. Seguindo seu conselho, tentei usar esse código abaixo para testar um led piscando a cada 3 sregundos apenas: void main() { CMCON = 0x07; // Desabilita Comparadores; RBIE_bit = 0x01; // Habilita a interrupção por mudança do PORTB <7:4> RBIF_bit = 0x00; PEIE_bit = 0x01; // Desabilita Periféricos GIE_bit = 0x01; // Habilita a interrupção global TRISB = 0xFF; // PORTB configurado como entrada digital TRISC = 0xEF; // Apenas usaremos RC4 como saída digital RC4_bit = 0x00; for(;;) { RC4_bit=1; delay_MS(3000); RC4_bit=0; } } Porém ele a RC4 fica sempre ligada (LED aceso), porém não pisca.. Sabem o que estou fazendo errado ? Estou desesperado.. tenho 2 dias para concluir esse projeto..
  16. Fala Professores, Acharam que não iria voltar né, rsrsrsrs] Pois bem, segui as diversas dicas por aqui, conforme podem ver na imagem em anexo do circuito atual, e .... NADA FEITO. Simplesmente a saída RC4 não aciona diante do acionamento do push button na entrada.. Mais dicas?
  17. @aphawk Fala Paulo, beleza? Pois bem.. se você observar, nos pinos VCC do PIC existe capacitores de desacoplamento.. Agora no GND tb?
  18. @Isadora Ferraz , hahahaha tenha paciencia comigo... rs Segue a imagem do "novo circuito" em anexo.. É assim que você sugeriu a ligação? está correta?! Outra coisa, não irei acender um led, isso é apenas para teste.. Vou utilizar para controlar um relé de estado sólido.. Ah, e como não possuo um resistor de 1K, coloquei um de 2 pro led.. Acho que não influencia muito né?! Resumo: Caso a ligação esteja ok, adianto que com o interruptor não pressionado (NA), ainda consta a pequena tensão em RB5..
  19. @Isadora Ferraz , bom dia. Pensava que minha dor de cabeça havia acabado... SÓ QUE NÃO! Simulando no Proteus, o programa está correspondendo exatamente da forma em que eu quero... Porém, na protoboard, isso não acontece! A saída RC4 (onde estou testando com resistor + led conforme pode ser visto na imagem a seguir), simplesmente não aciona com variação na entrada RB. Notas: 1. O circuito está sendo alimentado, constatado pelo multimetro; 2. A saída RC4 não oscila nenhuma tensão, constado pelo multimetro (logo não é o resistor, nem o LED); 3. A entrada RB5, mesmo não alimentada, constatei que fica com uma tensão de 0.45V (não sei porque...). Pensei que talvez seja isso o problema, já que não fica em 0 absoluto conforme a condição do programa (não há mudança na entrada). Caso for isso, como posso corrigir e tirar essa tensão residual? 4. O estranho é que quando jogo a entrada RB5 para o neutro (forçando assim o 0V absoluto), também nada acontece.. O que penso que desafirma a questão acima, correto? 5. Testei com diferentes fontes de alimentação: 5V e pouquinho, 3.7V , e 4V e pouquinho. 6. O estranho é que nos primeiros testes, por incrivel que pareça e antes de tentar mil coisas, a programação constatava acendendo o led por 2 segundos, porém apenas quando ia de 0 para 1 na entrada.. dps alterei algumas coisas, religuei os fios achando que era algum curto, e apenas piorou, simplesmente a saída RC4 não faz nada! Segue abaixo o código que estou usando: unsigned char temp; void interrupt (void) { if(INTCON.RBIF == 1) { RBIE_bit = 0x00; RBIF_bit = 0x00; RC4_bit = 0x01; temp = PORTB; RBIE_bit = 0x01; } } void main() { CMCON = 0x07; // Desabilita Comparadores; RBIE_bit = 0x01; // Habilita a interrupção por mudança do PORTB <7:4> RBIF_bit = 0x00; PEIE_bit = 0x01; // Desabilita Periféricos GIE_bit = 0x01; // Habilita a interrupção global TRISB = 0xFF; // PORTB configurado como entrada digital TRISC = 0xEF; // Apenas usaremos RC4 como saída digital RC4_bit = 0x00; while(1){ if(RC4_bit) { delay_ms(2000); RC4_bit = 0x00; } } } E segue em anexo a imagem do circuito de teste na protoboard. Consegue me ajudar dizendo se há algum erro no código ou no circuito montado? No mais, agradeço... To batendo cabeça a noite inteira! rs
  20. @Isadora Ferraz Realmente, é a peça atras do monitor... hahahahaha nao me atentei do bit = 0.. cabacisse! Mais uma vez obrigado! aleluia VOCÊ me fez chegar onde queria! Só agradeço... E adianto que, aprendi muito aqui, e vou continuar estudando a linguagem.. to curtindo afinal! Forte abraço!
  21. @Isadora Ferraz , Sim, apaguei... E reabilitei o bit sim.. Código atual : unsigned char temp; void interrupt (void) { if(INTCON.RBIF == 1) { RBIE_bit = 0x00; RBIF_bit = 0x00; RC4_bit = 0x01; temp = PORTB; RBIE_bit = 0x01; } } void main() { CMCON = 0x07; // Desabilita Comparadores; RBIE_bit = 0x01; // Habilita a interrupção por mudança do PORTB <7:4> RBIF_bit = 0x00; PEIE_bit = 0x01; // Desabilita Periféricos GIE_bit = 0x01; // Habilita a interrupção global TRISB = 0xFF; // PORTB configurado como entrada digital TRISC = 0xEF; // Apenas usaremos RC4 como saída digital RC4_bit = 0x00; // Inicia a saída em nível baixo while(1){ if(RC4_bit) { delay_ms(2000); RC4_bit = 0x01; } } } Estou compreendendo muito melhor depois que você expos as problemáticas, principalmente quanto a estrutura... Manja pouco rs Pode ser algum problema no circuito em si ? (Acredito que não...) Otavio.
  22. @Isadora Ferraz Muito boa tarde! Sei que entendo muito pouco, e não é só uma questão de ctrl c + ctrl V.. Mas pode ter certeza que dessa forma, estou absorvendo e aprendendo com certeza (no meu ritmo, lógico rs)... Porém Isadora, acontece que só está ativando a saída RC4 quando muda a porta RB de 0 para 1... de 1 para 0 nada acontece!!! Outra coisa, mesmo deixando o tempo de 2 segundos no main para quando a porta RC for ativada, desligar em seguida, isso não está acontecendo! A porta RC fica em 1 eternamente... Sabe o que pode estar ocorrendo ? Mais uma vez, só tenho a agradecer...
  23. @Isadora Ferraz Boa tarde!! Ainda bem que não me abandonaste.. rs Continuando meu desespero tentei o seguinte código: void interrupt (void) { while(1){ if(INTCON.RBIF == 1) { RBIE_bit = 0x00; RBIF_bit = 0x00; RC4_bit = 0x01; temp = RB5; INTCON.RBIF = 0x00; } } } void main() { CMCON = 0x07; // Desabilita Comparadores; RBIE_bit = 0x01; // Habilita a interrupção por mudança do PORTB <7:4> RBIF_bit = 0x00; PEIE_bit = 0x01; // Desabilita Periféricos GIE_bit = 0x01; // Habilita a interrupção global TRISB = 0xFF; // PORTB configurado como entrada digital TRISC = 0xEF; // Apenas usaremos RC4 como saída digital RC4_bit = 0x00; // Inicia a saída em nível baixo } Porém agora o que acontece é o seguinte: 1. expressão temp dá erro; 2. Apenas quando a RB5 (entrada) está em 1 que ativa a saída.. Quando passa para 0, desativa.. 3. Como vou fazer para acionar a RC4, deixar 2 segundos e desativa-la, já que não consigo colocar delay? Deus no céu, Isadora na terra..
  24. @Isadora Ferraz Bom dia!!! Pelo que eu compreendi, e através das minhas tentativas, não conseguiria fazer o que desejo (monitorar a alteração na Porta RB5) com esse interrupt correto ? Consegue me aconselhar que caminho devo seguir? Estou desesperado... Grato!
  25. Bom dia a todos, Realmente, faço várias tentativas de diferentes formas mas definitivamente NÃO SAIO DO LUGAR. O mais próximo que consigo chegar, é habilitar a saída RC4 apenas em caso da porta de entrada estar em 0 ou 1, porém não monitorando a sua mudança. Galera, por favor, me deem uma luz.. Sei que sou bem leigo, e vocês estão abrindo bastante meus horizontes, mas não estou conseguindo. Grato mais uma vez!

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!