1 / 64

Atelier de Formação Iniciação à robótica móvel

DEAR Robot. Atelier de Formação Iniciação à robótica móvel. Bases de Programação. Associação Nacional de Professores de Electrotecnia e Electrónica. Microcontrolador.

alma
Download Presentation

Atelier de Formação Iniciação à robótica móvel

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DEAR Robot Atelier de FormaçãoIniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

  2. Microcontrolador • Circuito integrado em alta escala (VLSI) que incorpora a maior parte dos elementos que constituem um controlador e se destina a uma determinada tarefa. • Costuma estar incorporado no dispositivo que controla (controlador embebido - embedded controller).

  3. Aplicações • indústria informática (periféricos: rato, teclado,...) • electrodomésticos (fornos, máq. lavar, vídeos, etc) • sistemas AVACs • telecomunicações • indústria automóvel

  4. Constituição Um microcontrolador dispõe normalmente dos seguintes elementos: • processador ou CPU • memória de dados (RAM) • memória de programa (ROM/PROM/EPROM/EEPROM) • linhas de entrada/saída (E/S) programáveis

  5. Constituição • módulos de controlo de periféricos (portos série, paralelo,USB,I2C,etc.) • gerador de impulsos de relógio • temporizadores • cão-de-guarda (watchdog) • conversores A/D e D/A • comparadores analógicos

  6. microprocessador vs. microcontrolador • o microprocessador é um sistema aberto constrói-se um computador com as características desejadas juntando os módulos necessários • o microcontrolador é um sistema fechado contem um computador completo e as suas prestações limitadas não se podem modificar

  7. bus de endereços P bus de dados bus de controle controlador 2 controlador 1 Memória periféricos periféricos Estrutura de um microprocessador

  8. C periféricos periféricos Estrutura de um microcontrolador

  9. Arquitectura interna de um microprocessador UCP bus comum de endereços Memória Instruções + dados 8 bus de dados e instruções Arquitectura “von Neumann” ou “Princeton”

  10. Arquitectura interna de um microcontrolador bus de endereços de instruções bus de endereços de dados UCP Memória de Instruções Memória de dados 10 9 14 8 bus de instruções bus de dados Arquitectura “Harvard”

  11. Arquitectura interna de um microcontrolador • RISC - Reduced Instruction Set Computer (35 no 16F84) versus • CISC - Complex Instruction Set Computer (+150 no 8086)

  12. Arquitectura interna de um microcontrolador Memória de Programa Tipologia • PROM (Programmable Read Only Memory) • EPROM (Electrically PROM) • OTP (One Time Programmable) • EEPROM (Electrically Erasable PROM) • FLASH

  13. Arquitectura interna de um microcontrolador Memória de Dados • SRAM (Static RAM) • EEPROM

  14. Arquitectura interna de um microcontrolador Programação • linguagem assembly • linguagens HLL (High Level Language): • Pascal, Basic, JAL, C • Compiladores vs. Interpretadores

  15. Picaxe 28X • Características: 600 linhas código 21 pinos E/S 9-17 saídas 0-12 entradas 0-4 entradas A/D 2 saídas PWM

  16. Picaxe 28X Entradas Analógicas ou Digitais Pinos de Saída Pinos de Entrada/Saída configuráveis Pinos de Entrada/Saída configuráveis

  17. Picaxe 28X Entradas Analógicas A/D Pinos de Saída PWM

  18. Linguagens de programação • PBasic (compatível com Basic Stamp). • Ambiente integrado de desenvolvimento com suporte para programação gráfica por fluxogramas. • Editor, compilador, programador,debugger e simulador incorporados.

  19. Lógica de Programação • O paradigma “tradicional”: • Pressupõe um modelo do mundo Modelo do Mundo Interpretação dos sensores Sensores Execução Planeamento Actuadores

  20. Lógica de Programação • O paradigma das interacções prioritárias de Rodney Brooks • Utiliza uma estratégia em que só os sensores são os iniciadores dos comportamentos. • Os comportamentos são sistemas em camadas de controlo que funcionam em paralelo, cada vez que os sensores apropriados são activados. • Um sistema de arbitragem de prioridades é utilizado para activar o comportamento dominante. • Todos os comportamentos funcionam em paralelo, com os de mais alto nível a suprimirem o funcionamento dos de nível inferior.

  21. Lógica de Programação • O paradigma das interacções prioritárias de Rodney Brooks • Exemplo: Escapar Bumpers Detectar_Cor Sensor Cor S SeguirPista Sensor Pista Motores S Sensor Procedimento Actuador

  22. BASIC Programa = dados + instruções Elementos da Linguagem de Programação BASIC • Símbolos • Variáveis • Constantes • Instruções

  23. BASIC • LABELS • As labels (etiquetas) são usadas como marcadores em todo o programa. As labels são usadas para marcar uma posição para onde “saltar” no programa através de uma instrução goto, gosub ou outra instrução. • Uma label pode ser qualquer palavra (não reservada) e pode conter dígitos e o carácter underscore ( _ ). As labels devem ter como carácter inicial uma letra (não um dígito), e são definidas com o sinal dois-pontos (:) a seguir ao nome. O sinal não é necessário quando a label faz parte integrante de instruções.

  24. BASIC • O compilador não é case-sensitive (sensível a maiúsculas), pelo que podem ser usadas indiscriminadamente maiúsculas e minúsculas. • Exemplo: ciclo: high 1 ; liga a saída 1 pause 500 ; espera de 5 segundos low 1 ; desliga a saída 1 PAUSE 500 ; espera de 5 segundos goto Ciclo ; salto para o início

  25. BASIC • Espaços em branco e Sintaxe • Whitespace (espaço em branco) é o termo utilizado pelos programadores para definirem a área branca na impressão de um programa. Nela se incluem os espaços, as tabulações e as linhas vazias. Qualquer uma delas pode ser utilizada no programa para o tornar mais compreensível e facilitar a leitura. • Convencionou-se colocar as labels encostadas à esquerda. Todas as outras instruções devem ser espaçadas através da tecla de tabulação. Esta convenção torna o programa mais fácil de ler e de seguir.

  26. BASIC • COMENTÁRIOS • Os comentários começam por um apóstrofe (‘) ou ponto e vírgula (;) e continuam até ao fim da linha. A instrução REM pode também ser utilizada para inserir comentários. • Exemplos: • high 0 ‘coloca pin0 alto • high 2 ;coloca pin2 alto • REM coloca pin3 alto

  27. BASIC • CONSTANTES • As constantes podem ser declaradas de quatro modos diferentes: decimais, hexadecimais, binárias e ASCII. • Os números decimais são escritos directamente sem qualquer prefixo. • Os números hexadecimais (hex) são precedidos pelo sinal dólar ($). • Os números binários são precedidos pelo sinal de percentagem (%). • Os valores ASCII são colocados entre plicas (“).

  28. BASIC • Exemplos: • 100 ‘ 100 em decimal • $64 ‘ 64 hex • %01100100 ‘ 01100100 binário • “A” ‘ “A” ascii (65) • “Hello” ‘ “Hello” – equivalente a “H”, “e”, “l”, “l”, “o”. • B1 = B0 ^ $AA ‘ ou exclusivo da ‘variável B0 com AA hex

  29. BASIC • SÍMBOLOS • Os símbolos podem ser associados a valores constantes, nomes alias (alternativos) para variáveis e endereços de programa. Os valores constantes e os nomes alias de variáveis são atribuídos fazendo seguir ao nome do símbolo o sinal de igual (=), seguido da variável ou constante. • Os símbolos podem utilizar qualquer palavra que não seja reservada (instruções). • Os símbolos podem conter letras e números, mas o primeiro carácter é obrigatoriamente uma letra. O uso dos símbolos não aumenta a dimensão do programa e torna-o mais legível.

  30. BASIC • Os endereços de programa são atribuídos fazendo seguir o símbolo pelo sinal dois pontos (:). • Exemplo: symbol LED_E = 7 ‘ define um pino de saída symbol CONTA = B0 ‘ define o símbolo de uma variável let CONTA = 200 ‘ carrega a variável com o valor ‘ 200 CICLO: ‘ define endereço de programa high LED_E ‘ liga a saída 7 pause CONTA ‘ espera 0,2 segundos (200 milisegundos) low LED_E ‘ desliga a saída 7 pause CONTA ‘ espera 0,2 segundos goto CICLO ‘salta para o início CICLO

  31. BASIC • Compreendendo a memória do PICAXE • A memória do PICAXE é constituída por três áreas diferentes. A quantidade de memória varia conforme o tipo de PICAXE. • Memória de Programa • A memória de programa é onde o programa é guardado após uma transferência (download). Trata-se de uma memória rápida tipo FLASH, que se pode reprogramar até cerca de 100 000 vezes. O programa não se perde quando se desliga a alimentação, pelo que é executado assim que esta é ligada de novo. Não é normalmente necessário apagar um programa, pois cada novo download reprograma toda a memória.

  32. BASIC • Num PICAXE28X pode carregar cerca de 600 linhas de programa. Este valor é aproximado, pois cada instrução ocupa espaços diferentes em memória. • Para verificar a memória livre basta seleccionar o menu PICAXE>Check Syntax. • Memória de Dados • A memória de dados é um espaço adicional de memória do microcontrolador. Os dados também não são perdidos quando se desliga a alimentação. Em cada transferência de dados (download) esta memória é posta a 0.

  33. BASIC • RAM (Variáveis) • A memória RAM é usada para guardar dados temporários em variáveis durante a execução do programa. Esta memória perde toda a informação quando se desliga a alimentação. Existem três tipos de variáveis – usos gerais, armazenamento e funções especiais.

  34. BASIC • Variáveis de Usos Gerais (GPR – General Purpose Registers) • Existem 14 variáveis de usos gerais tipo byte. Estas variáveis byte são designadas b0 a b13. As variáveis tipo byte (8 bits) podem guardar números inteiros entre 0 e 255. • Para números maiores podem combinar-se duas variáveis byte de modo a criar uma variável word, que é capaz de guardar números inteiros entre 0 e 65535.

  35. BASIC • Estas variáveis word são designadas w0 a w6, e são construídas do seguinte modo: w0 = b1 : b0 w1 = b3 : b2 w2 = b5 : b4 w3 = b7 : b6 w4 = b9 : b8 w5 = b11 : b10 w6 = b13 : b12

  36. BASIC • Para além disso os bytes b0 e b1 (w0) podem ser divididos em variáveis bit. • As variáveis bit podem ser utilizadas onde for necessário guardar um único bit (0 ou 1) numa variável b0 = bit7: bit6: bit5: bit4: bit3: bit2: bit1: bit0 b1 = bit15: bit14: bit13: bit12: bit11: bit10: bit9: bit8 • Pode utilizar qualquer variável word, byte ou bit numa expressão matemática ou instrução que utilize variáveis.

  37. BASIC • Variáveis para Funções Especiais (SFR) • As variáveis disponíveis para funções especiais dependem do tipo de PICAXE. • pins = representa o dado lido no porto de entrada • pins = representa o porto de saída na escrita • Note que pins é uma ‘pseudo’ variável que se pode aplicar tanto a portos de entrada como de saída. • Quando usado à esquerda de uma expressão de atribuição de pinos aplica-se ao porto de saída.

  38. BASIC • Por exemplo, let pins = %11000011 vai colocar as saídas 7,6,1,0 altas e as restantes baixas. • O sinal % indica ao compilador que se está a trabalhar em binário, em vez de decimal. • Quando usado à direita de uma expressão de atribuição de pinos aplica-se ao porto de entrada (porto C no PICAXE28X). • Por exemplo, let b1 = pins vai guardar em b1 o estado actual do porto de entrada.

  39. BASIC • A variável pins está separada em variáveis bit individuais para leitura de entradas bit individuais através da instrução if...then. pins = pin7 : pin6 : pin5 : pin4 : pin3 : pin2 : pin1 : pin0

  40. Programming Editor • Instalação e password (picaxebegin) • Configuração (Menu View/Options) Mode PICAXE-28X Options: 4MHz Serial Port Language

  41. Programming Editor • Programação em BASIC • Programação por Fluxograma

  42. Programming Editor • Programação por Fluxograma Simbologia • Início/Fim • Processo: acção a ser realizada • E/S define entradas e saídas • Decisão a tomar • Conector • Subrotina

  43. Programming Editor-exemplo main: label_6: low 4 label_D: if pin0=1 then label_19 goto label_D label_19: high 4 label_20: if pin0=0 then label_6 if pin6=1 then label_4D if pin7=1 then label_44 goto label_20 label_44: gosub blue goto label_6 label_4D: gosub red goto label_6

  44. Programming Editor-exemplo As coisas complicam-se

  45. BASIC • Instruções BASIC essenciais • Controlo de pinos de Saída • high 1 • low 2 • pins=%00000110 • high portc 1 • Leitura de pinos de entrada • b0=pins • if pin0=1…

  46. BASIC • Saídas PWM • Instrução pwmout • Sintaxe: PWMOUT pino, período, dutycycle Pino é uma variável/constante que especifica o pino E/S a usar (1 ou 2). Período é uma variável/constante (0-255) que estabelece o período do sinal de PWM. Duty cycle é uma variável/constante (valor de 10 bits, logo, de 0-1024) que define o ciclo de trabalho (tempo em que o sinal está alto em cada período).

  47. BASIC • Esta instrução difere de todas as outras pelo facto de ser executada continuamente (independente do resto do programa) até que outra instrução pwmout seja enviada. • Para parar o sinal pwmout, basta enviar uma instrução pwmout com o período 0. Período PWM = (período + 1) x 4 x (1/4000000) = (período + 1) us Ciclo Trabalho = (dutycyle) x (1/4000000) = (dutycycle)/4 us

  48. BASIC • Exemplo: Controlo de um motor Programa Inicio: high 7 low 6 pwmout 1,100,300 end

  49. BASIC • Salto incondicional • goto label • Controlo de fluxo • If condição then label

  50. BASIC inicio: if pin6 = 0 then direita goto esquerda ‘************************** esquerda: low 7 low 6 high 5 low 4 pwmout 1,10,25 pwmout 2,10,25 goto inicio ‘*************************** direita: high 7 low 6 low 5 low 4 pwmout 1,10,25 pwmout 2,10,25 goto inicio ‘*****************************

More Related