• Nenhum resultado encontrado

elt024-05-programacaoDosPerifericos

N/A
N/A
Protected

Academic year: 2021

Share "elt024-05-programacaoDosPerifericos"

Copied!
26
0
0

Texto

(1)

Prof.MSc.Rodrigo Maximiano Antunes de Almeida

Universidade Federal de Itajubá

(2)

Arquitetura de Microcontroladores

Esquema elétrico e circuitos importantes

(3)

Multiplexação nos terminais do microcontrolador

ˆ

Ex: o oitavo terminal do PIC18F4550.

ˆ

Pode ser congurado como terminal:

ˆ

de entrada ou saída referente ao primeiro bit da porta E (RE0)

ˆ

de leitura analógica pertencente ao quinto conversor analógico

- digital (AN5)

ˆ

utilizado para enviar um clock externo de comunicação paralela

(CK1SPP)

(4)

Arquitetura de Microcontroladores

Registros de conguração do microcontrolador

Registros de conguração do

microcontrolador

(5)
(6)

Arquitetura de Microcontroladores

Registros de conguração do microcontrolador

//config.h

#ifndef CONFIG_H #define CONFIG_H

// Pll desligado

code char at 0x300000 CONFIG1L = 0x01; // Oscilador c/ cristal externo HS code char at 0x300001 CONFIG1H = 0x0C; // Watchdog controlado por software code char at 0x300003 CONFIG2H = 0x00; // Sem programação em baixa tensão code char at 0x300006 CONFIG4L = 0x00;

(7)

Programação dos Periféricos

.

.

.

In theory, there is no dierence between theory and practice; In practice,

there is. Chuck Reid

(8)

Programação dos Periféricos

Periféricos disponíveis

ˆ

Saída

ˆ

Barramento de Led's

ˆ

Display de 7 segmentos

ˆ

Display LCD 2x16

ˆ

Saídas PWM

ˆ

Entrada

ˆ

Teclado 4*4

ˆ

Conversor AD

ˆ

Outros

ˆ

Serial RS232

ˆ

Tratador de Interrupções

ˆ

Watchdog

(9)
(10)

Programação dos Periféricos

(11)

Acesso às portas do microcontrolador

O microcontrolador PIC 18F4550 possui 5 portas

ˆ

PORTA: bidirecional com 7 bits

ˆ

PORTB: bidirecional com 8 bits

ˆ

PORTC: bidirecional com 7 bits

ˆ

PORTD: bidirecional com 8 bits

(12)

Programação dos Periféricos

Acesso às portas do microcontrolador

Bit número

PORTB

0

Terminal

Físico

33

1

34

2

35

3

36

4

37

5

38

6

39

7

40

(13)

Acesso às portas do microcontrolador

37

Trisb:4

Leitor

Gravador

4

Trisb:4

= 1

= 0

= 0

= 1

< 2volts = 0

> 3volts = 1

PORTB

(14)

Programação dos Periféricos

Acesso às portas do microcontrolador

Porta

Endereço dos dados

Endereço de conguração (TRIS)

PORTA

0xF80

0xF92

PORTB

0xF81

0xF93

PORTC

0xF82

0xF94

PORTD

0xF83

0xF95

(15)

Acesso às portas do microcontrolador

//inicio do programa

