segunda-feira, 2 de abril de 2012

Apostila Microcontroladores PIC Completa

recomendo esta apostila!

Conteúdo
1 Introdução 1

1.2 Hardware utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.1 Linguagem C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Ambiente de programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Configuração do gravador ICD2 . . . . . . . . . . . . . . . . . . . . . . . 4
Criação de um novo projeto . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Linguagem C para sistemas embarcados 9
2.1 Indentação e padrão de escrita . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Comentários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Arquivos .c e .h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Diretivas de compilação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
#include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
#define . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
#ifdef, #ifndef, #else e #endif . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Tipos de dados em C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Representação binária e hexadecimal . . . . . . . . . . . . . . . . . . . . . 16
Modificadores de tamanho e sinal . . . . . . . . . . . . . . . . . . . . . . . 17
Modificadores de acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Modificadores de posicionamento . . . . . . . . . . . . . . . . . . . . . . . 19
Modificador de persistência . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6 Operações aritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.7 Função main() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8 Rotinas de tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.9 Operações com bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
NOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
XOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Ligar um bit (bit set) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Desligar um bit (bit clear) . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Trocar o valor de um bit (bit flip) . . . . . . . . . . . . . . . . . . . . . . 28
Verificar o estado de um bit (bit test) . . . . . . . . . . . . . . . . . . . . 29
Criando funções através de define’s . . . . . . . . . . . . . . . . . . . . . 30
2.10 Debug de sistemas embarcados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Externalizar as informações. . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Programação incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Checar possíveis pontos de Memory-leak . . . . . . . . . . . . . . . . . . . 35
Cuidado com a fragmentação da memória . . . . . . . . . . . . . . . . . . 35
Otimização de código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Reproduzir e isolar o erro . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
i
2.11 Ponteiros e endereços de memória . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3 Arquitetura de microcontroladores 38
3.1 Acesso à memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2 Clock e tempo de instrução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.3 Esquema elétrico e circuitos importantes . . . . . . . . . . . . . . . . . . . . . . . 43
Multiplexação nos terminais do microcontrolador . . . . . . . . . . . . . . 44
3.4 Registros de configuração do microcontrolador . . . . . . . . . . . . . . . . . . . . 45
4 Programação dos Periféricos 47
4.1 Acesso às “portas”do microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . 48
4.2 Configuração dos periféricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3 Barramento de Led's . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4 Display de 7 segmentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Multiplexação de displays . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.5 Leitura de teclas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Debounce por software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Arranjo de leitura por matriz . . . . . . . . . . . . . . . . . . . . . . . . . 62
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.6 Display LCD 2x16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.7 Comunicação serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
RS 232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.8 Conversor AD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Elementos sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Processo de conversão AD . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.9 Saídas PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.10 Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.11 Reprodução de Sons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.12 Interrupção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.13 Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5 Arquitetura de desenvolvimento de software 97
5.1 One single loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.2 Interrupt control system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.3 Cooperative multitasking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Fixação de tempo para execução dos slots . . . . . . . . . . . . . . . . . . 104
Utilização do “tempo livre”para interrupções . . . . . . . . . . . . . . . . . 105
6 Anexos 107
6.1 config.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.2 basico.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.3 Instalar gravadores/depuradores de PIC em sistemas x64 . . . . . . . . . . . . . . 110






                                                            Download

Controle Remoto RF 433,92 MHz módulos usando TWS-434 e RWS-434

Módulos e RWS-434 TWS-434 são simples de usarem, extremamente pequenos e nos permitem realizar controle de Rádio Freqüência (RF) a 433,92 Mhz. Utilizam modulação do tipo ASK, pode ser utilizado em alarmes para automóveis, sistemas de segurança, telefones sem fio, controle de robôs e outros sistemas de controle remoto

Módulo Transmissor

O TWS-434 tem uma potência de saída até 433.92MHz 8mW, alcançando distâncias de cerca de 140 metros ao ar livre e 60 metros em espaços fechados, onde tenham obstáculos.

Uma imagem real deste módulo:


tws434
Módulo TWS-434


O transmissor TWS-434 aceita a entrada de sinal digital linear e pode operar com uma tensão variando de 1,5 Volts a 12 Volts DC.
Veja o layout e função de cada pino deste módulo:
Contro1
PinOut do TWS-434

Exemplo de uma unidade de 4 botões do transmissor
Veja abaixo o transmissor usando o codificador Holtek HT-12E. Este é um controle remoto integrado e é usado em endereços de 4 bits e tem de 8 bits de direções:
Contro2
Exemplo de Transmissor de 4 Bits


Módulo Receptor
O RWS-434 é um módulo receptor que opera 433,92 MHz, e tem uma sensibilidade de 3uV. Ele opera com uma potência entre 4,5 e 5,5 Volts DC e tem saída linear digitais, também contém um capacitor variável para ajustar a freqüência de recepção
Confira a imagem real e logo abaixo, o layout e a função de cada pino deste módulo:
rws434
Módulo RWS-434

Contro3
Pinout RWS-434

Exemplo de uma unidade receptora de 4 saídas
Confira a unidade receptora usando o o decodificador Holtek HT-12D.
Este é um controle remoto integrado é usado em endereços de 4 bits é de 8 bits de direções.
Contro4
Exemplo de Receptor de 4 Bits

Quais Antenas usar?
Para a máxima eficiência recomendamos o uso do da antena  de helicoidal de 1 / 4 de onda. A amostra foi concebida para 433MHz é de 6,5 centímetros de comprimento e usa um cabo coaxial de 50 Ohms. É resistente à interferências.
Em pequenos equipamentos podem ser usadas antenas helicoidais do tipo núcleo de ar. Este tipo de antena é projetada para montagem em placas de circuito impresso, tem 3 / 8 polegadas de diâmetro e 1,5 cm de comprimento, mas é menos eficiente do que o caso anterior. Uma extremidade vai para o transmissor e o outro é deixado livre
                                         
helical
ant

Saídas usando Relés

Veja um diagrama para a comando de um relé usando um transistor PNP, cuja base é ligada a uma das saídas do decodificador. Usando o HT-12D, pode lidar com 4 saídas de relé de um modo muito simples.
Contro5
Circuito para comando de Relé

Com os módulos TWS-434 e RWS-434, em conjunto com um codificador HT12E e um decodificador  HT-12D, pode realizar controle por RF 4 botões de uma forma simples e prática, e ainda 'podemos adicionar relés na saída do decodificador, o que lhe dá um mundo de aplicações para estes circuitos simples.