Your SlideShare is downloading. ×
Introdução à programação embarcada
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Introdução à programação embarcada

2,528
views

Published on

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

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

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,528
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
85
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. 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. 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. Sistemas Embarcados ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 4 / 25
  • 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. 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. Introdução Linguagem C Firmware Hardware Sistema Operacional Aplicação ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 7 / 25
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Linguagem C Diretivas de compilação ELT024 Programação de sistemas embarcados: Introduçãorodrigomax@unifei.edu.br 17 / 25
  • 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. 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. 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. 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. 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. 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. 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. 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