void main(void) interrupt 0 {

//definimos como:

//(unsigned char) pois os 8 bits representam valores //(volatile) as variáveis podem mudar a qualquer momento //(near) indica posicionamento do registro esta na memória

volatile near unsigned char *PORTD = 0xF83;

volatile near unsigned char *TRISD = 0xF95; //configurando todos os pinos como saídas // 0 = saída (Output)

// 1 = entrada (Input) *TRISD = 0b00000000;

//liga apenas os quatro últimos leds *PORTD = 0b11110000;

(16)

Programação dos Periféricos

Acesso às portas do microcontrolador

//defines para portas de entrada e saída

#define PORTD (*(volatile near unsigned char*)0xF83)

#define TRISD (*(volatile near unsigned char*)0xF95)

//inicio do programa

void

main(

void

) interrupt

0

{

//configurando todos os pinos como saídas

TRISD =

0b00000000

;

//liga apenas os quatro últimos leds

PORTD =

0b11110000

;

//mantém o sistema ligado indefinidamente

for

(;;);

(17)

Acesso às portas do microcontrolador

ˆ

Vantagens no uso dos # denes

ˆ

Utilização não requer uso do *, pois já está incluso no dene

ˆ

Economiza memória ram. Criando uma variável é necessário

reservar um espaço para armazenar o valor do ponteiro.

ˆ

A denição pode ser feita em apenas um arquivo do tipo

header. Os outros arquivos que precisem utilizar estas

denições devem apenas incluir este header.

ˆ

A mudança de arquitetura é mais simples. Criando apenas um

arquivo com os denes é mais simples migrar o código de uma

arquitetura para outra.

(18)

Programação dos Periféricos

Acesso às portas do microcontrolador

//basico.h

//funções de bit

#define BitSet(arg,bit) ((arg) |= (1<<bit)) #define BitClr(arg,bit) ((arg) &= ~(1<<bit)) #define BitFlp(arg,bit) ((arg) ^= (1<<bit)) #define BitTst(arg,bit) ((arg) & (1<<bit))

//defines para registros especiais

#define PORTA (*(volatile near unsigned char*)0xF80) #define PORTB (*(volatile near unsigned char*)0xF81) #define PORTC (*(volatile near unsigned char*)0xF82) #define PORTD (*(volatile near unsigned char*)0xF83) #define PORTE (*(volatile near unsigned char*)0xF84) #define TRISA (*(volatile near unsigned char*)0xF92) #define TRISB (*(volatile near unsigned char*)0xF93) #define TRISC (*(volatile near unsigned char*)0xF94) #define TRISD (*(volatile near unsigned char*)0xF95) #define TRISE (*(volatile near unsigned char*)0xF96)

(19)

Acesso às portas do microcontrolador

//basico.h

#define INTCON (*(volatile near unsigned char*)0xFF2) #define INTCON2 (*(volatile near unsigned char*)0xFF1) #define PIE1 (*(volatile near unsigned char*)0xF9D) #define PIR1 (*(volatile near unsigned char*)0xF9E) #define TMR0L (*(volatile near unsigned char*)0xFD6) #define TMR0H (*(volatile near unsigned char*)0xFD7) #define T0CON (*(volatile near unsigned char*)0xFD5) #define SPPCON (*(volatile near unsigned char*)0xF65) #define SPPCFG (*(volatile near unsigned char*)0xF63) #define ADCON2 (*(volatile near unsigned char*)0xFC0) #define ADCON1 (*(volatile near unsigned char*)0xFC1) #define ADCON0 (*(volatile near unsigned char*)0xFC2)

(20)

Programação dos Periféricos

Acesso às portas do microcontrolador

//basico.h

#define RCSTA (*(volatile near unsigned char*)0xFAB) #define TXSTA (*(volatile near unsigned char*)0xFAC) #define TXREG (*(volatile near unsigned char*)0xFAD) #define RCREG (*(volatile near unsigned char*)0xFAE) #define SPBRG (*(volatile near unsigned char*)0xFAF) #define SPBRGH (*(volatile near unsigned char*)0xFB0) #define BAUDCON (*(volatile near unsigned char*)0xFB8) #define RCON (*(volatile near unsigned char*)0xFD0) #define WDTCON (*(volatile near unsigned char*)0xFD1) #define T2CON (*(volatile near unsigned char*)0xFCA) #define PR2 (*(volatile near unsigned char*)0xFCB) #define CCP2CON (*(volatile near unsigned char*)0xFBA) #define CCPR2L (*(volatile near unsigned char*)0xFBB) #define CCP1CON (*(volatile near unsigned char*)0xFBD) #define CCPR1L (*(volatile near unsigned char*)0xFBE)

(21)
(22)

Programação dos Periféricos

Conguração dos periféricos

Term.

Descrição

Congurar

como

Função

2

RA0/AN0

AN0

Potenciômetro / Sen-

sor de Temperatura

4

RA2/AN2/VREF-/CVREF

RA2

Display 2

7

RA5/AN4/SS/C2OUT

RA5

Display 1

8

RE0/AN5/CK1SPP

RE0

RS-LCD / Display 3

9

RE1/AN6/CK2SPP

RE1

EN-LCD

10

RE2/AN7/OESPP

RE2

RW-LCD / Display 4

13

OSC1/CLKI

OSC1

Cristal

14

OSC2/CLKO/RA6

OSC2

16

RC1/T1OSI/CCP2/UOE

CCP2

Aquecedor

17

RC2/CCP1/P1A

CCP1

Ventilador / Buzzer

19

RD0/SPP0

RD0

Barramento de dados

para o LCD/7seg/Led

20

RD1/SPP1

RD1

(23)

Conguração dos periféricos

Term.

Descrição

Congurar

como

Função

25

RC6/TX/CK

TX

RS232

26

RC7/RX/DT/SDO

RX

27

RD4/SPP4

RD4

Barramento de dados

para o LCD / 7seg /

Led

28

RD5/SPP5/P1B

RD5

29

RD6/SPP6/P1C

RD6

30

RD7/SPP7/P1D

RD7

33

RB0/AN12/INT0/SDI/SDA RB0

Saídas para

alimentação do

teclado

34

RB1/AN10/INT1/SCK/SCL RB1

35

RB2/AN8/INT2/VMO

RB2

36

RB3/AN9/CCP2/VPO

RB3

37

RB4/AN11/KBI0/CSSPP

RB4

Entradas para leitura

(24)

Programação dos Periféricos

Conguração dos periféricos

TRISA = 0b00000010; //configurando os terminais como entrada e saída ADCON1 = 0b00001110; //apenas o primeiro terminal é analógico

TRISB = 0b11110000; //configurando os terminais como entrada e saída INTCON = 0b11000101; //configuração com interrupção habilitada INTCON = 0b00000000; //configuração sem interrupção

INTCON2 = 0b00000001;

SPPCFG = 0b00000000; //RB0-4 são controlados pela porta B, não pelo SPP TRISC = 0b10000000; //os terminais são saídas, apenas RC7 é entrada CCP1CON = 0b00001100; //configura o 2o terminal como PWM

CCP2CON = 0b00001100; //configura o 3o terminal como PWM

TXTA = 0b00101100; //configura a transmissão de dados da serial RCSTA = 0b10010000; //configura a recepção de dados da serial BAUDCON = 0b00001000; //configura sistema de velocidade da serial SPBRGH = 0b00000000; //configura para 56k

SPBRG = 0b00100010; //configura para 56k

(25)
(26)

Programação dos Periféricos

Barramento de Leds

Referências

Documentos relacionados

Neste estudo foi possível determinar a presença dos metais Chumbo, Cádmio, Zinco, Cobre e Ferro no leite cru de vacas oriundas do Agreste Meridional do Estado de Pernambuco, tendo

PEIC/UFU/2016 vem requerer inscrição para o Processo Seletivo para Bolsista de Extensão na Pró-reitoria de Extensão, Cultura e Assuntos Estudantis, da Universidade

Tendo em vista a necessidade de fontes de energia limpas e renováveis, o presente trabalho teve por objetivos a produção de biodiesel a partir de óleo de canola bruto e álcool

[...] Os movimentos animados são muito fluidos e semelhantes a vida real, o gramado é lindo, a luz no campo é excelente, e a torcida é a melhor que você pode

Quanto aos depósitos de doações acima de R $ 10,00 realizadas na conta bancária, o candidato esclarece que foram efetuadas mediante transferências 'on-line', sendo portanto

Neste estudo foi possível identificar 7 compostos no extrato oleoso de própolis: 4 ácidos fenólicos e 3 flavonóides, sendo que o flavonóide dihidrocanferida foi

O processo seletivo será realizado através da avaliação do desempenho escolar da pessoa inscrita, para isso se faz necessário o cadastro do boletim escolar

Sequência de pulsos para um experimento de RMN de 1 H com supressão do sinal do solvente (água) utilizando a técnica WATERGATE...8 Figura 3. a) Saturação do sinal da