Ir ao conteúdo
  • Cadastre-se

IAS

Membro Pleno
  • Posts

    39
  • Cadastrado em

  • Última visita

posts postados por IAS

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

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

    post-450483-13884955085355_thumb.jpg

    post-450483-1388495508559_thumb.jpg

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

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

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

    post-450483-13884954767017_thumb.png

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

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

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

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

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

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

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

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