Mostrando postagens com marcador Microcontroladores. Mostrar todas as postagens
Mostrando postagens com marcador Microcontroladores. Mostrar todas as postagens

segunda-feira, 17 de setembro de 2012

Teste Rápido da Placa de Entradas




 - Comunicação USB - Perfeita, inclusive na máquina virtual funcionou perfeitamente;
 - Testes de Software - Perfeito, com acionamento dos pontos por negativo e identificação dos pontos com delay previsto;
 - Testes de Hardware - Alguns acertos são necessários, mas funcionou melhor que o esperado.

quarta-feira, 25 de julho de 2012

Flowcode - Sequêncial de Led´s Controlado por Chaves

Mais um programinha, ou melhor fluxograma, outro sequêncial, mas agora por chaves, são 8 chaves e 8 Led´s, cada chave aciona um Led, utilizei o microcontolador PIC 16f877A e determinei que toda a Porta C fossem as chaves e toda a Porta B fossem os Leds.

Na imagem é possível ver a programação, o fluxograma de funcionamento, é bem básico, sendo até mais simples que o anterior. 

A imagem abaixo mostra a simulação e o correto funcionamento do fluxograma.


Veja como o programa gerou o código em C:



//Declarações da variável
char FCV_VERIFICA;
char FCV_TESTE;



//Implementações Macro

void main()
{

//Iniciação
adcon1 = 0x07;


//Código de iniciação de interrupção
option_reg = 0xC0;


//Comentário:
//Programa Sequêncial de Led´s Acionados Por Chaves
//Ciclo eterno...


//Ciclo
//Ciclo: Enquanto1
while (1)
{
//Comentário:
//Como determinei que toda Porta C seriam minhas as Chaves,
//a variavel VERIFICA recebe o estado atual do Porta C...


//Entrada
//Entrada: PORTO C -> VERIFICA
trisc = trisc | 0xff;
FCV_VERIFICA = portc;


//Comentário:
//Verifico a Porta C continua no mesmo estado, testo se a variável
//VERIFICA(estado atual) está igual a variável TESTE(estado anterior).
//Se for igual o programa pula os próximos dois passos...


//Decisão
//Decisão: VERIFICA = TESTE?
if (FCV_VERIFICA == FCV_TESTE)
{
} else {
//Comentário:
//Como não são iguais, coloco na variável TESTE o valor da variável VERIFICA...


//Cálculo
//Cálculo:
//  TESTE = VERIFICA
FCV_TESTE = FCV_VERIFICA;


//Comentário:
//Como os Led´s estão relacionados a toda Porta B,
//basta apenas direcionar o valor da variável TESTE
//para a Porta B que os led´s serão acionados ou desligados
//conforme o estado da Porta C...


//Saída
//Saída: TESTE -> PORTO B
trisb = 0x00;
portb = FCV_TESTE;


}


//Comentário:
//Um atraso só para evitar problemas...


//Atraso
//Atraso: 300 ms
delay_ms(255);
delay_ms(45);


}


mainendloop: goto mainendloop;
}




Para baixe o fluxograma aqui.



terça-feira, 24 de julho de 2012

Flowcode - Sequêncial Automático de Led´s

Opa, voltando as postagens... vamos com algumas coisas mais práticas... Neste post temos uma demonstração de utilização do Flowcode, a programação para microcontroladores utilizando fluxogramas.

Achei muito interessante, principalmente para quem está iniciando no mundo da programação e para quem também entende a lógica, mas não tem tanta intimidade assim com programação, consegue otimizar muito o tempo de um programa. Utilizando o Flowcode v4.2.3.58 da Matrix Multimedia fiz um pequeno programa sequencial automático para 10 leds, utilizei o microcontolador PIC 16f877A e determinei que toda a Porta D fossem os Leds de 1 a 8 e os pinos 1 e 2 da Porta B fossem os Leds 9 e 10.

Na imagem é possível ver a programação, o fluxograma de funcionamento, é um básico fluxograma lógico, dos mesmos que encontramos nas aulas de lógica de programação. A única dificuldade é definir as portas correspondentes ao que deseja fazer, acionar Leds, botões,..., mas o programa trata isso de forma fácil e prática, além de ser possível simular o funcionamento de toda programação. No final do post tem o link para download do fluxograma que está bem comentado.


Mas como seria em c?... é possível ver o código que o programa gera, inclusive em Assembler e com os comentários que foram feitos...

