Cursos / Eletrônica / Projeto de Sistemas RF / Aula

arrow_back Aula 09 - Transmissão de dados através do protocolo SPI

O Código do Dispositivo Mestre

Rotina Principal do Programa

A rotina principal do programa é o “UserProcess()”. Ela é chamada dentro de um looping infinito dentro da função “main”, no arquivo “main_mestre.c”. Ou seja, depois de configurar tudo na função “UserInit()”, nós vamos ficar executando a função “UserProcess()”, indefinidamente, até o PIC ser reiniciado, seja desligando e religando ou por meio do pino de reset () $ \overline{SS} $ . Nessa função, queremos somente exibir, nos LEDs, um valor interno atual no PIC. Note que, se o botão não for pressionado, o valor não será alterado, e estaremos mandando os LEDs acenderem sempre com o mesmo valor, fazendo com que não seja notada nenhuma alteração quando observarmos o circuito. Porém, ao apertar o botão, vamos mudar esse valor e, assim que sairmos da rotina de interrupção, o “UserProcess” vai ser executado novamente, e, então, poderemos ver a alteração nos LEDs. Se você estiver entendendo tudo direitinho até agora, você vai notar que podemos também acender os LEDs dentro da interrupção, já que eles só mudam de valor quando o botão é pressionado, e deixarmos a função “UserProcess” em branco, ou mesmo eliminar essa função do código. Sim, isso é possível, e o código estaria correto. De fato, a divisão entre “UserInit” e “UserProcess” é só uma questão de organização, e, em certas situações, podemos realizar uma mesma operação em diferentes locais de um código, sem que isso altere o resultado desejado. Recomendo deixar que os LEDs sejam acesos no “UserProcess”, separando, assim, o que realmente só pode ser feito na interrupção com o que pode ser feito fora dela. Se você tentar sempre seguir essa regra, os seus programas ficarão bem mais legíveis e fáceis de alterar ou evoluir no futuro.

Versão 5.3 - Todos os Direitos reservados