Programação de sistemas embarcados: Introdução
Prof. Rodrigo Maximiano Antunes de Almeida
Universidade Federal de Itajubá
...
Dados Importantes
Teórica:
Local ⇒ Sala I.2.1.11
Horário ⇒ 15:45-17:35 (ter)
Laboratório:
Local ⇒ Sala LEC I
Horário ⇒
P1:...
Referências Bibliográcas
Notas de Aula de Programação de Sistemas Embarcados (ELT024)
Almeida, Rodrigo M.A., Unifei 2013*
...
Sistemas Embarcados
ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 4 / 25
Tópicos da Disciplina
Linguagem C
Hardware utilizado
Ambiente de programação
Programação em C para sistemas embarcados
Ind...
Introdução
Linguagem C
Lógica de Programação
é necessária para as pessoas que desejam trabalhar com
desenvolvimento de pro...
Introdução
Linguagem C
Firmware
Hardware
Sistema Operacional
Aplicação
ELT024 Programação de sistemas embarcados: Introduç...
Introdução
Linguagem C
Fonte: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
ELT024 Programação de siste...
Introdução
Linguagem C
Fonte: http://www.embedded.com/design/218600142
ELT024 Programação de sistemas embarcados: Introduç...
Introdução
Hardware Utilizado
Kit de desenvolvimento PIC18f4550
1 display LCD 2 linhas por 16 caracteres
4 displays de 7 s...
Introdução
Ambiente de Programação
Ferramentas a serem utilizadas:
IDE: MPLAB 8.92 - Proprietário
Compilador: SDCC 2.9.0 (...
Linguagem C
Indentação e padrão de escrita
O estilo adotado é conhecido como estilo Allman, bsd (no emacs)
ou ANSI.
Todos ...
Linguagem C
Comentários
Comentários são textos no meio do programa fonte com a intenção de
explicar ou esclarecer um trech...
Linguagem C
Arquivos .c e .h
Arquivo de código (code)
terminado com a extensão .c
contém a implementação do código
é compi...
Linguagem C
Arquivos .c e .h
1 // v a r i á v e l usada apenas dentro deste arquivo
2 static char temp ;
3 // v a r i á v ...
Linguagem C
Arquivos .c e .h
1 #ifndef VAR_H
2 #define VAR_H
3 void MudaDigito ( char val ) ;
4 char LerDigito ( void) ;
5...
Linguagem C
Diretivas de compilação
ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 17 / 25
Linguagem C
Diretivas de compilação
As diretivas de compilação são instruções dadas ao compilador.
Elas não são executadas...
Linguagem C
#dene
A diretiva #dene é utilizada para que o código fonte seja modicado
antes de ser compilado.
1 #define CON...
Linguagem C
#dene
Função Original Opções de uso com o #dene
Resultado
na Tela
1 void MostraSaidaPadrao ( ) {
2 #ifdef PADR...
Linguagem C
#ifdef, #ifndef, #else e #endif
1 void ImprimirTemp ( char valor ) {
2 #ifdef LCD
3 Imprime_LCD ( valor )
4 #e...
Linguagem C
Referência circular
A função LerTemperatura() faz um teste: se o valor for maior que um
patamar chama a função...
Linguagem C
Referência circular
#include “serial.h”
char LerTemperatura(void);
void AjustaCalor(char val);
temp.h
#include...
Linguagem C
Referência circular
Solução: criar uma estrutura de controle para pré compilação.
1 #ifndef TAG_CONTROLE
2 #de...
Linguagem C
Referência circular
Solução: criar uma estrutura de controle para pré compilação.
#infdef TEMP_H
#define TEMP_...
Próximos SlideShares
Carregando em…5
×

Introdução à programação embarcada

3.359 visualizações

Publicada em

Primeira aula: Linguagem C, Hardware utilizado, Ambiente de programação, Indentação e padrão de escrita, Comentários, Arquivos .c e .h, Diretivas de compilação

Publicada em: Tecnologia
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.359
No SlideShare
0
A partir de incorporações
0
Número de incorporações
10
Ações
Compartilhamentos
0
Downloads
109
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução à programação embarcada

  1. 1. Programação de sistemas embarcados: Introdução Prof. Rodrigo Maximiano Antunes de Almeida Universidade Federal de Itajubá rodrigomax@unifei.edu.br ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 1 / 25
  2. 2. Dados Importantes Teórica: Local ⇒ Sala I.2.1.11 Horário ⇒ 15:45-17:35 (ter) Laboratório: Local ⇒ Sala LEC I Horário ⇒ P1: 8:00-9:45 (sex) ELT024 P2: 10:15-12:00 (sex) ELT024 P3: 15:50-17:30 (qui) ELT024 P1: 13:30-15:10 (ter) ELT802 Levar a placa + adaptador de tomada Datas Importantes *: Prova 01 ⇒ 25/09 Prova 02 ⇒ 11/12 Sub ⇒ 18/12 * Datas Todas as datas estão sujeitas a alterações ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 2 / 25
  3. 3. Referências Bibliográcas Notas de Aula de Programação de Sistemas Embarcados (ELT024) Almeida, Rodrigo M.A., Unifei 2013* Embedded systems: design and applications with the 68HC12 and HCS12. BARRETT,Steven F; PACK, Daniel J., Prentice Hall, 2005 C completo e total. Herbert Schildt. Makron Books. 3 a Edição. 1997. The art of Programming Embedded Systems, Ganssle, J. Academic Press, 1991 *Erros na apostila Cada erro vale 1 (um) ponto na média, saturado em 10 pontos. Os erros encontrados devem ser enviados via e-mail: rodrigomax@unifei.edu.br/rmaalmeida@gmail.com indicando lugar do erro e número de matrícula do aluno. Será considerado apenas o primeiro e-mail. ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 3 / 25
  4. 4. Sistemas Embarcados ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 4 / 25
  5. 5. Tópicos da Disciplina Linguagem C Hardware utilizado Ambiente de programação Programação em C para sistemas embarcados Indentação e padrão de escrita Comentários Arquivos .c e .h Diretivas de compilação ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 5 / 25
  6. 6. Introdução Linguagem C Lógica de Programação é necessária para as pessoas que desejam trabalhar com desenvolvimento de programas e sistemas permite denir uma sequência natural de atividades com a intenção de atingir um objetivo Lógica de Programação É a técnica de encadear pensamentos em uma sequência lógica para atingir um determinado objetivo. ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 6 / 25
  7. 7. Introdução Linguagem C Firmware Hardware Sistema Operacional Aplicação ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 7 / 25
  8. 8. Introdução Linguagem C Fonte: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 8 / 25
  9. 9. Introdução Linguagem C Fonte: http://www.embedded.com/design/218600142 ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 9 / 25
  10. 10. Introdução Hardware Utilizado Kit de desenvolvimento PIC18f4550 1 display LCD 2 linhas por 16 caracteres 4 displays de 7 segmentos multiplexados 8 leds ligados ao mesmo barramento dos displays 16 mini switches organizadas em formato matricial 4x4 1 sensor de temperatura LM35C 1 resistência de aquecimento ligada à uma saída PWM 1 buzzer ligada à uma saída PWM 1 motor DC tipo ventilador à uma saída PWM 1 canal de comunicação serial padrão RS-232 ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 10 / 25
  11. 11. Introdução Ambiente de Programação Ferramentas a serem utilizadas: IDE: MPLAB 8.92 - Proprietário Compilador: SDCC 2.9.0 (win32) - GPL Linker/Assembler: GPUtils 0.13.7 (win32) - GPL Plugin MPLAB: sdcc-mplab 0.1 - GPL Cuidado O processo de instalação exige certos cuidados. Referenciem pela apostila. ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 11 / 25
  12. 12. Linguagem C Indentação e padrão de escrita O estilo adotado é conhecido como estilo Allman, bsd (no emacs) ou ANSI. Todos os documentos do padrão ANSI C utilizam este estilo. Apesar disto o padrão ANSI C não especica um estilo para ser usado. Atenção Detalhes não são importantes. A coerência dentro do projeto sim. ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 12 / 25
  13. 13. Linguagem C Comentários Comentários são textos no meio do programa fonte com a intenção de explicar ou esclarecer um trecho do código 1 #include s t d i o . h 2 #define DIST 260 // d i s t â n c i a entre SP e I t a 3 int main ( int argc , char* argv [ ] ) 4 { 5 /* esse programa s e r v e para 6 mostrar como se i n s e r e comentários */ 7 printf ( São Paulo está %d Km de Itajubá , DIST ) ; 8 return 0 ; 9 } ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 13 / 25
  14. 14. Linguagem C Arquivos .c e .h Arquivo de código (code) terminado com a extensão .c contém a implementação do código é compilado gerando um arquivo .o Arquivo de cabeçalho (header) terminado com a extensão .h contém apenas denes e protótipos não é compilado ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 14 / 25
  15. 15. Linguagem C Arquivos .c e .h 1 // v a r i á v e l usada apenas dentro deste arquivo 2 static char temp ; 3 // v a r i á v e l que s erá usada também f o r a do arquivo 4 static char valor ; 5 // funções usadas dentro e f o r a do arquivo 6 void MudaDigito ( char val ) { 7 valor = val ; 8 } 9 char LerDigito ( void) { 10 return valor ; 11 } 12 void InicializaDisplays ( void) { 13 // código da função 14 } 15 // função usada apenas dentro deste arquivo 16 void AtualizaDisplay ( void) { 17 // código da função 18 } ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 15 / 25
  16. 16. Linguagem C Arquivos .c e .h 1 #ifndef VAR_H 2 #define VAR_H 3 void MudaDigito ( char val ) ; 4 char LerDigito ( void) ; 5 void InicializaDisplays ( void) ; 6 #endif //VAR_H Atenção Não existe a função AtualizaDisplay() A variável digito só pode ser lida ou gravada pelas funções MudarDigito() e LerDigito() Cuidado com o overhead de funções ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 16 / 25
  17. 17. Linguagem C Diretivas de compilação ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 17 / 25
  18. 18. Linguagem C Diretivas de compilação As diretivas de compilação são instruções dadas ao compilador. Elas não são executadas. As diretivas de compilação começam com um sinal #, conhecido como jogo da velha ou hash. ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 18 / 25
  19. 19. Linguagem C #dene A diretiva #dene é utilizada para que o código fonte seja modicado antes de ser compilado. 1 #define CONST 15 2 void main ( void) 3 { 4 printf ( %d , CONST * 3 ) ; 5 } 7 // depois de compilado 8 void main ( void) 9 { 10 printf ( %d , 15 * 3 ) ; 11 //é p o s s í v e l : p r i n t f (%d , 45) ; 12 } ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 19 / 25
  20. 20. Linguagem C #dene Função Original Opções de uso com o #dene Resultado na Tela 1 void MostraSaidaPadrao ( ) { 2 #ifdef PADRAO Serial 3 char * msg = SERIAL ; 4 #else 5 char * msg = LCD ; 6 #endif 7 printf ( msg ) ; 8 } 1 #include s t d i o . h 2 #define PADRAO S e r i a l 3 void main ( void) 4 { 5 MostraSaidaPadrao ( ) ; 6 } SERIAL 1 #include s t d i o . h 2 #define PADRAO LCD 3 void main ( void) 4 { 5 MostraSaidaPadrao ( ) ; 6 } LCD ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 20 / 25
  21. 21. Linguagem C #ifdef, #ifndef, #else e #endif 1 void ImprimirTemp ( char valor ) { 2 #ifdef LCD 3 Imprime_LCD ( valor ) 4 #else 5 if ( valor 3 0 ) { 6 led = 1 ; 7 } else{ 8 led = 0 ; 9 } 10 #endif //LCD 11 } Funcionamento No momento da compilação o pré-compilador irá vericar se a tag LCD foi denida em algum lugar. Em caso positivo o pré-compilador irá deixar tudo que estiver entre o #ifdef e o #else e retirará tudo que está entre o #else e o #endif. ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 21 / 25
  22. 22. Linguagem C Referência circular A função LerTemperatura() faz um teste: se o valor for maior que um patamar chama a função EnviaSerial() com o código 0x30. 1 #include serial.h 2 char LerTemperatura ( void) ; 3 void AjustaCalor ( char val ) ; A função LerSerial() recebe um valor e repassa para a função AjustaCalor(). 1 #include temp.h 2 char LerSerial ( void) ; 3 void EnviaSerial ( char val ) ; ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 22 / 25
  23. 23. Linguagem C Referência circular #include “serial.h” char LerTemperatura(void); void AjustaCalor(char val); temp.h #include “temp.h” char LerSerial(void); void EnviaSerial(char val); serial.h #include “serial.h” char LerTemperatura(void); void AjustaCalor(char val); temp.h ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 23 / 25
  24. 24. Linguagem C Referência circular Solução: criar uma estrutura de controle para pré compilação. 1 #ifndef TAG_CONTROLE 2 #define TAG_CONTROLE 3 // todo o conteúdo do arquivo vem aqui . 5 #endif //TAG_CONTROLE ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 24 / 25
  25. 25. Linguagem C Referência circular Solução: criar uma estrutura de controle para pré compilação. #infdef TEMP_H #define TEMP_H #include “serial.h” char LerTemperatura(void); void AjustaCalor(char val); #endif temp.h #infdef SERIAL_H #define SERIAL_H #include “temp.h” char LerSerial(void); void EnviaSerial(char val); #endif serial.h #infdef TEMP_H //tag já definida, //pula o conteúdo #endif temp.h ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 25 / 25

×