COO Embarcados | Sistemas Embarcados | Hardware um Embarcados
8. Jul 2017•0 gefällt mir•204 views
1 von 72
Workshop Microchip Curiosity Board
8. Jul 2017•0 gefällt mir•204 views
Downloaden Sie, um offline zu lesen
Melden
Ingenieurwesen
Curso para Introdução a placa Microchip Curiosity e ferramentas de programação. São apresentados os primeiros passo para uso do MPLAB X e MCC e exemplos usando os periféricos do PIC16F1619.
5. Recursos
1. Conector USB mini-B (parte traseira);
2. Pads para conector para fonte 9V;
3. Botão para Master Clear Reset;
4. Jumper para seleção de fonte 3,3/5V p (J12);
5. Pads para fonte externa;
6. Conectores de expansão;
7. Soquete DIP para microcontrolador de 8, 14 e 20
pinos;
8. Conectores para padrão mikroBUS™;
9. Pads para módulo Bluetooth RN4020;
10. Potenciômetro;
11. LEDs;
12. Botão mTouch®;
13. Botão do tipo Push button.
7. Circuito de Programação e Depuração
Uma das vantagens da placa Curiosity é o circuito de programação e depuração integrado. Trata-se de
um circuito baseado em um PIC24FJ, com interface USB, que facilita a depuração e programação do
microcontrolador alvo sem a necessidade de uma ferramenta externa.
8. Alimentação
A alimentação da placa pode ser feita de 3 formas:
1. Conector USB (J2);
2. Conector para fonte externa (J15), este não vem montado na placa;
3. Pads para alimentação externa (TP3 e TP4).
9. A placa Curiosity é uma excelente placa para prototipação. Possui headers de expansão facilitando o
acesso aos pinos do microcontrolador.
Headers para expansão de I/Os
11. Módulo bluetooth RN4020
Para facilitar a integração da Curiosity em projetos relacionados à IoT há a possibilidade de conexão do
módulo bluetooth RN4020 da própria Microchip, através dos pads disponíveis na placa.
28. Código do Blink
#define _XTAL_FREQ 500000 //define para utilizar funções de tempo - Osc em 500 KHz
void main(void) {
LATA5 = 0; //desliga saídas
TRISA5 = 0; //configura RA5 como saída
while(1){
LATA5 = ~LATA5; //inverte o estado do pino
__delay_ms(1000); //aguarda 1 seg
}
}
51. PORTs
O PIC16F1619 possui 3 ports: PORTA, PORTB e PORTC.
Os pinos são organizados no microcontrolador, conforme
seu port e seguindo uma sequência. Por exemplo o pino 0
do PORTA é chamado de RA0, o pino 5 do PORTB como
RB5, e assim por diante.
52. Registradores
Cada port possui basicamente 3 registradores para controle dos
pinos, que são:
● TRISx - tem a função de definir a direção do pino, ou seja,
se funcionará como uma entrada ou saída;
● PORTx - é onde será feita a leitura do estado lógico
presente no pino;
● LATx - retêm a informação no lach (flip-flop tipo D) no port.
Além desses registradores básicos, alguns ports possuem outros
registradores de configuração, por exemplo:
● ANSELx - Configura se o pino será digital ou analógico;
● WPUx - Configura resistores de pull-up.
53. Configurando um pino como Entrada ou Saída
Para configurar um pino de I/O como entrada ou saída deve-se utilizar o registrador TRISx.
ENTRADA: TRISX = 1
SAÍDA: TRISX = 0
54. Pinos Digitais
Para usar os pinos de I/O digitais,
devemos configurar o registrador
ANSELX para o correto funcionamento
do pino.
DIGITAL: ANSELX = 0
ANALÓGICO: ANSELX = 1
55. Lendo o estado de um pino de I/O
Para leitura utiliza-se o registrador
PORTx. O valor presente nesse
registrador conterá o nível lógico
presente no pino
56. Escrevendo em um pino de I/O
Para escrita é utilizado o registrador
LATx
57. Exemplo de leitura e escrita nos pinos
Para testar a teoria apresentada vamos criar uma aplicação para leitura de
tecla e escrita em LEDs. Para isso vamos usar a chave táctil (S1) presente na
Curiosity, assim como os LEDs (D4, D5, D6 e D7). Cada vez que a tecla for
pressionada será ligado um LED e apagados os outros, dando efeito de
deslocamento.
65. O TIMER0
● Temporizador/Contador de 8 bits;
● Leitura ou escrita;
● Prescaler selecionável;
● Fonte de clock interna ou externa;
● Seleção de borda para fonte de clock externa;
● Interrupção para overflow.
68. Usando o TIMER0 para piscar um LED
Piscar o LED D4 da placa Curiosity, utilizando o TIMER0 como temporizador. O LED deverá inverter o
seu estado em aproximadamente 500 ms.
LED PINO
D4 RA5
D5 RA1
D6 RA2
D7 RC5
70. Código gerado pelo MCC
void TMR0_Initialize(void) {
// Set TMR0 to the options selected in the User Interface
// PSA assigned; PS 1:256; TMRSE Increment_hi_lo; mask the nWPUEN and INTEDG bits
OPTION_REG = (OPTION_REG & 0xC0) | 0xD7 & 0x3F;
// TMR0 12;
TMR0 = 0x0C;
// Load the TMR value to reload variable
timer0ReloadVal = 12;
// Clearing IF flag
INTCONbits.TMR0IF = 0;
}
71. Loop principal
while (1) {
while (!TMR0IF); //enquanto não ocorrer o estouro do timer
//o intervalo de estouro será de aprocimadamente 0,5 s
TMR0_Reload(); //reinicia timer
TMR0IF = 0; //limpa flag de estouro do timer
D4_Toggle(); //inverte os estado do led
}