31
Hands-On Workshop: ARM®-mbed on LPCXpresso Lab 1 - LED, PWM e JoyPad André Curvello Felipe Neves

Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Embed Size (px)

Citation preview

Page 1: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Hands-On Workshop: ARM®-mbedon LPCXpressoLab 1 - LED, PWM e JoyPad

André CurvelloFelipe Neves

Page 2: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 1 - Preparando o Ambiente

»Abra sua workspace em:

»https://developer.mbed.org/compiler/

»Ao abrir o workspace clique em Import;

»Na caixa de pesquisa busque por:

»ftf_mbed_lab1

»Importe o projeto, compile, grave e rode o código.

2

Page 3: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 1 - Considerações

»Exploraremos algumas API para acesso ao hardware da placa;

»Observe o display, um menu será a apresentado;

»Navegue com as teclas cima e baixo utilizando o JoyPad;

»Selecione o LED desejado pressionando o botão central do JoyPad;

»Com o potenciômetro, selecione a intensidade de cada LED

»Observe as diversas cores formadas;

»Monitore os valores de cor para cada canal.

3

Page 4: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 1 - Exercícios

»Adicione uma opção no menu que possua valores de cor pré-definidos.

»Utilize o botão central do JoyPad para entrar no menu e as teclas cima e

baixo para seleção.

»Quando encontrar a cor desejada a mesma só será inserida nos LEDs com o

pressionamento do botão central, saindo do menu.

»Adicione a opção de piscar o LED com a cor corrente, o tempo de pisca e o

número de repetições fica a cargo do usuário;»**DICA: utilize a classe Timeout para anexar um callback ao término da execução do pisca.

»Adicione um fator de escala de modo a controlar a intensidade da cor

corrente do LED.

4

Page 5: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 1 - Resultado 5

Page 6: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Hands-On Workshop: ARM®-mbedon LPCXpressoLab 2 - Prompt de comandos utilizando a UART

André CurvelloFelipe Neves

Page 7: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 2 - Preparando o Ambiente

»Abra sua workspace em:

»https://developer.mbed.org/compiler/

»Ao abrir o workspace clique em Import

»Na caixa de pesquisa busque por:

»ftf_mbed_lab2

»Importe o projeto, compile, grave e rode o código.

7

Page 8: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 2 – Considerações – O Prompt e o Controle»Ferramente muito desejada durante o desenvolvimento Um prompt de

commandos!

»Alguns comandos disponíveis controlam alguns atuadores ou dão informações

sobre a placa.

»Não esqueça de conectar a placa ao TeraTerm Setup: 8-N-1 115200bps.

»Para verificar a lista de comandos do prompt, pressione Enter.

»Digite os comandos conforme as instruções do terminal.

»Observe o que ocorre na placa.

»Digite comandos incorretos e verifique que podem ser corrigidos usandobackspace.

8

Page 9: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 2 - Exercícios

»A função shell_parser() contém um trecho localizado na linha 204

responsável por identificar o comando digitado.

»Sabendo disso, adicione um comando nessa lista para controlar um atuador

de sua preferência na placa!»DICA: importe a API de PWM do lab anterior e crie um comando para gerar cores nos LEDS.

»Adicione um comando para ler os valores do acelerômetro da placa.

»Lembre – se de utilizar a API I2C() para se comunicar com ele:-Slave address: 0x68 << 1

-Valor de configuração em 0x40: 0x28;

-Valor de sw reset em 0x7E: 0xB6 **DICA: aguarde um tempo após executar esse comando

-Registrador base dos dados: 0x12 **DICA: [0x12] ->X_msb, [0x13] -> X_lsb, [0x14]->Y_msb,…

**DICA os pinos SDA e SCL são respectivamente: P2_3, P2_4

9

Page 10: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 2 - Resultado 10

Page 11: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Hands-On Workshop: ARM®-mbedon LPCXpressoLab 3 - Mbed OS, controlando Threads

André CurvelloFelipe Neves

Page 12: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 3 - Preparando o Ambiente

Abra sua workspace em:

»https://developer.mbed.org/compiler/

Ao abrir o workspace clique em Import

Na caixa de pesquisa busque por:

»ftf_mbed_lab3

»Importe o projeto, compile, grave e rode o código.

12

Page 13: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 3 – Considerações – Tarefas com Threads

»Conectar a placa ao Tera Term configurado em 8-N-1 115200bps

»Verificar a lista de comandos pressione Enter;

»Nesse lab, exploraremos o tipo de objeto mais primitivo de todo RTOS, as threads;

»Através do prompt de comandos é possível suspender ou executar uma determinada

thread.

»Para isso utilize o comando thread e acompanhe a execução no LCD;

»Threading do Mbed OS possui duas políticas: Preemptiva e Cooperativa (com round-

robin);

-Preemptivo: execute a thread app1, em seguida execute a thread app2, observer o LCD

em seguida suspenda app2. Observe novamente o LCD;

-Cooperativo: execute a thread app1 e em seguida a thread app3, observe no LCD, o que

mudou?

13

Page 14: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 3 - Exercícios

»A função shell_thread_execute_command() localizada na linha 97 é responsável por

receber as opções do comando ”thread”.

»Analise e adicione uma opção que permita mudar a prioridade das threads existentes

sem ter que recompilar o código;

»Modifique o código de cada thread de modo que cada thread controle um LED da

placa, em seguida adicione na função shell_parser() um comando para controlar a taxa

de pisca de cada LED;

»Reescreva as threads de modo que todas tenham a mesma prioridade, e faça com que

cada thread consiga executar na seguinte ordem: app1,app2, app3, app1,app2,app3…-DICA: verifique o método yield() dentro da classe Thread;

-Registre a execução de cada thread no prompt de comando.

14