void main()
{

//Iniciação
adcon1 = 0x07;


//Código de iniciação de interrupção
option_reg = 0xC0;


//Cálculo
//Cálculo:
//  contador = 1
FCV_CONTADOR = 1;


//Comentário:
//Coloca o valor 1 na variável contador...


//Ciclo
//Ciclo: Enquanto1
while (1)
{
//Comentário:
//loop infinito


//Saída
//Saída: contador -> PORTO D
trisd = 0x00;
portd = FCV_CONTADOR;


//Comentário:
//PortD recebe o valor da variável contador


//Atraso
//Atraso: 3 s
delay_s(3);


//Decisão
//Decisão: contador = 128?
if (FCV_CONTADOR == 128)
{
//Comentário:
//Vem para esta condição quando a variável contador chega a 128
//atingindo o ultimo Led do PortD e sendo necessário acionar os
//dois leds do PORTB


//Comentário:
//Esta condição só é acionada para ativar os dois ultimos leds da sequência


//Saída
//Saída: 0 -> PORTO D
trisd = 0x00;
portd = 0;


//Comentário:
//Zera o PortD para mudar o valor dos ultimos dois Leds


//Saída
//Saída: 1 -> PORTO B
trisb = 0x00;
portb = 1;


//Comentário:
//Aciono o Led 9


//Atraso
//Atraso: 3 s
delay_s(3);


//Saída
//Saída: 2 -> PORTO B
trisb = 0x00;
portb = 2;


//Comentário:
//Desligo o Led 9 e aciono o led 10


//Atraso
//Atraso: 3 s
delay_s(3);


//Saída
//Saída: 0 -> PORTO B
trisb = 0x00;
portb = 0;


//Cálculo
//Cálculo:
//  contador = 1
FCV_CONTADOR = 1;


//Comentário:
//Mudo o valor da variavel contador para 1


} else {
//Cálculo
//Cálculo:
//  contador = contador*2
FCV_CONTADOR = FCV_CONTADOR*2;


//Comentário:
//O contador tem seu valor multiplicado por 2(2, 4, 8, 16, 32, 64, 128)
//é utilizada a lógica de números binários com a variável contador,
//assim, quando mandar o valor para o portD será mostrado o valor da variável
//2(01000000)
//4(00100000)
//8(00010000)
//16(00001000)
//32(00000100)
//64(00000010)
//128(00000001)


}


}


mainendloop: goto mainendloop;
}

void MX_INTERRUPT_MACRO(void)
{
}
Mais um programa simples e muito funcional para auxiliar o programador...já gravei PIC's para testar e funcionaram perfeitamente... Quem quiser pode baixar o fluxograma aqui...e por hoje é só pessoal...

sábado, 15 de agosto de 2009

DICAS PARA O MPLAB


INTRODUÇÂO

O MPLAB é um pacote de programas que facilita escrever ou desenvolver um programa. Pode descrever-se ainda melhor como sendo um software que integra diversos ambientes de trabalho necessários para a realização de projetos, programação, simulação e gravação de microcontroladores da família PIC. Anteriormente, as operações incidiam sobre uma linha de instrução e contemplavam um grande número de parâmetros, até que se introduziu o IDE "Integrated Development Environment" (Ambiente Integrado de Desenvolvimento) e as operações tornaram-se mais fáceis, usando o MPLAB.

O AMBIENTE
Afim de cria um código hexadecimal (.hex), necessário para programar o microcontrolador, os arquivos fontes devem ser associados a um projeto, que controla todo processo.

Passos necessórios para se trabalhar no MPLAB:

1. Selecionar o Dispositivo;
2. Criar o projeto;
3. Selecionar as Ferramentas de Linguagem(Toolsuite);
4. Criar o Código Fonte (.asm);
5. Agregar os Arquivos ao Projeto;
6. Construir o Projeto.

1 - SELECIONAR O DISPOSITIVO

Ir ao menu principal e selecionar: Configure>Select Device.
Em seguida aparecerá a janela para seleção do dispositivo a ser usado. Os dispositivos podem ser facilmente separados pelo campo Device Family que permite separar os dispositivos por família.
Após a seleção, haverá a indicação na janela do dispositivo selecionado, informando por quais programadores e linguagem ele suporta.


A cor verde indica que é suportado e testado para o dispositivo.
A cor amarela indica que não foi testado para esse dispositivo.
A cor Vermelha indica que não é suportado por esse dispositivo.






DICAS:
I - Problema de Compilação 1;

Caso ao compilar um programa apareça a seguinte mensagem:

"The format of the file .cof can not be read or written because its extension was not recognized."

Para resolver este problema, basta executar os seguintes passos:
1 - Fechar o MPLAB;
2 - Ir em Iniciar -> Executar;
3 - No campo digitar o comando ( regsvr32 "C:\Arquivos de Programas\Microchip\MPLAB IDE\core\MPProgram.dll";
4 - Clique no botão OK;
5 - Agora é só abrir o MPLAB e tentar compilar o projeto novamente.

II - Problema de Compilação 2

Caso ao compilar um programa apareça a seguinte mensagem:

Release build of project `C:\Documents and Settings\Leonardo\Meus documentos\projeto facil.mcp' started.
Mon Feb 04 20:43:33 2008
----------------------------------------
------------------------------
Build aborted. The project contains no source files.
----------------------------------------
------------------------------
Release build of project `C:\Documents and Settings\Leonardo\Meus documentos\projeto facil.mcp' failed.
Mon Feb 04 20:43:33 2008
FAILED
----------------------------------------
------------------------------

Levando em consideração que ao criar um código fonte em um novo projeto o programador apenas clicou em novo arquivo, salvou e depois tentou compilar....
Sempre que se cria um projeto no MPLAB é gerada sua Área de Trabalho(Workspace) que é a configuração dos formulários da tela do MPLAB. Assim, o novo arquivo foi salvo mas não foi adicionado ao projeto.
Para resolver, basta clicar em "Project->Add File to Project" e selecionar o arquivo do código fonte. Basta compilar agora.


BIBLIOGRAFIA:

2 -http://www.scribd.com/doc/12408717/MPLABV800, dia 16 de agosto de 2009;