• Nenhum resultado encontrado

elt024-01-introducao

N/A
N/A
Protected

Academic year: 2021

Share "elt024-01-introducao"

Copied!
33
0
0

Texto

(1)

Programa¸c˜

ao de sistemas embarcados

Rodrigo Almeida

Universidade Federal de Itajub´a

(2)

Conte´udo Program´atico

(3)

Conte´udo Program´atico

Aulas

1 Linguagem C, Hardware utilizado, Arquivos .c e .h, Diretivas de compila¸c˜ao

2 Tipos de dados em linguagem C, Opera¸c˜oes aritm´eticas, Fun¸c˜ao main(), Rotinas de tempo

3 Opera¸c˜oes com bits e dicas para debugar sistemas embarcados

4 Ponteiros e endere¸cos de mem´oria, Arquitetura e configura¸c˜ao do microcontrolador,

5 Programa¸c˜ao dos perif´ericos, acesso `as portas do microcontrolador, Barramento de Led’s

6 Display de sete segmentos, multiplexa¸c˜ao

7 Opera¸c˜ao com teclas em arranjo matricial, debounce por software, processo de varredura

8 Display LCD 2x16

9 Protocolos RS232 e SPI. Aplica¸c˜oes de rel´ogio de tempo real (HT1380) e leitura de dados de GPS com protocolo NMEA.

10 Leitura de valores anal´ogicos via conversores AD e utiliza¸c˜ao de sa´ıdas PWM.

11 Utiliza¸c˜ao de timers para contagem de tempo e reprodu¸c˜ao de sons com PWM.

12 Aplica¸c˜ao de interrup¸c˜oes para acesso a dispositivos de hardware. Utiliza¸c˜ao de watchdog para aumento de confiabilidade.

13 Modelos de arquiteturas de software dispon´ıveis para sistemas embarcados.

(4)

Conte´udo Program´atico

Dados Importantes

Te´orica:

Local ⇒ Sala I.2.1.11 Hor´ario ⇒ 4T12

Laborat´orio (ELTP14):

Local ⇒ Sala LEC II Hor´ario ⇒ P1: 5T12 P2: 5T34 P3: 6T12 P4: 6T34 Datas Importantes *: Prova 01 ⇒ 05/04 Prova 02 ⇒ 21/06 Sub ⇒ 05/07 * Datas

(5)

Conte´udo Program´atico

Referˆ

encias Bibliogr´

aficas

Notas de Aula de Programa¸c˜ao de Sistemas

Embarcados(https://sites.google.com/site/rmaalmeida/)

Programa¸c˜ao de Sistemas Embarcados. Almeida, R.M.A., Moraes, C.H.V, Seraphim T.F.P., Elsevier 2016

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. 3a Edi¸c˜ao. 1997. The art of Programming Embedded Systems, Ganssle, J. Academic Press, 1991

(6)

Sistemas Embarcados - Introdu¸c˜ao

(7)

Sistemas Embarcados - Introdu¸c˜ao

Sistemas Embarcados

(8)

Sistemas Embarcados - Introdu¸c˜ao

Hardware Utilizado

Kit de desenvolvimento PIC18F4520

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ˆencia de aquecimento ligada a uma sa´ıda PWM 1 buzzer ligado a uma sa´ıda PWM

1 motor DC tipo ventilador a uma sa´ıda PWM 1 canal de comunica¸c˜ao serial padr˜ao RS-232

(9)

Sistemas Embarcados - Introdu¸c˜ao

Ambiente de Programa¸c˜

ao

Ferramentas a serem utilizadas: IDE: MPLAB X - Mista

Compilador: SDCC 3.4.0 (win32) - GPL

Linker/Assembler: GPUtils 1.3.0 (win32) - GPL Plugin MPLAB: Sdcc Toolchain - GPL

Cuidado

(10)

Linguagem C

(11)

Linguagem C

Linguagem C

L´ogica de Programa¸c˜ao ´

e necess´aria para as pessoas que desejam trabalhar com desenvolvimento de programas e sistemas

permite definir uma sequˆencia natural de atividades com a inten¸c˜ao de atingir um objetivo

L´ogica de Programa¸c˜ao

´

E a t´ecnica de encadear pensamentos em uma sequˆencia l´ogica para atingir um determinado objetivo.

(12)

Linguagem C

Linguagem C

Firmware

Hardware

Sistema Operacional

Aplicação

(13)

Linguagem C

Linguagem C

(14)

Linguagem C

Linguagem C

(15)

Linguagem C

Indenta¸c˜

ao e padr˜

ao de escrita

Aten¸c˜ao

Detalhes do estilo n˜ao s˜ao importantes. A coerˆencia dentro do projeto sim. O estilo adotado ´e uma varia¸c˜ao do “K&R-1TBS”.

S´o muda a chave de abertura da fun¸c˜ao, que fica na mesma linha

Todo bloco deve ser aberto e fechado por chaves, mesmo que com apenas uma linha.

Porque escolher esse estilo?

1 Porque sim.

2 Economizar espa¸co no slide. 3 Porque sim.

(16)

Arquivos .c e .h

(17)

Arquivos .c e .h

Arquivos .c e .h

Arquivo de c´odigo (code)

terminado com a extens˜ao .c cont´em a implementa¸c˜ao do c´odigo ´e compilado gerando um arquivo .o

Arquivo de cabe¸calho (header)

terminado com a extens˜ao .h cont´em apenas defines e prot´otipos n˜ao ´e compilado

(18)

Arquivos .c e .h

Arquivos .c e .h

1 // e x e m p l o de c ´o d i g o u s a n d o o e s t i l o a d o t a d o 2 3 // v a r i ´a v e l u s a d a a p e n a s d e n t r o d e s t e a r q u i v o 4 s t a t i c c h a r t e m p ; 5 // v a r i ´a v e l q u e s e r ´a u s a d a t a m b ´e m f o r a do a r q u i v o 6 s t a t i c c h a r v a l o r ; 7 // f u n ¸c ~o e s u s a d a s d e n t r o e f o r a do a r q u i v o 8 v o i d M u d a D i g i t o (c h a r val ) { 9 v a l o r = val ; 10 } 11 c h a r L e r D i g i t o (v o i d) { 12 r e t u r n v a l o r ; 13 } 14 v o i d I n i c i a l i z a D i s p l a y s (v o i d) { 15 // c ´o d i g o da f u n ¸c ~a o 16 } 17 // f u n ¸c ~a o u s a d a a p e n a s d e n t r o d e s t e a r q u i v o 18 v o i d A t u a l i z a D i s p l a y (v o i d) { 19 // c ´o d i g o da f u n ¸c ~a o 20 }

(19)

Arquivos .c e .h

Arquivos .c e .h

1 # i f n d e f V A R _ H 2 #d e f i n e V A R _ H 3 v o i d M u d a D i g i t o (c h a r val ) ; 4 c h a r L e r D i g i t o (v o i d) ; 5 v o i d I n i c i a l i z a D i s p l a y s (v o i d) ; 6 # e n d i f // V A R H Aten¸c˜ao

N˜ao existe a fun¸c˜ao AtualizaDisplay()

A vari´avel “digito” s´o pode ser lida ou gravada pelas fun¸c˜oes MudaDigito() e LerDigito()

(20)

Diretivas de compila¸c˜ao

(21)

Diretivas de compila¸c˜ao

(22)

Diretivas de compila¸c˜ao

Diretivas de compila¸c˜

ao

As diretivas de compila¸c˜ao s˜ao instru¸c˜oes dadas ao compilador. Elas n˜ao s˜ao executadas.

As diretivas de compila¸c˜ao come¸cam com um sinal #, conhecido como jogo da velha ou hash.

(23)

Diretivas de compila¸c˜ao

#define

A diretiva #define ´e utilizada para que o c´odigo fonte seja modificado antes de ser compilado.

1 # d e f i n e C O N S T 15 2 v o i d m a i n (v o i d) { 3 p r i n t f (" % d ", C O N S T * 3) ; 4 } 5 6 // d e p o i s de c o m p i l a d o 7 v o i d m a i n (v o i d) { 8 p r i n t f (" % d ", 15 * 3) ; 9 // ´e p o s s ´ı v e l : p r i n t f ( " % d " , 45 ) ; 10 }

(24)

Diretivas de compila¸c˜ao

#define

Aten¸c˜ao!

(25)

Compila¸c˜ao condicional

(26)

Compila¸c˜ao condicional

#define

1 // f u n ¸c ~a o p a r a a p r e s e n t a r d i s p o s i t i v o s e l e c i o n a d o 2 3 v o i d M o s t r a S a i d a P a d r a o (v o i d) { 4 5 # i f d e f P A D R A O S e r i a l 6 c h a r * msg = " S E R I A L "; 7 # e l s e 8 c h a r * msg = " LCD "; 9 # e n d i f 10 p r i n t f ( msg ) ; 11 }

(27)

Compila¸c˜ao condicional

#define

Op¸c˜oes de uso com o #define Resultado

na Tela 1 # i n c l u d e < s t d i o . h > 2 # d e f i n e P A D R A O S e r i a l 3 4 v o i d m a i n (v o i d) { 5 M o s t r a S a i d a P a d r a o () ; 6 } SERIAL 1 # i n c l u d e < s t d i o . h > 2 # d e f i n e P A D R A O LCD 3 4 v o i d m a i n (v o i d) { 5 M o s t r a S a i d a P a d r a o () ; 6 } LCD

(28)

Compila¸c˜ao condicional

#ifdef, #ifndef, #else e #endif

1 v o i d I m p r i m i r T e m p (c h a r v a l o r ) { 2 #i f d e f LCD 3 I m p r i m e _ L C D ( v a l o r ) ; 4 #e l s e 5 if ( v a l o r > 30) { 6 led = 1; 7 }e l s e{ 8 led = 0; 9 } 10 #e n d i f // L C D 11 } Funcionamento

No momento da compila¸c˜ao o pr´e-compilador ir´a verificar se a “tag” LCD foi definida em algum lugar. Em caso positivo o pr´e-compilador ir´a deixar tudo que estiver entre o #ifdef e o #else e retirar´a tudo que est´a entre o #else e o #endif.

(29)

Referˆencia circular

(30)

Referˆencia circular

Referˆ

encia circular

A fun¸c˜ao LerTemperatura() faz um teste: se o valor for maior que um patamar chama a fun¸c˜ao EnviaSerial() com o c´odigo 0x30.

1 # i n c l u d e " s e r i a l . h "

2 c h a r L e r T e m p e r a t u r a (v o i d) ;

3 v o i d A j u s t a C a l o r (c h a r val ) ;

A fun¸c˜ao LerSerial() recebe um valor e repassa para a fun¸c˜ao AjustaCalor().

1 # i n c l u d e " t e m p . h "

2 c h a r L e r S e r i a l (v o i d) ;

(31)

Referˆencia circular

Referˆ

encia 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);

(32)

Referˆencia circular

Referˆ

encia circular

Solu¸c˜ao: criar uma estrutura de controle para pr´e compila¸c˜ao.

1 #i f n d e f T A G _ C O N T R O L E

2 #d e f i n e T A G _ C O N T R O L E

3 // t o d o o c o n t e ´u d o do a r q u i v o v e m a q u i .

4

(33)

Referˆencia circular

Referˆ

encia circular

Solu¸c˜ao: criar uma estrutura de controle para pr´e compila¸c˜ao.

#ifndef TEMP_H #define TEMP_H #include “serial.h” char LerTemperatura(void); void AjustaCalor(char val); #endif temp.h #ifndef SERIAL_H #define SERIAL_H #include “temp.h” char LerSerial(void); void EnviaSerial(char val); #endif serial.h #ifndef TEMP_H //tag já definida, //pula o conteúdo #endif temp.h

Referências

Documentos relacionados

2.5.1 Em casos de candidatos que possuam o mesmo nome e sobrenome (homônimos), serão publicados os dois ou três primeiros números do CPF, a critério da equipe de seleção,

a) a Constituição atribui à União competência residual para instituir impostos, contribuições para a seguridade social e taxas. b) a instituição de empréstimos compulsórios

Esta dicotomia, quando reproduzida em nosso campo configura-se como a oposição entre alma/paixão de um lado e corpo/loucura de outro e pode produzir o equívoco de se postular

A empresa Corvos, SARL, com um capital social de 2,5 milhões de Mts, representado por 50.000 acções decidiu aumentar o seu capital social para 3,5 milhões de Mts. O preço de

Considerando as duas cidades de maior representatividade na composição do Índice FipeZap, São Paulo apresentou alta nominal de 0,40% nos preços de venda de imóveis residenciais

“Quando tratamos da pesquisa qualitativa, freqüentemente as atividades que compõem a fase exploratória, além de antecederem à construção do projeto, também a

CARATERÍSTICAS -Cerda pura grey -Virola niquelada -Cabo plástico (Polipropileno) SUPERFÍCIES A TRATAR Cimento, betão reboco e outras superfícies, metais, madeira e

Juventudes e Ensino de Sociologia: um diálogo...| Raphaella Gonçalves Teixeira | Adelson Dias de Oliveira 18 Frente às narrativas apresentas e as conjecturas construídas no