Page 15: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 3 - Resultado 15

Page 16: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Hands-On Workshop: ARM®-mbedon LPCXpressoLab 4 - Mbed OS, sincronizando com semáforos

André CurvelloFelipe Neves

Page 17: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 4 - Preparando o Ambiente

»Abra sua workspace em:

»https://developer.mbed.org/compiler/

»Ao abrir o workspace clique em Import;

»Na caixa de pesquisa busque por:

»ftf_mbed_lab4.

»Importe o projeto, compile, grave e rode o código.

17

Page 18: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 4 - Considerações»Conectar a placa ao Tera Term configurado em 8-N-1 115200bps Inicialmente… SEM terminal;

»Os semáforos são utilizados para sincronizar a execução de duas threads de baixa prioridade com

eventos ocorridos em uma thread de alta prioridade;

»O acelerômetro funciona como uma thread periódica (não pode sofrer atrasos), então sua prioridade é a

mais alta do Sistema.

»As threads de LCD e evento por sua vez precisam ser executadas uma vez a cada nova leitura tomada

pelo acelerômetro garantindo o processamento dos eventos em tempo real;

»Observe no código a utilização dos semáforos acc_sema e align_event_sema;

»Movimente a placa e observe o LCD, alinhe a placa em algum eixo cartesiano primitivo, observe os

LEDS;

-Analise: Cada thread executa uma vez por ciclo?

-Se não houvesse o semáforo aconteceria a mesma coisa?

18

Page 19: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 4 - Exercícios

»O shell não foi utilizado nesse laboratório, porém ele possui o inconveniente de

rodar de forma assíncrona (a cada 50ms) exigindo que sua thread possua

prioridade alta e que execute muitas vezes sem necessidade (sem caractere

novo no buffer).

»Sabendo disso, modifique o código da shell_task para que ela somente

execute quando um novo caractere chegar pela serial.-DICA: Veja o método attach na classe Serial.

-DICA: Utilize um semáforo para aguardar na task, e o mesmo para sinalizar na callback chamada pelo

método attach.

»Adicione o comando ”thread” do Lab 3 para suspender e resumir as tarefas,

utilize o semáforo para controlar o sinal de execução e suspensão.

19

Page 20: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 4 - Resultado 20

Page 21: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Hands-On Workshop: ARM®-mbedon LPCXpressoLab 5 - Mbed OS, mensagens entre threads com Mail Queue

André CurvelloFelipe Neves

Page 22: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 5 - Preparando o Ambiente

»Abra sua workspace em:

»https://developer.mbed.org/compiler/

»Ao abrir o workspace clique em Import;

»Na caixa de pesquisa busque por:

»ftf_mbed_lab5

»Importe o projeto, compile, grave e rode o código.

22

Page 23: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 5 - Considerações

»Não esqueça de conectar a placa ao Tera Term configurado em 8-N-1 115200bps;

»Pressione Enter para ver a lista de comandos!

»Lab muito parecido com o Lab 2 e combinado com o Lab 3, os comandos controlam as

threads, e a thread do prompt consegue enviar mensagens dizendo o que cada thread

deve fazer;

»Observe que o sistema de Mail Queue do mbed OS funciona por referência.

»O usuário é responsável por alocar a memória que será anexada a Mail para transmitir a

mensagem;

»Observe que com isso podemos criar comandos mais complexos (Ex. leds).

23

Page 24: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 5 - Exercícios

»Utilizando a Mail Queue, adicione uma thread para comunicação com o

acelerômetro.

»Com isso crie um descritor de comando I2C e opere os registradores do

acelerômetro pelo prompt de comandos (não esqueça de adicionar um

comando função shell_parser()), dados:-Slave address: 0x68 << 1

-Valor de configuração em 0x40: 0x28;

-Valor de sw reset em 0x7E: 0xB6 **DICA: aguarde um tempo após executar esse comando

-Registrador base dos dados: 0x12 **DICA: [0x12] ->X_msb, [0x13] -> X_lsb, [0x14]->Y_msb,…

-DICA os pinos SDA e SCL são respectivamente: P2_3, P2_4

24

Page 25: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Lab 5 - Resultado 25

Page 26: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Dúvidas?

É só chamar ;-)

Links úteis logo adiante!

26Obrigado!

Page 27: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Links Úteis - 1

-Placa de Desenvolvimento LPCXpresso4337: https://www.embarcados.com.br/lpcxpresso4337/-LPCXpresso4337 no mbed: https://www.embarcados.com.br/lpcxpresso4337-no-mbed/-Usando o display gráfico na LPCXpress4337 com mbed:https://www.embarcados.com.br/display-grafico-na-lpcxpresso4337-no-mbed/-Usando Leds e Joystick no mbed: https://www.embarcados.com.br/usando-os-leds-e-joystick-na-lpcxpresso4337-no-mbed/

27

Page 28: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Links Úteis - 2

-Shield OM13082 para placas LPCXpresso:https://www.embarcados.com.br/shield-para-as-placas-lpcxpresso/

-mbed OS: Primeiros passos: https://www.embarcados.com.br/mbed-os/

-Como utilizar as Threads no mbed OS:https://www.embarcados.com.br/threads-no-mbed-os/

28

Page 29: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Links Úteis - 3

-Semáforos no mbed OS: https://www.embarcados.com.br/semaforos-no-mbed-os-sincronizacao/

-Semáforos para Compartilhar recursos no mbed OS:https://www.embarcados.com.br/semaforos-mbed-os-recurso-compartilhado/

-Entrada analógica e comunicação Serial com a LPCXpresso4337:https://www.embarcados.com.br/entrada-analogica-e-comunicacao-serial-na-lpcxpresso4337-no-mbed/

29

Page 30: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Agradecimentos

Page 31: Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016

Agradecimentos