Vamos programar com o Arduino – #05: Interrupts


Destaques PPLWARE

15 Respostas

  1. Marco Palha says:

    Na minha sincera opinião quem revela algum tipo de gosto por este tipo de abordagem software/hardware deveria não aprofundar mais o conhecimento em bibliotecas e IDE Arduino e passar para placas de desenvolvimento e linguagens de programação mais sofisticadas.
    Quando muito programar placas Arduino em C. Com IDEs que possam ser realmente ser apelidados de IDE e não com IDE Arduino. Não há lugar para Lego na tecnologia. Não nos podemos contentar com uma aplicação que funcione sem entendermos porque. Sem conhecermos tudo o que está por trás disso. Sem entendermos realmente que o overhead por trás de um simples firmware desenvolvido com Arduino IDE e bibliotecas, tem uma enorme probabilidade de falhar. Sem que nunca cheguemos a entender porquê.
    Vamos começar a pensar mais à frente um pouco no tempo. Vamos ser BONS naquilo que fazemos, ou pelo menos tentarmos.
    A abordagem e a filosofia do Arduino como a maioria conhece é boa … Mas apenas para os primeiros tempos. Para nos habituarmos à electrónica e programação. Mas mal se entenda a essência daquilo temos que mudar.
    Se nos deixarmos ficar por umas bibliotecas “pré-fabricadas” e “moduladas” para todo o tipo de projecto nunca vamos ser mais do que montadores de Lego.

    • Marco Palha says:

      Digo:
      ” Se nos deixarmos ficar por umas bibliotecas “pré-fabricadas” e “moduladas” para todo o tipo de projecto *senão* nunca vamos ser mais do que montadores de Lego. “

    • Marco Palha says:

      Digo:
      ” Se nos deixarmos ficar por umas bibliotecas “pré-fabricadas” e “moduladas” para todo o tipo de projecto *senão* nunca vamos ser mais do que montadores de Lego. “

      • Micael Lagoa says:

        concordo com o seu comentário, devemos de saber o que realmente esta a acontecer ao correr com o programa, os registos que estao a ser usados e muito mais, eu comecei por programar microchips, realmente da para fazer de tudo, depois descobri o arduino, que para pequenos projetos pessoais é bem mais fácil de fazer coisas simples.

    • 123asdasd123123123123 says:

      tudo depende do objectivo, para muitos arduinos é passatempo ou para pequenos projectos pessoais.
      Quanto a bibliotecas pre-fabricadas, sinceramente toda a gente usa, seja em java, C# ou outra linguagem 😀

  2. Gonçalo says:

    Optimo artigo. No entanto deixo aqui uma critica construtiva: o pessoal que frequenta o Pplware é na sua maioria putos novos, iniciados na informática muito depois do comum uso de interrupts quer para configuração de hardware através de jumpers quer em programação, especialmente em Assembly. Portanto seria bastante útil explicar de forma simples o que é um interrupt, e a maneira mais simples que encontro é:
    Um interrupt é como se faixa um canal reservado, como que uma faixa de uma autoestrada. Imaginem que ha uma autoestrada com um numero exagerado de faixas, uma reservada a ambulâncias, uma a taxis, uma a autocarros, etc. No entanto quando nenhum destes veículos esta presente na estrada, qualquer outro poderá nalguns casos usa-la, mas assim que um veiculo precisa de usar essa faixa reservada para ele (interrupt), ele apita (pedido de interrupcao), e todos os outros e tudo o resto que acontece a sua volta perde prioridade e é exigida de imediato a libertação desse canal de interrupt. Basicamente, uma tabela de interrupts são canais reservados para pedidos de interrupção ao sistema (BIOS) por parte de dispositos, ou portas que são designados para cada um desses canais.
    Vou usar como exemplo a tabela de interrupts do tempo do DOS:
    Interrupt 10h – reservado para pedidos de interrupção da placa gráfica
    Interrupt 21h – reservado para pedidos do DOS
    Mas ha muito a saber nesta area, e muito disso não interessa para este assunto, mas aconselho a familiarizarem-se com o funcionamento de Interrupts, pesquisem, ha muita informação sobre isso, pode parecer assustadora e complexa mas o que precisam de reter é apenas como funcionam.
    Desculpem intrometer-me no vosso artigo e espero que de alguma forma a minha tentativa de ajuda tenha ajudado.

    • Muito boa abordagem, agradeço a sua critica 🙂

      • Gonçalo says:

        Ainda sou do tempo dos jumpers, da necessidade de usar Assembly para se poder tirar partido da maquina, e dos super-rapidos 286 a 12Mhz com disco de 20Mb e monitor monocromatico de 256 tonalidades de cinza. Lol.
        Acho que hoje em dia se descura muito o real funcionamento do hardware, e para se poder ter uma boa e saudavel mente de programador acho que isso além de benéfico é quase como que obrigatório. Essa lacuna trás problemas que são facilmente detetáveis nos utilizadores de computadores da actualidade. Nos tempos do “boom” informático, nesses tempos que descrevo acima, muita gente sabia resolver muitas das dificuldades de configuração, instalação, erros de Software e Hardware, e não havia a Internet e o Youtube para ajudar, para poder copiar o que os outros fazem, tínhamos de pesquisar com a pouca informação que tinhas disponível, puxar pelo miolo e usar a experiência, a lógica e muita experimentação. Hoje em dia todos vao atras uns dos outros e nem sabem o que fazem e/ou porque fazem. Atenção que não os culpo, mas talvez à rápida evolução tecnológica, que é inegável e irreversível, e com essa celeridade exige-se também uma celeridade na formação de novos profissionais aos quais se ensina muito pouco da base e começa-se ao meio “da história”, onde se perdem os capítulos em que se cria a base da história. MAs estou convencido que pelo menos os mais apaixonados e com a capacidade de reconhecerem a grandiosidade, a extensão, a complexidade da tecnologia dos nossos dias, tenham a curiosidade e os “tomates” para irem às raízes e perceberem como tudo funciona “atrás do pano”.

    • Micael Lagoa says:

      de acordo, é importante saber o que é uma interrupção e para que serve, mas neste caso acho que se deve de salientam que um dos maiores interesse na utilização de interrupção (em pequenos projectos com o arduino) é não termos de estar sempre a verificar se algum acontecimento aconteceu, alem disso convem que certos eventos sejam logo tratados, pois se o programa continuasse quando formos dar atenção ao evento da interrupção as condições já podiam ter se alterado. de salientam que o código numa interrupção deve de ser bastantes curto, para não comprometer o resto do programa. ex. se queremos saber um valor externo analógico de segundo a segundo, na interrupção apenas deve de estar a leitura do pin, e a criação de uma flag, e depois na altura mais apropriada essa informação deve de ser tratada no programa geram

      • Gonçalo says:

        Correto. Até porque um interrupt “consome” mais ciclos que uma transação de dados diretamente pela porta (endereço). E por esse mesmo motivo convém também minimizar as chamadas de interrupts em ciclos de curta duração pelo menos.

  3. Marco Castro says:

    Eu sugeria procurar por AVR programming. Há muita coisa na net e manuais. Uso para programar código DMX(luzes) baseados no código do Hendrik Hoelscher ou Ulrich Radig agora ando a aprender a multiplexar leds de 7 segmentos (para os endereços DMX)

  4. Guilherme says:

    O que falta neste artigo – cores nesses códigos.

  5. fernando says:

    Como apanho os episodios anteriores?

    Dantes tinham cuidado em por os links e agr fica tudo ao deus dará?

Deixe uma resposta

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.