Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

647 views

Published on

Slides dos Laboratórios / Atividades para o HandsOn de mbedOS, realizado no dia 8 de Novembro de 2016 no NXP FTF Connects, em São Paulo.

São 5 atividades que gradativamente exploram recursos tanto do LPCXpresso4337+Shield como do mbedOS.

O HandsOn teve como base a placa LPCXpresso4337, e o desenvolvimento de sistemas de tempo real usando mbed IDE online com mbedOS.

Material de autoria conjunta de André Curvello e Felipe Neves.
Agradecimentos especiais ao time NXP e ao time Embarcados pelo apoio ao treinamento!

Published in: Technology
  • Be the first to comment

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

  1. 1. Hands-On Workshop: ARM®-mbed on LPCXpresso Lab 1 - LED, PWM e JoyPad André Curvello Felipe Neves
  2. 2. 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
  3. 3. 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
  4. 4. 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
  5. 5. Lab 1 - Resultado 5
  6. 6. Hands-On Workshop: ARM®-mbed on LPCXpresso Lab 2 - Prompt de comandos utilizando a UART André Curvello Felipe Neves
  7. 7. 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
  8. 8. 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 usando backspace. 8
  9. 9. 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
  10. 10. Lab 2 - Resultado 10
  11. 11. Hands-On Workshop: ARM®-mbed on LPCXpresso Lab 3 - Mbed OS, controlando Threads André Curvello Felipe Neves
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. Lab 3 - Resultado 15
  16. 16. Hands-On Workshop: ARM®-mbed on LPCXpresso Lab 4 - Mbed OS, sincronizando com semáforos André Curvello Felipe Neves
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. Lab 4 - Resultado 20
  21. 21. Hands-On Workshop: ARM®-mbed on LPCXpresso Lab 5 - Mbed OS, mensagens entre threads com Mail Queue André Curvello Felipe Neves
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. Lab 5 - Resultado 25
  26. 26. Dúvidas? É só chamar ;-) Links úteis logo adiante! 26Obrigado!
  27. 27. 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
  28. 28. 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
  29. 29. 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
  30. 30. Agradecimentos
  31. 31. Agradecimentos

×