Apostila Microcontroladores PIC Completa - Programação em C

Apostila Microcontroladores PIC Completa - Programação em C

Mais uma apostila de excelente qualidade sobre Microcontroladores PIC com muita teoria e prática sendo que a linguagem abordada é a C, a mais utilizada do mundo! E como compilador o PIC da CCS o qual também é o mais utilizado, portanto se você está começando eu recomendo esta apostila, mas se você estiver querendo aumentar seus conhecimentos no mundo dos microcontroladores eu também recomendo esta apostila!
Deixo aqui o índice dela pra vocês conferirem o quanto ela é boa:
Conteúdo
1 Introdução 1
1.1 Linguagem C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2  utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Ambiente de  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Configuração do  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  .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  . . . . . . . . . . . . . . . . . . . . . . . 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  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
 incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Checar possíveis  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  de instrução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.3 Esquema elétrico e  importantes . . . . . . . . . . . . . . . . . . . . . . . 43
Multiplexação nos terminais do microcontrolador . . . . . . . . . . . . . . 44
3.4 Registros de configuração do microcontrolador . . . . . . . . . . . . . . . . . . . . 45
 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  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Arranjo de leitura por matriz . . . . . . . . . . . . . . . . . . . . . . . . . 62
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.6 Display  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  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  97
5.1  single loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.2 Interrupt control system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.3 Cooperative multitasking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Fixação de  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