Ir ao conteúdo
  • Cadastre-se

IAS

Membro Pleno
  • Posts

    39
  • Cadastrado em

  • Última visita

Tudo que IAS postou

  1. ma2008, Se o seu problema é ao compilar (converter o código BASIC em .HEX), bom, ai não tem jeito: o erro provavelmente é no seu código, porém se você já converteu o seu código BASIC no arquivo .HEX e o que deseja é gravar no PIC, e já configurou a porta do seu PC de acordo com o seu gravador, estabelecendo a comunicação entre os dois e não consegue gravar, veja a resposta acima; um outro detalhe é que se você está usando o WINXP, para acessar o hardware, é necessário um driver específico para o WINXP na maioria dos programadores. Espero ter sido de alguma ajuda... IAS
  2. ma2008, Se o seu problema é ao compilar (converter o código BASIC em .HEX), bom, ai não tem jeito: o erro provavelmente é no seu código, porém se você já converteu o seu código BASIC no arquivo .HEX e o que deseja é gravar no PIC, e já configurou a porta do seu PC de acordo com o seu gravador, estabelecendo a comunicação entre os dois e não consegue gravar, veja a resposta acima; um outro detalhe é que se você está usando o WINXP, para acessar o hardware, é necessário um driver específico para o WINXP na maioria dos programadores. Espero ter sido de alguma ajuda... IAS
  3. ma2008, Se o seu problema é ao compilar (converter o código BASIC em .HEX), bom, ai não tem jeito: o erro provavelmente é no seu código, porém se você já converteu o seu código BASIC no arquivo .HEX e o que deseja é gravar no PIC, e já configurou a porta do seu PC de acordo com o seu gravador, estabelecendo a comunicação entre os dois e não consegue gravar, veja a resposta acima; um outro detalhe é que se você está usando o WINXP, para acessar o hardware, é necessário um driver específico para o WINXP na maioria dos programadores. Espero ter sido de alguma ajuda... IAS
  4. Caro Rodrigo, São inúmeras as possibilidade para o não funcionar....comece checando a alimentação nos pinos do PIC com um mutímetro, confira o circuito conexão à conexão (se montado em protoboard), substitua o PIC (se tiver outro disponível), o cristal (se estiver usando), confira se o reset está realmente conectado ao +5v.....enfim, são incontaveis possibilidades inclusive em relação ao proprio gravador, em alguns que usam a tensão "roubada" da porta serial, nem sempre conseguem programar o pic por se encontrar no limite (varia de pc para pc) - teóricamente as tensãoes presentes nas portas COM deveriam ser de +15V e -15V, porém na maioria dos casos estão abaixo. Já vi alguns cometários na NET referindo-se ao fato de alguns PIC's poderem ser programados nestas condições e outros não. Amigo Paulo e Felipe.... Se puderem, olhem a versão do MikroBasic Pro PIC 2010.....saiu com alguns recursos novos muito interessantes - um deles é a rotina de botão incluindo a função debouncing, semelhante ao Bascom - AVR. Abraços.... IAS
  5. Caro Rodrigo, Inicialmente após desenvolver e testar a sua rotina dentro do PSI, você deverá dentro do Basic Compiler usar a opção "Compile & Assemble & load" para gerar o seuarquivo.HEX e tambem para poder simular o funcionamento dentro do PSI Para gravar o PIC usando o MPLAB, você deve ir em File --> Import e importar o seuarquivo.HEX, logo a seguir vá em programer --> Select Programer ----> PICKIT2, feito isso voltar em programer ------> program, o seuarquivo.HEX será gravado no PIC. Evidentemente que para você efetuar a gravação com o seu PICKIT2, o mesmo deverá estar conectado ao pc e configurado de acordo com o mplab, tendo a comunicação entre o os dois estabelecida. Acredito não ter pulado nenhum passo, mas....qualquer coisa que possa ajudar. Abraços IAS
  6. Amigo Guilmo... Seja bem vindo ao forum e não se preocupe quanto a idade.....parece que aqui a maior parte é "coroa". Eu mesmo tenho 58 anos, também trabalhei com rádio mono e multicanal e até há um ano atrás não entendia nada de programação de PIC's apesar de algumas tentativas anteriores estudando assembler. Hoje, graças aos companheiros desse fórum, já consegui resultados práticos inimagináveis há um ano atrás. Se houver alguma coisa em que possa ajudar, pode contar. IAS
  7. Mestres Paulo e Felipe.... Atendendo as sugestões e conselhos dos amados mestre (KKKK), estou migrando pro's AVR. Ainda seguindo os pareceres de você's, vou adquirir o kit de desenvolvimento da microgenius para o ATMEGA16 e recomeçar a batalha do inicio. Tinha previsto essa migração um pouco mais adiante quando tivesse explorado mais profundamente os recursos dos PICs porém tornei a baixar o tutorial atualizado dos AVR's e seguir em frente, mesmo que pulando etapas no PIC, porém pelo nível dos integrantes do forum e principalmente pelo apoio que tenho obtido de todos resolvi enfrentar a fera (os AVR's). Logo, logo vou ter um montão de dúvidas e perguntas sobre os esses bichinhos que parecem uma centopeia mas que dão uma alegria grande quando a gente consegue fazer eles obedecerem. Um abraço a todos... IAS
  8. Bom Paulo, mais uma vez os meus sinceros agradecimentos a todos os que fazem este forum andar, e render frutos - sei que alguns "experts" até torcem o nariz ao se falar em desenvolver em BASIC mas... através dessa linguagem e com o auxilio do PSI também é possivel obter bons resultados mas, ainda resta muito a aprender sobre os PIC's e tambem sobre o PSI: até o momento ainda não tive necessidade de maior quantidade de memória ou recursos além dos fornecidos pelos PIC16F877, porém acredito que a migração para um chip de maior poder de fogo seja algo natural e decorrente do aprendizado - devo estar recebendo nos proximos dias o kit de desenvolvimento para os PIC's da famííla 18F, já que o uso de USB é cada vez maior - Os AVR's terão que esperar um pouco. Mas como citei acima ainda restam muitas dúvidas a respeito do PSI: uma coisa que parece boba mas ainda não encontrei o caminho foi acender o display LCD com a instrução lcdcmdout LCDDISPLAYON - dá erro de compilação no PSI, evidentemente que essa instrução segue os mesmos parâmetros e sequencias mencionadas no seu tutorial. Um outro projeto nosso, já montado, testado e em funcionamento é o comandar 64 relés e receber 4 alarmes pela porta serial do PC usando um simples PIC16F628. Abraço a todos.... IAS
  9. Senhores.... Apenas com o intuito de contribuir de forma positiva, somando se possivel meus parcos conhecimentos aos do grupo, abaixo segue uma rotina por mim usada e que testa o apertar de dois botões simultaneamente, usando a operação AND. espera: If sw_mnu_menos = 0 And sw_mnu_mais = 0 Then If flags.6 = 0 Then flags 0.6 = 1 menu = 0x00 GoTo menu_prog Else GoTo testa_sw_on_off End If Else flags = 0x00 End If Ela é parte do projeto de um CLP de baixo custo por mim desenvolvido, destinado a automatização de uma empacotadeira industrial, onde aciono de forma cíclica 12 relés, com tempos de operação e desoperação programaveis, leio um teclado multifunção de 5 teclas e tenho 4 sinais externos de controle. Possui um menu de 32 itens onde ajusto os parametros de funcionamento tais como quantidade/minuto, pontos de operação e desoperação de cada um dos relés de acordo com o estado de 4 sensores, já implantada e em funcionamento em uma pequena industria. Evidentemente que devo o resultado satisfatório obtido aos integrantes deste forum, em especial ao Paulo pelos sábios ensinamentos e incentivo. O meu próximo desafio é implementar um sistema automatizado, controlado por duas balanças eletrônicas. IAS
  10. Mestre Paulo.... Gostaria se possivel que o amigo me tirasse algumas dúvidas sobre o PIC16F877A, se possível. Interrupções: 1 - Como fazer para habilitar repetidas interrupções externas apenas do pino RBO "1"---> "0"? existem na rotina varias instruções WaitMS e WaitUS e a rotina implementada responde a todas. --------------------------------------------------- Quanto as interrupções: no inicio do programa: INTCON.INTF = 0 INTCON.INTE = 1 ONTCON.GIE=1 no final do programa: On Interrupt Save System If sw4 = 0 Then Low rele12 Lcdcmdout LcdClear Lcdcmdout LcdLine1Home Lcdout "Emergencia" WaitMs 5000 INTCON.INTF = 0 Goto inicio Endif Resume é acionada em porém gera uma mensagem 'HARDWARE STACK OVERFLOW' em pontos ou instruções de WAIT diferente ou LCDCMDout Antecipadamente agradeço.... IAS
  11. Oia nós aqui também.heheheh Amigo Paulo.....mais uma vez meus parabens - também estou nessa apesar de ainda não ter recebido meu canudo do PIC basic hehehe Um grande abraço e pode contar comigo tambem aqui azucrinando a sua paciência. IAS
  12. Amigo Tche.... Até onde aprendi de asm ou de basic, não dá. Se eu estiver enganado, os mestres presentes me corrijam: Em asm você teria que criar uma tabela com o end inicial, mostrar para um ponteiro e ir incrementando o end, No basic é semelhante...lembre-se que em cada posição de memória só dá para guardar 1 byte, ou seja, de H00 a HFF. Pelo que eu entendi do seu projeto, o mesmo é bastante interessante, o objetivo me parece é mostrar uma frase em movimento, deslocando-a a esquerda, semelhante ao existente em ônibus etc... no momento ando muito atarefado com a construção de um microCLP usando o PIC 16F628A e o basic, porém acho bastante simpática a ideia da construção de um painel de msg's (essa era a ideia nº 4 de uma lista de 10)ainda estou concluindo a Nº 2). Eu tb tive dificuldades para usar a instrução SHIFTLEFT no PSI para serializar um byte no reg W, porém encontrei um caminho alternativo mostrado algumas pag atrás. PS: O pino 12 do 74HC595 é LATCH ou seja, você põe um dado no pino 14, espera que o mesmo estabilize, envia um pulso de clock no pino 11, espera que o mesmo estabilize e só então envia o pulso do LATCH no pino 12. Se houver algo que eu possa ajudar, estou a disposição. IAS
  13. TcheCara; O 74HC595 tem uma grande vantagem em cima do 74LS164, ele (o 74HC595) internamente além do shift register possui um latch de 8 bits; portanto o dado não fica "guardado" dentro do shift register e sim dentro de uma memória, o que antes era necessário usar um 74LS164 e um 74LS374, hoje faço com um único CI, o 74HC595, além é claro de ser tecnologia HC. Abaixo a página de um Ebook baixado da net e que disponibilizo a quem interessar. Registo de Deslocamento de Entrada Paralela Os registos de deslocamento de entrada série e saída paralela, transformam dados série em dados paralelo. Sempre que ocorre um impulso ascendente de clock, o registo de deslocamento lê o estado lógico da linha de dados, guarda-o num registo temporário e repete oito vezes esta operação. Quando a linha ‘latch’ é activada, os dados são copiados do registo de deslocamento para o registo de saída (registo latch) onde ficam disponíveis em paralelo. As ligações entre um registo de deslocamento 74HC595 e um microcontrolador, mostram-se no diagrama em baixo. Ligação de um registo de deslocamento de saída paralelo a um microcontrolador Abraços.... IAS
  14. Amigo TcheCara.... A rotina que eu uso pode não ser a mais "elegante", porém funciona: foi testada no PSI e montado em PCI, onde foram realizados os testes práticos; reais. Crio uma variável "temp" onde ponho a palavra de comando, crio uma variavel latch na qual determino qual shift register deve converter os dados de serial para paralelo e chamo a subrotina Checa_bit; lembando que para o shift register funcionar ou seja converter os dados recebidos serialmente e disponibiliza-los em paralelo são necessários 3 sinais: Dado, Clock e latch checa_bit: If temp.0 = 1 Then ;ler o bit 0 de temp PORTB 0.6 = 1 ;coloca o bit 0 de temp na entrada de dados do shif register Else PORTB 0.6 = 0 ; End If WaitMs 1 ;aguarda que o dado estabilize GoSub clock ;chama a sub rotina clock para inserir 1 bit no shift register If temp.1 = 1 Then ;faz a mesma coisa descrita acima para o bit 1 e assim PORTB 0.6 = 1 ;sucessivamente até o bit 7 Else PORTB 0.6 = 0 End If WaitMs 1 GoSub clock ----------------------------------------------------------------------- If latch = "0" Then ;transfiro para a saida do shift register indicado pelo ;pelo conteúdo de latch PORTB 0.5 = 1 ;no caso presente, liguei 6 shift's register onde o WaitMs 1 ;sinal de dados e de clock entra em todos e em apenas 1 PORTB 0.5 = 0 ;o indicado pelo sinal de latch transfere os dados para a End If ;saída do shift register ----------------------------------------------------------------------------- clock: portB.7=1 waitMS 1 portB.7=0 waitMS 1 return Espero ter ajudado.... Abraços a todos IAS
  15. Amigo Paulo... Seja bem vindo no seu retorno. A sua presença tem feito falta por aqui. Quanto ao circuito de acoplamento isolado RS232 disponibilizado um pouco atrás, o protótipo já montado está funcionando redondinho a 2400 Bps, sem erros ou falhas. Tendo procurado na net e não encontrado nada, disponibilizei-o aqui, talvez possa interessar a alguém. TcheCara e JFeliciano - Gostaria de sugerir se me permitem o uso do Shif Register 74HC595, estou usando o mesmo em um projeto com o PIC, é um circuito atual (o 74LS164 está obsoleto) fácil de encontrar, com baixo custo e tecnologia HC....como estou trabalhando em algo similar e já tenho as placas montadas, talvez possamos nos ajudar mutuamente - o que o meu sistema já faz: envio do PC via RS232 seis palavras de comando, uma para cada shift register 74HC595 e em cada saida dos mesmos aciono um relé ou seja: desejo acionar o relé X do shift register Y - envio uma palavra de comando com o endereço do shift register Y, relé X e após o recebimento da palavra de comando válida, envio de volta para o PC uma string "Comando Processado", se é uma palavra de comando não válida, o PIC retorna uma string "Erro na Comunicação Serial", seguida da palavra de comando errada. Com esse sistema consigo fazer qualquer combinação de acionamento dos relés (&H00 a &HFF). Espero ter ajudado de alguma forma... IAS
  16. Amigos, Procurando uma maneira de acionar comandos elétricos através da RS232 do PC de modo a que houvesse isolamento elétrico entre o mesmo e o circuito de comando, achei que a maneira mais simples e barata de prover esse isolamento e ao mesmo tempo fazer a conversão de níveis RS232/TTL seria usando acopladores óticos tipo 4N25 ou similares ao invés do famoso MAX232 e procurando na net me supreendi com o pouco ou quase nada existente a respeito. Abaixo disponibilizo o circuito a que cheguei - espero que possa vir a ser de alguma utilidade para alguém que passe por um problema semelhante. IAS PS: O pic usado é um 16F628A
  17. Tiagod2... Amigo, estou usando já a cerca de 6 meses o conjunto multiprog e Multipic fabricados pela smartradio (www.smartradio.com.br) .....o que posso dizer é que são de excelente qualidade e o custo relativamente baixo além do suporte muito bom que o pessoal dá. Cheguei a montar um desses open source - tanto o gravador quanto a placa experimental mas terminei comprando um conjunto (programador e placa de testes) prontos. Paulo; Realmente amigo...nos testes usei 2 opto acopladores 4N25 para fazer o isolamento eletrico e imagino que deve ser os "bichinhos" hehehe, vou testar novamente seguindo a sua orientação e ir baixando a velocidade e testando - existem outros sinais na porta COM a manusear via soft para conseguir as tensões de +15V e -15V necessárias e já resolvidos, mas não encontrei nada a respeito do uso de optos acopladores. O resultado posto aqui. Abraços... IAS
  18. Amigo TcheCara... Antes de mais nada o meu muito obrigado pela sua atenção. Vasculhando a net, encontrei varias maneiras e formas de substituir o MAX232, seja utilizando transistores, portas NAND, portas NOR ou ainda inversores ou ainda o par também específico 75XXX, nenhuma delas prevê o isolamento elétrico entre o DTE e o DCE, encontrei também uma monografia de mestrado da UFMG descrevendo o uso da porta COM e afirmando que para se utilizar a comunicação RS232 é indispensável que exista um terra comum entre os dois sistemas - mesmo assim montei os opto-acopladores e fiz testes aqui: consegui estabelecer a comunicação entre o PC e o PIC, porém todos os caracteres saem/chegam errados. Poderá até ser o uso de optos inadequados (baixa veleocidade de comutação) ou algum outro detalhe, porém no momento não tenho condições de afirmar. O que posso afirmar é que o mesmo PIC com o mesmo programa gravado estabelece comunicação bi-direcional sem erros utilizando o MAX232. Quanto ao material que você disponibilizou é uma tonelada hahaha....haja tempo para analisar um a um - alguns com descritivo em linguas completamente desconhecida para mim. PS: Se houver algo em que eu possa ajudar....é só sinalizar daí. Abraços... Itamar
  19. Amigo Tchecara; A minha intenção é substituir o famoso MAX232 (conversor de níveis RS232/TTL) por acopladores óticos já que o MAX232 converte os níveis de tensão +15 e -15V presentes nas portas COM do PC em níveis TTL, porém não provê isolamento elétrico e como as saídas do PIC vão acionar relés colocados dentro do quadro de distribuição de energia elétrica a 30/40m de distância através de par telefônico comum, existe o risco de um desses fios que conduzem 12V,conectados a bobina dos relés possa entrar em curto circuito com o fase e sendo o 0V do PC na maioria dos casos aterrado já viu que kaka vai dar....a utilização de infravermelho seria uma solução assim como o uso de acopladores óticos também... caso o amigo disponha de algum circuito onde são utilizados infravermelho na porta COM e puder disponibilizar...fico agradecido. IAS
  20. Senhores.... Necessito isolar eletricamente um sistema de comandos PC/PIC que usa a RS232. Como é grande o número de comandos(48) torna-se inviável usar acoplador ótico em cada uma das saidas. Existe algum circuito exemplo usando acopladores óticos na entrada PIC fazendo a conversão dos sinais RS232/TTL sem ter de recorrer a uma segunda fonte isolada da primeira? Qualquer sugestão será bem vinda... Abraços a todos IAS
  21. Paulo, Apesar de o PSI ser um programa fantástico do meu modesto ponto de vista, parece também ter seus bugs...e com os iniciantes no uso do mesmo como é o meu caso, falta a segurança que só a experiência traz. Mais uma vez, o meu muito obrigado. PS: Quando é que sairá a terceira parte do tutorial? Um forte abraço... IAS
  22. Senhores.... Segundo li em um dos numerosos tutoriais, artigos, foruns, não lembro bem.... sobre o PIC, o acesso a leitura e/ou escrita de dados na EEPROM leva um tempo muito maior que o acesso a uma posição de memoria comum. Desenvolvendo um programa para o PIC e desejando não perder os dados (17 variaveis ao todo), resolvi armazena-los na memória EEPROM e recupera-los ao iniciar após um reset do sistema. Usando o PSI fiz: Ao iniciar o programa, carrego uma matriz b de 17 elementos dim a as byte dim b(16) as byte for a= 0 to 16 read a, b(a) next a o sistema entra em loop infinito, exatamente lendo a EEPROM, porém de fizer: dim a as byte read 0,a b(0)=a read 1,a b(1)=a ...... ..... b(17)=a a coisa funciona. Algum dos colegas com mais experencia no uso do PSI tem alguma explicação para o fato ou sugestão? Antecipadamente agradeço alguma sugestão/informação. IAS
  23. Senhores... Existe algum código exemplo em basic PSI que possa ser disponibilizado ou sugestão de como implemenar um menu de muitos itens a ser mostrado no LCD usando poucas chaves no PIC? Exemplo: a intenção é alterar individualmente o tempo que cada led permanece aceso em um sequencial de 8 leds. Qualquer sugestão será bem vinda e antecipadamente agradeço... IAS
  24. Mestre Paulo... Na realidade, não é o byte a transmitir e sim o byte recebido a ser serializado - optei pela sua sugestão de "solução deselegante" e a coisa funcionou perfeitamente. Em tempo: conclui com sucesso o desenvolvimento do programa no PIC em tempo record, após de 2 anos e varias tentativas frustadas/desistencias e retomadas no assembler, o desenvolvimento usando o PSI foi rápido principalmente graças ao seu tutorial sobre o basic/PSI e a sua valiosa ajuda na solução de alguns detalhes. Já gerei o arquivo .HEX, gravei em um PIC 16F628A e testei com absoluto sucesso no kit de desenvolvimento da SmartRadio (www.smartradio.com.br). Agora é passar para a PCI e testar em campo. O que o programa faz: Ao iniciar, transmite uma msg para o PC via porta COM a 9600 bouds rate "Comunicação Serial Ativa" e fica aguradando um comando proveniente do PC - decorrido um tempo, sai da rotina de espera (TIMEOUT) e entra em uma subrotina onde checa 4 chaves, enviando para o PC a informação se uma ou varias chaves foram acionadas - "Alarme 1", "Alarme N" e volta a rotina de espera de um comando enviado pelo PC - Se houver um comando enviado pelo PC, guarda a string de comando em um bufer de 5 bytes - checa se 3 dos 5 estão corretos segundo uma máscara e executa um ou vários comandos contidos nos outros 2 bytes, enviando ao PC a msg de "comando executado" - se qualquer um dos 3 bytes da máscara de controle estiver errado, não executa nada, a não ser enviar uma msg ao PC "Falha na comunicação serial". A intenção é que o PC possa acionar individualmente cada uma das 48 cargas conectadas ao sistema e monitorar cada uma das 4 chaves. OBS: A memória usada foi de apenas 907 words (189 linhas) Um grande abraço e o meu muito obrigado. IAS
  25. Amigo Paulo.... Realmente os módulos de RF da Futurlec prometem muito (alcance de 300 e 800m) em área aberta. Teria que testar para ver se realmente funcionam - infelizmente parece não haver representantes no Brasil dos mesmos. Estou tendo dificuldades com uma rotina em basic para testar os 8 bits de uma variavel, se houver alguém que possa ajudar agradeço antecipadamente. A rotina é essa: dim x as byte dim temp as byte for x=0 to 7 if temp(x)=1 then porta.1=1 if temp(x)=0 then porta.1=0 waitus 100 next x uma outra tentativa foi: for x=0 to 7 temp=shiftright(temp,1) waitus 100 if status.c=1 then porta.1=1 if status.c=0 then porta.1=0 next x O objetivo desta rotina é serializar o byte contido em temp, fazendo o mesmo sair pela porta.1 - Nenhuma das duas funcionam. Desde já agradeço a boa vontade de alguém que possa esclarecer ou orientar para o bom funcionamento da mesma. IAS

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!