explorando os 16 bits da microchip e as ferramentas de
TRANSCRIPT
Explorando os 16 bits da Microchip Slide 1
Explorando os 16 bits da Microchip e as ferramentas de trabalho
Eng. Daniel Rodrigues de SousaLabTools – Mosaico Didactic Division
Explorando os 16 bits da Microchip Slide 2
Agenda
− Microcontroladores PIC de 16 bits Microchip;
− Aplicações;− Recursos de hardware;− MPLAB IDE;− Simulação usando o MPLAB SIM;− Depuração usando o MPLAB ICD2 e o
uso do ICD2BR;
Explorando os 16 bits da Microchip Slide 3
Agenda
− Gravando o programa no microcontrolador usando o ICD2BR;
− Apresentação do kit Explorer 16BR;− Exemplos de aplicação.
Explorando os 16 bits da Microchip Slide 4
Explorando os 16 bits
Microcontroladores PIC de 16 bits Aplicações Recursos de hardware MPLAB IDE Simulação, depuração e gravação Apresentação do kit Explorer 16BR
Exemplos de aplicação
PIC24F PIC24H dsPIC33F dsPIC30F
Explorando os 16 bits da Microchip Slide 5
A Família PIC...
Explorando os 16 bits da Microchip Slide 6
Diagrama em blocos simplificadoArquitetura PIC® 16 bits
Data RAM
Peripherals
I/O Ports
DataSpace
ProgramFlash
ProgramSpace
16-bit CPU24-bit16-bit Y
ProgramBus
DataBuses
PSV Windowand
Table Access16-bit16-bit
16-bit X
O barramento Y somente na família dsPIC30 e dsPIC33
Explorando os 16 bits da Microchip Slide 7
Família PIC24F4-16 KB
Data Memory
Memory Bus
8-256 KBFlash Memory
InterruptControl
16 MIPS 16-bit Core
16b ALU 16 x 16b W Register Array
17b x 17b Multiply
Address Generator Unit
Multi-bitShifter
JTAG Interface
Peripheral B
us
WDT & Pwr Mgmt.
28 to 100-pin Packages
(2 to 4) UART
Real-time clock+cal
CRC
(5) 16/32 Timers
PMP
INTRC w/PLL
InterruptC
ontrol
(2) SPI + (2) I2C™
500 Ksps 10b ADC
(2) Comparators
Peripheral Pin Select
Output Compare/PWM
Input Capture
USB 2.0 OTG NEW
Explorando os 16 bits da Microchip Slide 8
Família PIC24H1-16 KB
Data Memory
Memory Bus
12-256 KBFlash Memory
8 Channel DMA
InterruptControl
40 MIPS 16-bit Core
16b ALU 16 x 16b W Register Array
17b x 17b Multiply
Address Generator Unit
Multi-bitShifter
JTAG Interface
Peripheral Bus
WDT & Pwr Mgmt.
18 to 100-pin Packages
(1-2) UART w/LIN & IrDA®
(1-2) SPI
(3-9) 16/32 Timers
1.1 Msps 10b ADC
INTRC w/PLL
(0-2) ECAN™
InterruptC
ontrol (1-2) I2C™
500 Ksps 12b ADC
Output Compare/PWM
Input Capture
Explorando os 16 bits da Microchip Slide 9
30 MIPS 16-bit Core
16b ALU 16 x 16b W Register Array
17b x 17b Multiply
Dual AGU X & Y
BarrelShifter
JTAG Interface
DSP EngineDual 40b
Accumulators
0.5-8 KB Data Memory
Memory Bus
12-144 KB Flash Memory
1-4 KB EEPROM
Peripheral Bus
WDT & Pwr Mgmt.
18 to 80-pin Packages
(1-2) UART w/LIN & IrDA®
(1-2) SPI
MC QEI
Codec I/F (I2S, AC97)
(2-5) 16/32 Timers
-or- 200 Ksps 12b ADC
MC PWM
INTRC w/PLL
(0-2) CAN
InterruptC
ontrol
(1-2) I2C™
1 Msps 10b ADC
Família dsPIC30F
Output Compare/PWM
Input Capture
Explorando os 16 bits da Microchip Slide 10
40 MIPS 16-bit Core
16b ALU 16 x 16b W Register Array
17b x 17b Multiply
Dual AGU X & Y
BarrelShifter
JTAG Interface
DSP EngineDual 40b
Accumulators
1-30 KB Data Memory
Memory Bus
12-256 KB Flash Memory
8-channel DMA
InterruptC
ontrol
Peripheral Bus
WDT & Pwr Mgmt.
18 to 100-pin Packages
(1-2) UART w/LIN & IrDA®
(1-2) SPI
(0-2) MC QEI
Codec I/F (I2S, AC97)
(3-9) 16/32 Timers
(4-8) MC PWM
INTRC w/PLL
(0-2) ECAN™
(1-2) I2C™
(1-2) 1.1Msps 10b ADC
(1-2) 500Ksps 12b ADC
Família dsPIC33F
(2) 16-bit Audio DAC
IC / OC / PWM
Explorando os 16 bits da Microchip Slide 11
SFR Space
X Data RAM
Unimplemented
Memória de dadosPIC® 16 bits
0x0801
Y Data RAM
Dual Port RAM
MSB LSB
16-bits LSBAddress
MSBAddress
0x00000x0001
0x07FE0x0800
0x07FF
0x1FFE
0x80000x8001
0xFFFE0xFFFF
NEARData Memory8KB
SFR Space2KB
SRAM Space
Dual PortDMA RAM
2KB
PSV32KB
(visível na mem.de programa)
NOTA: PIC24 não há diferença entre X e Y data RAM
DIRETAMENTE ENDEREÇÁVEL
REQUER PONTEIROS
0x1FFF
0x20000x2001
Explorando os 16 bits da Microchip Slide 12
PSV - Program Space Visibility
0x8000
0xFFFF
Segmento de 32kB da Flash
Constantes armazenadas aqui
Janela PSV:Leitura de dados da Flash como se fosse dados na RAM
(somente os 16 bitsmenos significativos)
Leitura de dados constantes aqui
24-bit Program Memory(Flash)
16-bit Data Memory(RAM)
9FD39FD3
Explorando os 16 bits da Microchip Slide 13
Memória de programaPIC® 16 bits
Reset VectorPrimary Interrupt
Vector Table
Alternate InterruptVector Table
User Flash
Data EEPROM (dsPIC30F)Flash Configuration Words
Configurations Registers
Device ID
24-bits
0x000000
0x000004
0x000200
0x7FFFFE
MSW LSW0x000001
0x000005
0x000201
0x7FFFFF
0xFFFFFE0xFFFFFF
0x0000FE0x0000FF
LSWAddress
MSWAddress
Contador deprograma (PC)sempre incrementade 2 em 2.
Explorando os 16 bits da Microchip Slide 14
Reset - GOTO Address
Trap Vectors
Interrupt Vectors
0x000000
0x000100
0x0001FE
Inte
rrupt
Vec
tor T
able
0x000004Reset - GOTO Instruction
Alte
rnat
e In
terru
pt
Vec
tor T
able
Decreasing Natural Order Priority
Sistema de interrupções
● Sistema de interrupção rápido e determinístico
● Único vetor para cada fonte de interrupção− 8 vetores não mascarado
(Traps) − Até 118 vetores de
interrupção● Suporta Interrupt Nesting● 5 ciclos para entrada da Int.● 3 ciclos para saída da Int.● Controle de prioridade
Alternate Trap Vectors
Alternate Interrupt Vectors
Explorando os 16 bits da Microchip Slide 15
L4L4
main() L0main() L0
L1L1
Exemplo de Interrupt NestingL7L7
0123456789101112
Status Register
131415
0123456789101112
Core Control Register
131415
IPL2
IPL1
IPL0
IPL3
CPU EXECUTION TRACECPU EXECUTION TRACE
RETURNRETURN
RETURN*RETURN*
RETURNRETURN
L4 INTL4 INT
L7 INTL7 INT
L1 INTL1 INT
Explorando os 16 bits da Microchip Slide 16
84 instruções (incluindo instruções de DSP)Quase todos em uma única word (24 bits)Quatro são de duas words86% das instruções executadas em 1 ciclo de máquina, exceto:Mudança do fluxo do programa (2 ciclos)Instruções TABLE (2 ciclos)Instruções de duplo movimento (2 ciclos)Instução DO (2 ciclos)Instrução de divisão (18 ciclos)Instruções com três operandos: A = B op CAlta eficiência de código (Assembly ou C)
Set de Instruções
Explorando os 16 bits da Microchip Slide 17
85%
114%118%
100%
188%180%
156%
129%136%
109% 113% 114%
100%
165%
153%153%148% 152%
16-bit Applications(~ 40KB code)
32-bit Applications(~ 50KB code)
Relative Code Size
Free
scal
e 56
83xx
Ren
esas
H8S
Free
scal
e H
C12
Ren
esas
M16
C
dsP
IC D
SC
/PIC
24
AR
M7-
Thum
b
Infin
eon
C16
X
TI 3
20C
24x
AR
M7
Otimizado para Compiladores C EEMBC industry std. Benchmarks, Automotive Suite
Free
scal
e 56
83xx
Ren
esas
H8S
Free
scal
e H
C12
Ren
esas
M16
C
dsP
IC D
SC
/PIC
24
AR
M7-
Thum
b
Infin
eon
C16
X
TI 3
20C
24x
AR
M7
Explorando os 16 bits da Microchip Slide 18
Fonte de Clock
32KHzSecondary
Crystal OSC
SOSCI
SOSCO
Low Pwr RC 32KHz
Fast RC 8.0 MHz
OSCI
OSCO
PostScaler
4x PLL
PostScaler
CPU Clock
Peripherals Clock
XT,HSCrystal OSC
EC ClockEC Clock
Primary Oscillator
Explorando os 16 bits da Microchip Slide 19
Direct Access Memory (DMA)
● Famílias de 16 bits− PIC24H− dsPIC33F
● Periféricos− ECAN™ Module− Data Converter Interface (DCI)− 10-bit/12-bit A/D Converter− Serial Peripheral Interface (SPI)− UART− Input Capture− Output Compare
Explorando os 16 bits da Microchip Slide 20
Controlador DMA Diagrama em blocos
SRAMSRAM DPSRAMDPSRAMPort1 Port2Port1 Port2
DMA-readyDMA-readyPeripheral 1Peripheral 1CPU DMACPU DMA
CPUCPU
DMADMAControlControl DMA ChannelsDMA Channels
CPU X-busCPU X-bus
CPU Peripheral DS BusCPU Peripheral DS Bus
DMA DS BusDMA DS Bus
DMA ControllerDMA Controller0 1 ….. 6 70 1 ….. 6 7
PeripheralPeripheral(non-DMA)(non-DMA)
DMA-readyDMA-readyPeripheral 3Peripheral 3
CPU DMACPU DMA
DMA-readyDMA-readyPeripheral 2Peripheral 2
CPU DMACPU DMA
Explorando os 16 bits da Microchip Slide 21
Controlador DMA Diagrama em blocos
OutputOutputCompare 1Compare 1
CPU DMACPU DMA
InputInputCapture 1Capture 1
CPU DMACPU DMA
InputInputCapture 2Capture 2
CPU DMACPU DMA
OutputOutputCompare 2Compare 2
CPU DMACPU DMA
TimerTimer22
CPU DMACPU DMA
TimerTimer33
CPU DMACPU DMA
SPISPI11
CPU DMACPU DMA
SPISPI22
CPU DMACPU DMA
UARTUART11
CPU DMACPU DMA
UARTUART22
CPU DMACPU DMA
DCIDCI
CPU DMACPU DMA
ECANECAN11
CPU DMACPU DMA
ECANECAN22
CPU DMACPU DMA
A/DA/D11
CPU DMACPU DMA
A/DA/D22
CPU DMACPU DMA
Explorando os 16 bits da Microchip Slide 22
DMA ChannelsDMA Channels
PIC24H/33 DMAMovimentando dados sem o uso da CPU
SRAM DPSRAMPort1 Port2
DMA-readyPeripheral 1CPU DMA
CPU
CPU bus
CPU Peripheral DS Bus
DMA DS Bus
DMA Controller
Interrupt
Peripheral AddressDPSRAM Address
DATA
DMAControl
0 1 2 3 4 5 6 70 1 2 3 4 5 6 7
DATA
Peripheral(non-DMA)
DMA-readyPeripheral 2
Explorando os 16 bits da Microchip Slide 23
I/O PORT – Níveis de tensão
Vi(max)=5,5V para pinos digitais
Vih(nom)=Vdd=3,3VVih=0,8*Vdd=2,64V
Vil=0,2*Vdd=0,66V
Vi(max)=3,6V para pinos anal.
Voh(nom)=VDD=3,3VVoh=2,6V
Vol=0,4V
Vdd=3.3V
Todos os pinos podem drenar ou fornecer:18mA (PIC24F) 4mA (PIC24H)
Todos os pinos podem ser configurados ou não com saída dreno aberto
Explorando os 16 bits da Microchip Slide 24
Entrada e saída de dadosRegistradores TRIS, PORT e LAT
10
0
1 0 1 0 0 1
0 0 1 1 0 1 0TRISx
LATx
ReadPORTx
ReadLATx
WritePORTxor LATx
Internal Data Bus
PORTx(I/O Pins)
Direção do dado(1 = IN, 0 = OUT)
Todos os pinos são entrada após reset (TRIS = 0xFFFF)
Explorando os 16 bits da Microchip Slide 25
I/O PORT – Dreno aberto● Interfaceando sistemas de 5V
− O registrador TRISx configura entrada e saída− O registrador ODCx configura o dreno aberto do I/O.
5V
Load onPin driving Low
5V
Load OffPin with HIGH impedance
5V
Logic lowPin driving Low Logic High
5V
Pin with HIGH impedance
Explorando os 16 bits da Microchip Slide 26
Explorando os 16 bits
Microcontroladores PIC de 16 bits Aplicações Recursos de hardware MPLAB IDE Simulação, depuração e gravação Apresentação do kit Explorer 16BR
Exemplos de aplicação
PIC24F PIC24H dsPIC33F dsPIC30F
Explorando os 16 bits da Microchip Slide 27
Aplicações
● Memory Cards e Sistema de arquivos
● TCP/IP & Ethernet● Rede Wireless ● Soft Modem
● Reprodução de voz
● Supressão de ruído
● Cancelamento de Eco acústico
● Cancelamento de Eco de linha
● Motor/Power Control
Explorando os 16 bits da Microchip Slide 28
Microchip 16-bit Libraries
AES Triple DES
TCP/IP (Microchip) TCP/IP (CMX)
Soft Modem CANbedded (Vector-Informatik) OsCAN (Vector-Informatik)
ZigBee™ Stack (Microchip) IrDA® Stack (Microchip)
CMX-Tiny+ CMX-RTX CMX-Scheduler FAT16 File System
Asymmetric Key Encryption (NTRU) Symmetric Key Encryption (NTRU)
PIC24FPIC24HdsPIC33FdsPIC30FLibrary/Tool Name
RTO
SC
onne
ctiv
ityE
ncry
ptio
n
Explorando os 16 bits da Microchip Slide 29
Microchip 16-bit Libraries
Digital Filter Design Lite Digital Filter Design Tool
dsPICworks™ tool DSP
Peripherals
Math IMA ADPCM Sp. Coding/Decoding G.726 Speech Coding/Decoding G.711 Speech Coding/Decoding
SPEEX Speech Coding/Decoding Speech Recognition Line Echo Cancellation (LEC) Acoustic Echo Cancellation (AEC)
Noise SuppressionPIC24FPIC24HdsPIC33FdsPIC30FLibrary/Tool Name
DS
PA
udio
Spe
ech
Explorando os 16 bits da Microchip Slide 30
Explorando os 16 bits
Microcontroladores PIC de 16 bits Aplicações Recursos de hardware MPLAB IDE Simulação, depuração e gravação Apresentação do kit Explorer 16BR
Exemplos de aplicação
PIC24F PIC24H dsPIC33F dsPIC30F
Explorando os 16 bits da Microchip Slide 31
Peripheral PinSelect(PPS)
RP0
Peripheral 1
Peripheral 2
Peripheral 3
Peripheral N
Peripheral Output Select Bits
Explorando os 16 bits da Microchip Slide 32
Peripheral Pin Select
● Pode ser usado…− Multiplexação de periféricos digitais.− Ajuda a otimizar o hardware.− Redefinição da função do pino via software.
● Não pode ser usado…− Pinos com entrada analógicos e periféricos
especiais (por exemplo, PMP and I2C™) pois são fixos
Explorando os 16 bits da Microchip Slide 33
Funções remapeáveis dos PIC24 e dsPIC®
● Todas as funções de SPI e UART● Entradas de Timer e Interrupções
externas● Entradas de capturas e saídas de
comparação● Saídas dos comparadores analógicos● Entradas de pinos de falha do PWM● Entrada do decodificador de encoder
incremental● Data Converter Interface (DCI)● CAN
Explorando os 16 bits da Microchip Slide 34
PPS – detalhes de implementação
● Qualquer função pode ser remapeado− Múltiplas funções em um pino
● Entradas X Saídas− Entradas podem ser associados a um pino
específico− Saídas podem ser associados a um pino
específico● Configuração dos pinos
− Pode ser feita “on-the-fly” ou no início do programa.
Explorando os 16 bits da Microchip Slide 35
Por que remapear I/O ?
U1RX / SDI / SDA / RC3U1RX / SDI / SDA / RC3
U1TX / SDO / SCL / RC4U1TX / SDO / SCL / RC4
UART1
OC1
SPI1
MPWM
I2C1
CMP
DCI
TMR1
IC1
UART2
OCn
SPI2
QEI
I2C2
ADC
CAN
TMRn
ICn
Muitas aplicações em um Muitas aplicações em um único pinoúnico pino
Típico pino dsPIC30 Típico pino dsPIC30 UART / SPI / IUART / SPI / I22C™C™
Explorando os 16 bits da Microchip Slide 36
UART1
SPI1
I2C1
DCI
TMR1
Entradas remapeadas
RP0RP0
RP1RP1
RP2RP2
RP3RP3
RP4RP4
RP5RP5
Explorando os 16 bits da Microchip Slide 37
Entradas remapeadas
RP0
RP1
RP2
RPn
Pad Logic
Pad Logic
Pad Logic
Pad Logic
Input to Peripheral
Peripheral Input Pin Select Bits
//C Example – Map U1RX to RP8RPINR18bits.U1RXR = 8;
Explorando os 16 bits da Microchip Slide 38
UART1UART1
SPI1SPI1
I2C1I2C1
DCIDCI
OC1OC1
Saídas remapeadas
RP0RP0
RP1RP1
RP2RP2
RP3RP3
RP4RP4
RP5RP5
Explorando os 16 bits da Microchip Slide 39
Saídas remapeadas
RP0Pad
Logic
Peripheral 1 Output
Peripheral 2 Output
Peripheral 3 Output
Peripheral N Output
Peripheral Output Select Bits
//C Example – Map U1TX to RP1RPOR0bits.RP1R = 3
Explorando os 16 bits da Microchip Slide 40
Aplicações práticas
RP3
RP2
RP1
PadLogic
Peripheral Outpute.g. OC1
PadLogic
PadLogic
● Podemos conectar um periférico em várias saídas ou em várias entradas
Explorando os 16 bits da Microchip Slide 41
Aplicações práticas● Conectar uma entrada em mais de um
periférico
RP0 Pad Logic
Input to Peripheral #1e.g. U1CTS
Input to Peripheral #2e.g. INT1
Explorando os 16 bits da Microchip Slide 42
Aplicações práticas● Conectar entrada e saída para
depuração (SPI)
RP0 Pad Logic Input to Peripheral
e.g. SDI
Output to Peripheral e.g. SDO
Explorando os 16 bits da Microchip Slide 43
Porta Paralela Mestre PMP
Explorando os 16 bits da Microchip Slide 44
Porta Paralela Mestre - PMP
PIC24J128GA010
8- or 16-bit DATA
Up to 16-bit Address
Up to 2 Chip Select
Read, Write, Enable
Parallel Peripherals
LCD Display
Explorando os 16 bits da Microchip Slide 45
Exemplo - LCD na PMP
PIC24FJ128GA010
PMD<7:0>
A0PMENB
PMRD/nPMWR
LCD
R/W
RSE
DB7 – DB0Parallel Master Port
Explorando os 16 bits da Microchip Slide 46
Timers
•
Explorando os 16 bits da Microchip Slide 47
T1T1
Interrupt Interrupt FlagFlag
QQ CKCK
TGATETGATE
TMR1TMR1
Comparator x 16Comparator x 16
PR1PR1
EqualEqual
ResetReset
TSYNCTSYNC
TCKPS<1:0>TCKPS<1:0>TONTON
SyncSync
PrescalerPrescaler
1, 8, 64, 2561, 8, 64, 256
TGATETGATE
GateGate
SyncSyncTC
STC
STG
ATE
TG
ATE
11
00
00
11
SOSC1/SOSC1/T1CKIT1CKI
SOSC2SOSC2
LPLP
OSCOSC
1 X1 X
0 10 1
0 00 0TTCYCY
Timer1
Explorando os 16 bits da Microchip Slide 48
T2T2
InterruptInterrupt
FlagFlag
DD
CKCK
TGATETGATE
TMR2TMR2
Comparator x 16Comparator x 16
PR2PR2
EqualEqual
ResetReset
TCKPS<1:0>TCKPS<1:0>TONTON
SyncSync
PrescalerPrescaler
1, 8, 64, 2561, 8, 64, 256
TGATETGATE
GateGate
SyncSyncTC
STC
STG
ATE
TG
ATE
00
11
T2CKIT2CKI
1 X1 X
0 10 1
0 00 0TTCYCY
Timer2/4
Explorando os 16 bits da Microchip Slide 49
T3T3
InterruptInterrupt
FlagFlag
CKCK
TGATETGATE
TMR3TMR3
Comparator x 16Comparator x 16
PR3PR3
EqualEqual
ResetReset
TCKPS<1:0>TCKPS<1:0>TONTON
PrescalerPrescaler
1, 8, 64, 2561, 8, 64, 256
TGATETGATE
SyncSync
TC
STC
STG
ATE
TG
ATE
00
11
T3CKIT3CKI 1 X1 X
0 10 1
0 00 0TTCYCY
ADC Event ADC Event TriggerTrigger
Timer3 onlyTimer3 only
Timer3/5
Explorando os 16 bits da Microchip Slide 50
Timer de 32 bits
T3T3
Interrupt Interrupt FlagFlag
CKCK
TGATETGATE
TMR2TMR2
Comparator x 32Comparator x 32
PR2PR2
EqualEqual
ResetReset
TCKPS<1:0>TCKPS<1:0>TONTON
SyncSync
PrescalerPrescaler
1, 8, 64, 2561, 8, 64, 256
TGATETGATE
GateGate
SyncSync
TC
STC
STG
ATE
TG
ATE
00
11
T2CKIT2CKI1 X 1 X
TTCYCY
ADC Event ADC Event TriggerTrigger
(Timer3 only)(Timer3 only)
TMR3TMR3
PR3PR3
0 1 0 1
0 0 0 0
Write TMR2Write TMR2Read TMR2Read TMR2
TMR3HLDTMR3HLD
LSWLSWMSWMSW
**T3CON SFR bits are ignored **T3CON SFR bits are ignored
when in 32-bit timer modewhen in 32-bit timer mode
Explorando os 16 bits da Microchip Slide 51
UART
Explorando os 16 bits da Microchip Slide 52
UART - Características
Suporte ao barramento LIN Hardware de detecção de baudrate
Hardware de geração de caractere de Break
Suporte ao IrDA®
Hardware encoder / decoder
Controle de polaridade do sinal
Explorando os 16 bits da Microchip Slide 53
SPI
Explorando os 16 bits da Microchip Slide 54
SPI - Características
Buffer FIFO 8 níveis (transmissão e recepção); Possibilidade de enviar dados de 8 ou 16 bits; Flexível configuração de clock; Modo Framed:
Pulso de sincronismo (final do dado)
Pode ser gerado como mestre ou escravo
Explorando os 16 bits da Microchip Slide 55
SPIFCY
SPIxSR
SPIxBUF
SDIx
SDOx
PIC24F: 8-Level FIFO
SSx
SCKx
Sync Control
Clock Control
Select Edge
Pre- scaler
Clock Enable
Explorando os 16 bits da Microchip Slide 56
I2C™
Explorando os 16 bits da Microchip Slide 57
I2C™ - Características
Hardware independente para mestre e escravo; Endereçamento de 7 ou 10 bits; Chamada global e máscara de endereçamento; Suporte a clock padrão (100kHz e 400kHz); Suporte ao Multi-master.
Explorando os 16 bits da Microchip Slide 58
I2C™
I2CBRG MASTER Mode
SCLx
BRG Control LogicTcy/2
I2CxCON
I2CxSTAT
SDAx
I2CxTRN(8-bit)
Shift Register
I2CxRCV
Add. Match Detect I2CxADD(10-bit)
I2CxMSK(10-bit)
Shift Clock
Shift Clock
Explorando os 16 bits da Microchip Slide 59
Outros periféricos
Explorando os 16 bits da Microchip Slide 60
A/D - PIC24FVVREFREF++
VVREFREF--
A/Dconverter
ConversionControl
Bus In
terface
DataFormat
SampleSequenceControl
Input M
uxes
AN0AN0
AN1AN1S/H
AN15AN15
CH0CH0
8/16 LevelResults Buffer
Explorando os 16 bits da Microchip Slide 61
A/D - PIC24H e dsPIC30/33VVREFREF++
VVREFREF--
A/Dconverter
ConversionControl
Bus In
terface
DataFormat
SampleSequenceControl
Input M
uxes
AN0AN0
AN1AN1S/H
S/H
S/H
S/H
AN31AN31
Results Buffer
CH0CH0
CH1 *CH1 *
CH2 *CH2 *
CH3 *CH3 *
* S/H channels 1, 2 & 3 only available on 10- bit mode* S/H channels 1, 2 & 3 only available on 10- bit mode
Explorando os 16 bits da Microchip Slide 62
● CRC é uma técnica de detecção de erros em comunicação (serial ou paralela) ou em acesso a memórias.
● CRC é uma técnica de detecção de erros, mas não de correção.
CRC - Cyclic Redundancy Check
Explorando os 16 bits da Microchip Slide 63
CMCON<CxPOS>CMCON<CxPOS>
CompComp
__
++
CxIN+CxIN+CxIN-CxIN-
CxIN+CxIN+CVCVREFREF
CMCON<CxNEG>CMCON<CxNEG> CMCON<CxINV>CMCON<CxINV> CMCON<CxOUT>CMCON<CxOUT>
CxOUTCxOUT
CMCON<CxOUTEN>CMCON<CxOUTEN>
VVIN IN --
VVIN IN ++
CMCON<CxEN>CMCON<CxEN>
Comparador Analógico
Explorando os 16 bits da Microchip Slide 64
Gerador de tensão de referência
16 – to – 1 MU
X
VREF+VREF+AVAVDDDD
CVRCON<CVRSS>CVRCON<CVRSS>
CVRCON<CVREN>CVRCON<CVREN>
CVRCON<CVRR>CVRCON<CVRR>
8 R8 R
8 R8 R
RRRRRRRR
RRRRRR CVRCON<CVROE>CVRCON<CVROE>
CVREFCVREF
CVRCON<CVR3:CVR0>CVRCON<CVR3:CVR0>
16 Steps16 Steps
00
11
VREF-VREF-AVAVSSSS
11
00CVRCON<CVRSS>CVRCON<CVRSS>
Explorando os 16 bits da Microchip Slide 65
ICxICxICTMRICTMR
PrescalerPrescaler
CounterCounter Edge Detection Edge Detection Logic and SyncLogic and Sync
ModuleModule
Control LogicControl Logic
TMR2 TMR3TMR2 TMR3
1 01 0
ICxBUFICxBUFICxFICxF
Interrupt FlagInterrupt Flag
Input Capture
PIC24F: 4 Level PIC24F: 4 Level FIFOFIFO
Explorando os 16 bits da Microchip Slide 66
SS
RR
QQOutput CompareOutput Compare
LogicLogic
ComparatorComparator
OCxROCxR
OCxRSOCxRS
0 10 1 0 10 1OCTSELOCTSEL
TMR2 TMR3TMR2 TMR3 Timer2Timer2
Period MatchPeriod Match
Timer3Timer3
Period MatchPeriod Match
OCFAOCFA
OCFxOCFx
OCM<2:0>OCM<2:0>
Mode SelectMode Select
OCxIF OCxIF
Interrupt FlagInterrupt Flag
33
16161616
Output Compare
Explorando os 16 bits da Microchip Slide 67
Real Time Clock Controller – RTCC
32 kHzTimer1 Xtal
OSCSOSCI
SOSCO
Calibration
Prescaler
RTCC Counter
Comparator
Alarm
Current TimeYear
MonthDayHour
MinutesSeconds
Day of Week
Alarm TimeMonthDayHour
MinutesSeconds
0.5s
Repeat Counter
Interrupts
RTCCOutput
Explorando os 16 bits da Microchip Slide 68
PWM para controle de motor
Four PWM output Four PWM output pairs with output pairs with output polarity controlpolarity control
Duty CycleDuty Cycle
Generator #3Generator #3
Duty CycleDuty Cycle
Generator #2Generator #2
Duty CycleDuty Cycle
Generator #1Generator #1
Duty CycleDuty Cycle
Generator #4Generator #4
PWM Override PWM Override LogicLogic
Dead Time UnitDead Time Unit
Dead Time UnitDead Time Unit
Dead Time UnitDead Time Unit
Dead Time UnitDead Time Unit
Fault AFault A
Fault BFault B
PWM4HPWM4H
PWM1LPWM1L
PWM1HPWM1H
PWM2LPWM2L
PWM2HPWM2H
PWM3LPWM3L
PWM3HPWM3H
PWM4LPWM4L
Two fault pins w/ Two fault pins w/ programmable fault programmable fault
statesstates
16-bit Time-base16-bit Time-base
A/D Conversion A/D Conversion TriggerTrigger
Explorando os 16 bits da Microchip Slide 69
dsPIC30/33 Interface para Encoder Incremental
● Módulo para controle de posição de eixo de motor
● Três entradas Encoder − Fase A− Fase B− INDEX
● Contador de 16 bits
Explorando os 16 bits da Microchip Slide 70
DCI - dsPIC30/33
Memory
Analog Front End
CODEC
Output Power
A/DA/D
PWMPWM
DCIDCI
Explorando os 16 bits da Microchip Slide 71
ECAN – PIC24H e dsPIC
● CAN é um protocólo de comunicação serial ● Todos os nós são conectados ao mesmo tempo● Todos os nós possuem a mesma taxa de transmissão● Todos os nós podem transmitir e receber mensagens
CAN DEVICE
#1
CAN DEVICE
#2
CAN DEVICE
#3
CAN DEVICE
#4
CAN BUSCAN BUS
Explorando os 16 bits da Microchip Slide 72
Explorando os 16 bits
Microcontroladores PIC de 16 bits Aplicações Recursos de hardware MPLAB IDE Simulação, depuração e gravação Apresentação do kit Explorer 16BR
Exemplos de aplicação
PIC24F PIC24H dsPIC33F dsPIC30F
Explorando os 16 bits da Microchip Slide 73
MPLAB® IDE e Componentes
Roda em PC´s com MS Windows®
Componentes de hardware e software
MPLAB® IDE é gratuito!
Explorando os 16 bits da Microchip Slide 74
MPLAB® IDE e Componentes
MPLABC18, C30, C32
Compilers
MPLABIntegrated Development Environment
ProjectManager
Programmer’s Editor
Source LevelDebugger
Languages Simulators Emulators Programmers
AssemblersLinkers
Librarians
MPLABSIM
MPLAB ICE2000
MPLAB PM 3
PICSTART® Plus
PICkit™ 2
MPLAB ICD 2
MPLAB REAL ICE™
MPLAB® ICE4000
3rd Party3rd Party
Explorando os 16 bits da Microchip Slide 75
Conveniências do MPLAB® IDEArquivos
cabeçalhos (Template Files)
Assistentes (Wizards)
Help online
Explorando os 16 bits da Microchip Slide 76
MPLAB® IDE Desktop
Explorando os 16 bits da Microchip Slide 77
MPLAB® IDE Desktop
Explorando os 16 bits da Microchip Slide 78
MPLAB® IDE Desktop
Explorando os 16 bits da Microchip Slide 79
MPLAB® IDE Desktop
Make Build AllBuild Mode(Debug/Release)
Explorando os 16 bits da Microchip Slide 80
MPLAB® IDE Desktop
Explorando os 16 bits da Microchip Slide 81
MPLAB® IDE Desktop
Explorando os 16 bits da Microchip Slide 82
MPLAB® IDE Desktop
Explorando os 16 bits da Microchip Slide 83
MPLAB® IDE Desktop
Explorando os 16 bits da Microchip Slide 84
MPLAB® IDE Desktop
Explorando os 16 bits da Microchip Slide 85
MPLAB® IDE Desktop
Explorando os 16 bits da Microchip Slide 86
Explorando os 16 bits
Microcontroladores PIC de 16 bits Aplicações Recursos de hardware MPLAB IDE Simulação, depuração e gravação Apresentação do kit Explorer 16BR
Exemplos de aplicação
PIC24F PIC24H dsPIC33F dsPIC30F
Explorando os 16 bits da Microchip Slide 87
Criando um projeto no MPLAB® usando o MPLAB® C30
Procedimento
1Abra o MPLAB IDE e inicie o assistente de criação de projeto clicando na barra de menu: Project Project Wizard…
Clique para continuar…Next >
Depois de abrir o assistente,
Explorando os 16 bits da Microchip Slide 88
2 Na caixa Device selecione:PIC24FJ128GA010
Criando um projeto no MPLAB® usando o MPLAB® C30
Clique para continuar…Next >
Explorando os 16 bits da Microchip Slide 89
3 Na caixa Active Toolsuite selecione:Microchip C30 Toolsuite
Criando um projeto no MPLAB® usando o MPLAB® C30
Clique para continuar…Next >
Explorando os 16 bits da Microchip Slide 90
Clique e navegue na pasta destino:Browse…4
C:\RTC\TLS2130\Lab1\Lab1
O nome do arquivo Lab1.mcp
C:\RTC\TLS2130\Lab1\Lab1
Create New Project File
Criando um projeto no MPLAB® usando o MPLAB® C30
Clique para continuar…Next >
Explorando os 16 bits da Microchip Slide 91
Selecione o arquivo TLS2130.a
Selecione o arquivo Lab1.c
5C:\RTC\TLS2130\Lab1\Lab1
Navegar até a pasta destino:
Clique Add >>
6 Adicionar a library:
Criando um projeto no MPLAB® usando o MPLAB® C30
Clique Add >>
Clique para continuar…Next >
Explorando os 16 bits da Microchip Slide 92
7 Clique Finish
Lab 1 Project Tree
Criando um projeto no MPLAB® usando o MPLAB® C30
Explorando os 16 bits da Microchip Slide 93
8 Para abrir o projeto clique na barra de menu:Project Build Options… Project
Criando um projeto no MPLAB® usando o MPLAB® C30
Explorando os 16 bits da Microchip Slide 94
Habilitando o MPLAB SIM ou o MPLAB ICD2 (ICD2BR)
Explorando os 16 bits da Microchip Slide 95
9 Selecione Debug.
9
10 Clique em Build All.
14 Se não tiver erros, clique em Program.
13Quando a programação completada, clique em Reset.
11 Clique em Run.
12 Clique em Halt.
10 141311 12
Botões de controle MPLAB SIM e MPLAB ICD2 (ICD2BR)
Explorando os 16 bits da Microchip Slide 96
ICD2BR Depuração
.hex
ICD 2
Registradores
Mem. de programa
Reservado para ICD2BR
Reservado para ICD2BR
Explorando os 16 bits da Microchip Slide 97
ICD2BR Programação
.hex
ICD 2
Registradores
Mem. de programa
Reservado para ICD2BR
Reservado para ICD2BR
Explorando os 16 bits da Microchip Slide 98
Selecionando o ICD2BR como um programador
Explorando os 16 bits da Microchip Slide 99
Compilar código em modo Release
Build Mode(Debug/Release)
Explorando os 16 bits da Microchip Slide 100
Programar microcontrolador
Explorando os 16 bits da Microchip Slide 101
Dicas MPLAB C30
main(){
printf(“Não vou usar GOTO”);printf(“Assembly nunca mais!”);printf(“Vou aprender a usar
ponteiros...”);}
Explorando os 16 bits da Microchip Slide 102
Exemplo de código escrito no MPLAB C30
#include <p24fj128ga010.h>#include "TLS2130.h"
_CONFIG1(FWDTEN_OFF & JTAGEN_OFF)
int main(void){ _TRISA0 = 0; while(1) { _LATA0 = 0; while(SwitchPressed(&PORTD, 6)) _LATA0 = 1; }}
Exemplo de código
Configura RA0 como entrada RA0 = 0
RA0 = 1
Função de usuário
Configurations bits
Explorando os 16 bits da Microchip Slide 103
Exemplo Interrupção
Definição de macros (arquivo header do microcontrolador)
#define _ISR __attribute__(interrupt)#define _ISR __attribute__(interrupt)
#define _ISRFAST __attribute__(interrupt, shadow)#define _ISRFAST __attribute__(interrupt, shadow)
Exemplo
void _ISR INT0Interrupt(void)void _ISR INT0Interrupt(void){{ /* Código ISR aqui *//* Código ISR aqui */}}
Explorando os 16 bits da Microchip Slide 104
Funções de interrupção(Lista parcial)
IRQ # Nome secundário
N/AN/AN/AN/AN/AN/AN/AN/AN/AN/AN/AN/AN/AN/AN/AN/A00112233
Nome primário
_ReservedTrap0_ReservedTrap0_OscillatorFail_OscillatorFail_AddressError_AddressError_StackError_StackError_MathError_MathError_ReservedTrap5_ReservedTrap5_ReservedTrap6_ReservedTrap6_ReservedTrap7_ReservedTrap7_INT0Interrupt_INT0Interrupt_IC1Interrupt_IC1Interrupt_OC1Interrupt_OC1Interrupt_T1Interrupt_T1Interrupt
_AltReservedTrap0_AltReservedTrap0_AltOscillatorFail_AltOscillatorFail_AltAddressError_AltAddressError_AltStackError_AltStackError_AltMathError_AltMathError_AltReservedTrap5_AltReservedTrap5_AltReservedTrap6_AltReservedTrap6_AltReservedTrap7_AltReservedTrap7_AltINT0Interrupt_AltINT0Interrupt_AltIC1Interrupt_AltIC1Interrupt_AltOC1Interrupt_AltOC1Interrupt_AltT1Interrupt_AltT1Interrupt
Explorando os 16 bits da Microchip Slide 105
445566778899101011111212131314141515
_IC2Interrupt_IC2Interrupt_OC2Interrupt_OC2Interrupt_T2Interrupt_T2Interrupt_T3Interrupt_T3Interrupt_SPI1Interrupt_SPI1Interrupt_U1RXInterrupt_U1RXInterrupt_U1TXInterrupt_U1TXInterrupt_ADCInterrupt_ADCInterrupt_NVMInterrupt_NVMInterrupt_SI2CInterrupt_SI2CInterrupt_MI2CInterrupt_MI2CInterrupt_CNInterrupt_CNInterrupt
_AltIC2Interrupt_AltIC2Interrupt_Alt OC2Interrupt_Alt OC2Interrupt_AltT2Interrupt_AltT2Interrupt_AltT3Interrupt_AltT3Interrupt_AltSPI1Interrupt_AltSPI1Interrupt_AltU1RXInterrupt_AltU1RXInterrupt_AltU1TXInterrupt_AltU1TXInterrupt_AltADCInterrupt_AltADCInterrupt_AltNVMInterrupt_AltNVMInterrupt_AltSI2CInterrupt_AltSI2CInterrupt_AltMI2CInterrupt_AltMI2CInterrupt_AltCNInterrupt_AltCNInterrupt
Funções de interrupção(Lista parcial)
IRQ # Nome secundárioNome primário
Explorando os 16 bits da Microchip Slide 106
Exemplo:
Acessando registradores
● Podemos acessar os registradores diretamente no MPLAB C30
● Nomes definidos no datasheet do componente
Sintaxe:
REGNAME
PORTA = 0xFE31; // Escreve 0xFE31 em PORTAAtoD_Result = ADC1BUF0; // Lê o resultado do A/DTX1REG = 'a'; // Envia 'a' para UARTif (RX1REG == 'x') { … } // Se caractere for 'x‘...while (RX1REG) { … } // ...
Explorando os 16 bits da Microchip Slide 107
Exemplo:
● Use o nome do registrador com a palavra 'bits' minúsculo
● O nome do bit é o mesmo especificado no datasheet
Sintexe:
REGNAMEbits.BITNAME
LATA.LATA5 = 1; // Seta bit 5 do PORTAFlag = PORTA.RA5; // Lê bit 5 do PORTAwhile (!AD1CONbits.DONE) { … } // Aguarda conversãoAD1CON.SSRC = 5; // Configura SSRC = 5//SSRC -> SSRC2 = 1, SSRC1 = 0, SSRC0 = 1
Acessando registradores
Explorando os 16 bits da Microchip Slide 108
Declaração do registrador AD1CON no arquivo header p24fj128ga010.h
__extension__ typedef struct tagAD1CON1BITS { union { struct { unsigned DONE:1; unsigned SAMP:1; unsigned ASAM:1; unsigned :2; unsigned SSRC:3; unsigned FORM0:1; unsigned FORM1:1; unsigned :3; unsigned ADSIDL:1; unsigned :1; unsigned ADON:1; }; struct { unsigned :5; unsigned SSRC0:1; unsigned SSRC1:1; unsigned SSRC2:1; unsigned FORM:2; }; };} AD1CON1BITS;extern volatile AD1CON1BITS AD1CON1bits __attribute__((__sfr__));
Bits SSRC0, SSRC1 e SSRC0 Nomes primários de bits
Nomes secundário de bits
Declaração
Definição de estrutura
Acessando registradores
Explorando os 16 bits da Microchip Slide 109
Acessando registradores
Definição de macro com o nome do bit (no arquivo header no microcontrolador):
#define _BITNAME REGNAMEbits.BITNAME;
Exemplo:
_LATA5 = 1; // Seta bit 5 do PORTAFlag = _RA5; // Lê bit 5 do PORTAwhile (!_DONE) { … } // Aguarda conversão_SSRC = 5; // Configura SSRC = 5//SSRC -> SSRC2 = 1, SSRC1 = 0, SSRC0 = 1
Explorando os 16 bits da Microchip Slide 110
Trabalhando com Libraries
adc.h A/D Convertercomparator.h Analog Comparatorcrc.h Cyclic Redundancy CheckGeneric.h Generally useful stuffi2c.h I2C™ Interfaceincap.h Input Captureoutcompare.h Output ComparePIC24_periph_features.h Peripheral Pin Selectpmp.h Parallel Master Portports.h I/O PortsPwrMgnt.h Power Managementrtcc.h Real-Time Clock Calendarspi.h SPI Interfacetimer.h Timersuart.h UARTwdt.h Watchdog Timer
Explorando os 16 bits da Microchip Slide 111
Explorando os 16 bits
Microcontroladores PIC de 16 bits Aplicações Recursos de hardware MPLAB IDE Simulação, depuração e gravação Apresentação do kit Explorer 16BR
Exemplos de aplicação
PIC24F PIC24H dsPIC33F dsPIC30F
Explorando os 16 bits da Microchip Slide 112
Explorer 16BR
● Placa licenciada pela Microchip
● Compatível com as bibliotecas Microchip
● Trabalha com PIC de 16 bits e 32 bits
Explorando os 16 bits da Microchip Slide 113
ICD2BR
Gravador e depurador:
– ICD2Br – Depura e grava PICs Flash– Comunicação USB;– Soquete para PICs e dsPIc (opcional);– 1 a 2 breakpoints (depende do modelo);– Gravação rápida– Download automático do tipo de família PIC pelo
MPLAB– 3% da venda deste produto é destinado ao Projeto Passe de Mágica;– Licenciado Microchip.
Explorando os 16 bits da Microchip Slide 114
Explorando os 16 bits
Microcontroladores PIC de 16 bits Aplicações Recursos de hardware MPLAB IDE Simulação, depuração e gravação Apresentação do kit Explorer 16BR
Exemplos de aplicação
PIC24F PIC24H dsPIC33F dsPIC30F
Explorando os 16 bits da Microchip Slide 115
Exemplo de aplicação 1 - QVGA
PM
P
RD/ WRCS
RST
Micro Interface
PIXEL drive RGB
LCD
driv
er
PIC24FJ128GA010
Frame Buffer
128K byte Flash
8Kbyte RAM
XYADC
LED Back light+9V
Libraries:Line, Circle,
Rectangle, Fill background,
Text 3D Objects etc
2 I/O
320 X 240 TFT Glass65536 Colors
ENA0
DB0 – DB7
Explorando os 16 bits da Microchip Slide 116
● Conecta no conector de expansão da Explorer 16BR
● Biblioteca Microchip
Graphics PICtailTM Plus
Explorando os 16 bits da Microchip Slide 117
Exemplo de aplicação 2 - Ethernet
Explorando os 16 bits da Microchip Slide 118
Controlador Ethernet ENC28J60
INT
MCU
8Kbytes IEEE 802.3
DIP, SOIC, SSOP, QFN
Explorando os 16 bits da Microchip Slide 119
Perguntas
?