Introdução Sistemas Robóticos - IPGccarreto/_private/SR/Docs/0304/Micro... · 2004. 9. 20. · 1...

15
Sistemas Robóticos Microcontroladores Carlos Carreto Curso de Engenharia Informática Ano lectivo 2003/2004 Escola Superior de Tecnologia e Gestão da Guarda Sumário Introdução Sistema computacional embebido Família BASIC Stamp Família BasicX Família OOPIC Introdução O que são microcontroladores Os microcontroladores são computadores muito pequenos (do tamanho de um chip) que podem ser programados para controlar sistemas tais como telemóveis, microondas, brinquedos, sistemas de automóveis, etc. Se um dispositivo tem um ecrã ou um teclado, muito provavelmente contem um microcontroladore. Hoje em dia é comum uma pessoa ser dona de mais de uma dezena de microcontroladores. Introdução Arquitecturas de processadores • Princeton (Von Neumann) Barramento único para aceder à memória (endereços, dados e controlo). A vantagem é a simplicidade de acesso à memória Memória do programa e dos dados comum. Desvantagem pois impede que se possa aceder ao programa e aos dados simultaneamente. Não está optimizado para situações em que o tamanho dos dados é diferente do tamanho das instruções Unidade de interface de memória responsável pela gestão do acesso à memória • Harvard Duas memórias diferentes e independentes, uma para as instruções e outra para os dados e cada uma com o respectivo barramento. Isto permite realizar acessos simultâneos a ambas as memórias. Esta arquitectura tende a executar as instruções em menos ciclos de relógio. As duas memórias podem também ter palavras de comprimento diferentes. Os PIC usam esta arquitectura

Transcript of Introdução Sistemas Robóticos - IPGccarreto/_private/SR/Docs/0304/Micro... · 2004. 9. 20. · 1...

  • 1

    Sistemas Robóticos

    Microcontroladores

    Carlos Carreto

    Curso de Engenharia InformáticaAno lectivo 2003/2004

    Escola Superior de Tecnologia e Gestão da Guarda

    Sumário

    ◊ Introdução◊ Sistema computacional embebido ◊ Família BASIC Stamp◊ Família BasicX◊ Família OOPIC

    Introdução

    O que são microcontroladores

    • Os microcontroladores são computadores muito pequenos (do tamanho de um chip) que podem ser programados para controlar sistemas tais como telemóveis, microondas, brinquedos, sistemas de automóveis, etc.

    • Se um dispositivo tem um ecrã ou um teclado, muito provavelmente contem um microcontroladore.

    • Hoje em dia é comum uma pessoa ser dona de mais de uma dezena de microcontroladores.

    IntroduçãoArquitecturas de processadores

    • Princeton (Von Neumann)– Barramento único para aceder à memória (endereços, dados

    e controlo). A vantagem é a simplicidade de acesso à memória

    – Memória do programa e dos dados comum. Desvantagem pois impede que se possa aceder ao programa e aos dados simultaneamente. Não está optimizado para situações em que o tamanho dos dados é diferente do tamanho das instruções

    – Unidade de interface de memória responsável pela gestão do acesso à memória

    • Harvard– Duas memórias diferentes e independentes, uma para as

    instruções e outra para os dados e cada uma com o respectivo barramento. Isto permite realizar acessos simultâneos a ambas as memórias. Esta arquitectura tende a executar as instruções em menos ciclos de relógio. As duas memórias podem também ter palavras de comprimento diferentes. Os PIC usam esta arquitectura

  • 2

    IntroduçãoArquitecturas de processadores

    CISC (Complex Instruction Set Computers) - tem um grande número de instruções (mais de 80), algumas das quais muito complexas e que demoram muitos ciclos para serem executadas

    RISC (Reduced Instruction Set Computers) - tem um número mínimo de instruções simples que são executadas normalmente num único ciclo de relógio, permitindo optimizar o hardware e o software do processador. Permite ao utilizador desenhar as suas próprias instruções, em vez de usar as que o desenhador do processador oferece. O PIC16F84 é RISC

    SISC (Specific Instruction Set Computers) – tem um número mínimo de instruções e específicas para determinada função

    IntroduçãoMemórias

    Memória de dados e memória de programa integradas no próprio chip

    – Memória de programa• ROM com máscara – A aplicação é gravada na ROM logo após o fabrico e antes de ser

    entregue ao cliente. A criação da máscara é muito dispendiosa, pelo que só compensa para grandes quantidades (vários milhares)

    • OTP (One-Time Programable) – A aplicação só pode ser gravada uma vez pelo utilizador• EPROM – Pode gravar-se várias vezes, apagando com raios ultravioletas• EEPROM – Pode gravar-se várias vezes, apagando electricamente• FLASH – similares às EEPROM, mas mais rápidas e toleram mais ciclos de escrita

    – Memória de dados• RAM – memória de leitura e escrita muito rápida e volátil• EEPROM – memória de leitura e escrita lenta, mas não volátil

    IntroduçãoRecursos auxiliares

    – Temporizadores– Watch-dog– Protecção de falha de alimentação (Brown out)– Estado de repouso e baixo consumo (Sleep mode)– Conversor A/D– Conversor D/A– Comparador analógico– Modulador por largura de impulsos (PWM)– Portas de entradas e saídas digitais– Portas de comunicação (UART, I2C, CAN, USB, etc)– Interrupções– In-circuit serial programming– . . .

    Introdução

    Fabricantes de microcontroladores

    • Microchip (www.microchip.com)• ATMEL (www.atmel.com)• MOTOROLA (www.motorola.com)• etc.

  • 3

    Sistema computacional embebido

    A realização de projectos com microcontroladores pode não ser uma tarefa fácil porque é necessário lidar com vários pormenores como por exemplo alimentação do circuito, relógio, memória externa, etc.

    Pensando nestas dificuldades, muitos fabricantes desenvolveram os chamados microcontroladores embebidos que são dispositivos constituídos por microcontroladores e circuitos auxiliares que facilitam em muito a sua utilização.

    Estes sistemas computacionais embebidospodem ser usados em projectos mais complexos como se fossem microcontroladores puros.

    Sistema computacional embebidoAs principais vantagens destes sistemas embebidos são:

    • Circuito pronto a usar;• Memória externa para programes e dados normalmente na forma de EEPROM ou Flash;• Programados através de ligação comum tipo RS-232;• Linguagens de programação fáceis de aprender com comandos de uso geral;• Relativamente baratos.

    As principais desvantagens são:• Quanto mais complexos, mais caros são;• Pouco espaço de memória; • Número reduzido de portas;• Baixa velocidade de relógio.

    Sistema computacional embebidoExemplos de microcontroladores embebidos

    Basic Stamp -> PIC/Ubicom SX (www.parallax.com)

    BasicX -> Atmel AT90S8535 (www.basicx.com)

    OOPIC -> PIC (www.oopic.com)

    BrainStem (www.acroname.com)

    Basic Atom -> Hitachi 3664 (www.basicmicro.com)

    Basic Step (www.tato.ind.br/products.htm)

    . . .

    Família BASIC Stamp e Javeline Stamp

    BS2SX

    BS2E

    BS2PE

    BS2

    BS1

    BS2P40

    BS2P24

    Javeline Satmp

    www.parallax.com

  • 4

    Família BASIC Stamp e Javeline Stamp

    Javelin Stamp IDEStampw.exe (v1.33 and up)

    Stampw.exe (v1.1 and up)

    Stampw.exe (v1.1 and up)

    Stampw.exe(v1.091 and up)

    Stampw.exe(v1.096 and up)

    Stampw.exe (v1.04 and up)N/A

    Windows TextEditor

    N/AN/ASTAMP2P.EXESTAMP2P.EXESTAMP2SX.EXESTAMP2E.EXESTAMP2.EXESTAMP.EXEDOS Text Editor

    Serial PortSerial PortSerial PortSerial PortSerial Port (9600

    baud)Serial Port (9600 baud)

    Serial Port (9600 baud)

    Parallel PortPC ProgrammingInterface

    0 (Java)55555539393632PBASIC Commands

    60 mA / 60 mA per8 I/O pins

    60 mA / 60 mA per8 I/O pins

    60 mA / 60 mA per 8 I/O pins

    60 mA / 60 mA per8 I/O pins

    60 mA / 60 mA per8 I/O pins

    60 mA / 60 mA per8 I/O pins

    40 mA / 50 mA per8 I/O pins

    40 mA / 50 mASource / SinkCurrent per unit

    30 mA / 30 mA30 mA / 30 mA30 mA / 30 mA30 mA / 30 mA30 mA / 30 mA30 mA / 30 mA20 mA / 25 mA20 mA / 25 mASource / Sink Current per I/O

    60mA Run / 13µA Sleep

    15 mA Run / 60µA Sleep

    40 mA Run / 400µA Sleep

    40 mA Run / 400µA Sleep

    60 mA Run / 200µA Sleep

    20 mA Run / 100µA Sleep

    8 mA Run / 100µA Sleep

    2 mA Run / 20µA Sleep

    Current Draw @ 5V

    5 vdc (reg), 6-24 vdc (unreg)5 - 12 vdc5 - 15 vdc5 - 15 vdc5 - 12 vdc5 - 12 vdc5 - 15 vdc5 - 15 vdc

    VoltageRequirements

    1616 +2 DedicatedSerial

    32 +2 DedicatedSerial

    16 +2 DedicatedSerial

    16 +2 DedicatedSerial

    16 +2 DedicatedSerial

    16 +2 DedicatedSerial8

    Number of I/O pins

    32768 Bytes16x2K Bytes (16K for source)

    8x2K Bytes, ~4,000 instructions

    8x2K Bytes, ~4,000 instructions

    8x2K Bytes, ~4,000 instructions

    8x2K Bytes, ~4,000 instructions

    2K Bytes, ~500 instructions

    256 Bytes, ~80 instructions

    EEPROM (Program) Size

    N/A128 Bytes128 Bytes128 Bytes64 Bytes64 BytesN/AN/AScratch Pad RAM

    32768 Bytes38 Bytes (12 I/O, 26 Variable)

    38 Bytes (12 I/O, 26 Variable)

    38 Bytes (12 I/O, 26 Variable)

    32 Bytes (6 I/O, 26 Variable)

    32 Bytes (6 I/O, 26 Variable)

    32 Bytes (6 I/O, 26 Variable)

    16 Bytes (2 I/O, 14 Variable)RAM Size

    ~8,500 instructions/sec.

    ~6,000 instructions/sec.

    ~12,000 instructions/sec.

    ~12,000 instructions/sec.

    ~10,000 instuctions/sec.

    ~4,000 instructions/sec.

    ~4,000 instructions/sec.

    ~2,000 instructions/sec.

    ProgramExecution Speed

    25 MHz Turbo8 MHz Turbo20 MHz Turbo20 MHz Turbo50 MHz20 MHz20 MHz4 MHzProcessor Speed

    Ubicom SX48ACScenix SX48ACScenix SX48ACScenix SX48ACScenix SX28ACScenix SX28ACMicrochip

    PIC16C56cMicrochipPIC16C56c

    Microcontroller

    0º - 70º C* (32º -158º F)

    0o - 70oC* (32o -158o F) **

    0o - 70oC* (32o - 158oF) **

    0o - 70oC* (32o -158o F) **

    0o - 70oC* (32o -158o F) **

    0o - 70oC* (32o -158o F) **

    0o - 70oC* (32o -158o F) **

    0o - 70oC* (32o -158o F) **Environment

    1.24" x 0.60" x 0.45"1.2"x0.6"x0.4"2.1"x0.6"x0.4"1.2"x0.6"x0.4"1.2"x0.6"x0.4"1.2"x0.6"x0.4"1.2"x0.6"x0.4"

    2.5"x1.5"x.5 / 1.4"x.6"x.1"

    Package Size (L x W x H)

    24-pin DIP24-pin DIP40-pin DIP24-pin DIP24-pin DIP24-pin DIP24-pin DIPPCB w/Proto / 14-pin SIPPackage

    Javelin StampBS2pe-ICBS2p40-ICBS2p24-ICBS2sx-ICBS2e-ICBS2-ICRev.D / BS1-ICFeatures

    Família BasicX

    BX-1BX-35BX-24

    BX-1BX-35BX-24Features

    40 pin DIP, 44Pin TQFP, 44Pin PLCC

    Parellel

    1200 - 460.8K Baud

    32

    256 bytes expandable to 64K withRamSandwich

    8000+ lines of Basic code (Using external32K EEPROM) 256 lines without

    512 Bytes internal (32K bytes when usedwith 8-Pin external SPI EEPROM)

    65,000 Basic instructions per second

    40 pin DIP And 44 pin TQFP

    High speed Serial

    1200 - 460.8K Baud

    8 (8 of the 16 standard I/O pins can individuallyfunction as 10bit ADCs or standard digital I/Os or a mixture of both)

    27 Total (25 standard + 2 serial only(Com1))

    400 bytes

    8000+ lines of Basic code with 32K EEPROM

    32K bytes (User program and data storage)

    65,000 Basic instructions per second

    24 pin DIP module

    High speed Serial

    1200 - 460.8K Baud

    8 (8 of the 16 standard I/O pins can individuallyfunction as 10bit ADCs or standard digital I/Os or a mixture of both)

    21 (16 standard + 2 serial only + 3 accessed outside standard dip pin area)

    400 bytes

    8000+ lines of Basic code

    32K bytes (User program and data storage)

    65,000 Basic instructions per second

    Physical Package

    Programming interface

    Serial I/O speed

    Analog Inputs (ADCs)

    Available I/O pins

    RAM

    Max program length

    EEPROM

    Speed

    www.basicx.com

    BasicX vs. BASIC Stamp

    24-pin DIP module 24-pin DIP module 24-pin DIP module Package

    $59.00$49.00$49.95Preço

    YesYesYesOn-Chip Regulator and lowvoltage reset

    NoNoYesSPI Interface

    NoNo2 (Red & Green)On-Chip LEDs

    YesYesYesSerial I/O

    SerialSerialSerialPC Programming Interface

    NoNoYesFloating PointMath

    NoNoYesMultitasking OS

    NoNo8 (10 Bit ADCs)Analog Inputs

    ~500 instructionsPer 2K Bank~500 instructions8000+ instructionsMax. Program Length

    10,000 Instructions/sec.4000 Instructions/sec.65,000 Instructions/sec.Program Execution Speed

    96 Bytes32 Bytes400 BytesRAM

    16K Bank Switched2KBytes32KBytesEEPROM

    161616+ I/O Lines

    BASIC Stamp SXBASIC Stamp2 BasicX-24 Features:

    Família OOPIC

    OOPic-COOPic-ROOPic-II+

    www.oopic.com

  • 5

    OOPIC vs. Basic Stamp

    No.Yes, Up to 128 devicesNetwork.

    No.Yes, Objects can be connected together to form a logic circuit.

    Virtual Circuits.

    Serial Port (9600 Baud)I2C protocol via Parallel Port.PC Programming Interface.

    36 commands for both flow-control and hardware-control

    41 Commands, Functions and Operators.31 Objects71 Properties8 Methods

    Commands.

    20 mA / 25 mA25 mA / 25 mASource / Sink Current per I/O

    1631 I/O Lines plus an additional 2 lines for a local I2C Network

    I/O Lines

    4000 inst./s2000 inst./s. 100,000 Virtual Circuit op./sExecution Time.

    32 Bytes (6 for I/Os and 26 for variables)Up to 87. (Variables & Objects)Variable Capacity.

    500 to 600 lines of code4096 instructions to 32768 instructions with optional EEPROM

    Program Capacity

    One-at-a-Time.MultitaskingHardware Control System

    Proprietary "PBASIC" commands.Object Oriented. Hardware Control Method

    Proprietary language "PBASIC"Industry standard Basic, C and Java syntax.

    Language

    BASIC Stamp 2OOPicFatures

    Família OOPIC

    BASIC Stamp 2

    Regulador de 5V Regula a voltagem entre 5.5VCC e 15VCC

    ResonatorEstabelece a velocidade a que as instruções são processadas

    EEPROMArmazena o programa PBASIC em código máquina

    Chip InterpretadorLê o programa BASIC da EEPROM e executa as instruções

    Serial Signal ConditioningConverte a voltagemdos sinais entre a porta série do PCPC (+/- 12V) e o BASIC Stamp (5V)

    BASIC Stamp 2Pin 1: SOUT

    Transmits serial data during programming and using theDEBUG instruction

    Pin 2: SINReceives serial data during programming

    Pin 3: ATNUses the serial DTR line togain the Stamps attention for programming.

    Pin 4. VSSCommunicationsGround (0V).

    P0

    Pins 5-20:Input/Output (I/O)pins P0 through P15

    P1P2P3P4P5P6P7 P8

    P9P10P11P12P13P14P15

    Pin 21. VDDRegulated 5V.

    Pin 22. RESReset- LOW to reset

    Pin 23. VSSGround (0V)

    Pin 24. VINUn-regulated input voltage(5.5-15V)

    O BasicX é compatível pino-a-pino

  • 6

    BASIC Stamp 2

    Board of Education (Parallax)

    Regulador de 5Vadicional

    4 conectares para ligação directa de servomotores

    Breadboard para experiências

    Conectores de acesso às portas I/O

    LED da alimentação do circuitoBotão de reset

    Ficha para ligação do cabo série

    O cabo é do tipo StraightStraight--Through Through (sem (sem cruzamento dos pinos 2 e 3)cruzamento dos pinos 2 e 3)

    Contactos para Pilha de 9V

    Ficha para transformador

    Compativel com BasicX

    BASIC Stamp 2

    Board Next Step (Lynxmotion)Compativel com BasicX

    BASIC Stamp 2

    Outras boards

    BASIC Stamp 2

    BASIC Stamp Editor

  • 7

    BASIC Stamp 2

    Mapa da memória

    MemMemóóriaria EEPROM:EEPROM:ProgramaPrograma

    MemMemóóriaria RAM:RAM:VariablesVariables

    MemoriaMemoria RAM:RAM:I/O ControlI/O Control

    BASIC Stamp 2

    Input/Output

    OUTPUT 8OUTPUT 8 configuraconfigura o bit 8 o bit 8 parapara output no DIRS output no DIRS (define P8 (define P8 comocomo portaporta de output). de output). EquivalenteEquivalente a a DIR8=1DIR8=1 (1=output, 0 = input).(1=output, 0 = input).

    OUT9 = 1OUT9 = 1 colocacoloca o bit 9 de OUTS a 1 (o bit 9 de OUTS a 1 (colocacoloca P9 a 1)P9 a 1)

    IN10IN10 lêlê o valor do 10º bit de INS (o valor do 10º bit de INS (lêlê o o estadoestado de P10).de P10).

    BASIC Stamp 2

    Input/OutputOs registros de I/O podem também ser acedidos como Nibbles, Bytes e Words.

    IN0OUT0DIR0

    IN15OUT15DIR15

    TO As BITS

    INDOUTDDIRD

    INCOUTCDIRC

    INBOUTBDIRB

    INAOUTADIRA

    As NIBBLE

    S

    (High Byte)INH

    OUTHDIRH

    (Low Byte)INL

    OUTLDIRL

    As BYTES

    INSOUTSDIRS

    As 16-Bit

    WORDS

    BASIC Stamp 2Leitura de valores analógicos

    O BASIC Stamp não possui entradas analógicas, no entanto é possível ler valores analógicos através da instrução RCTime.

    A instrução RCTime requer um circuito RC (Resistência -Condensador), onde um dos componentes pode ser variável. Por exemplo, o componente resistência pode ser um potenciómetro, uma fotoresistência ou um termistor.

    A instrução RCTime mede o tempo que o condensador demora a carregar através da resistência. Quanto maior for a resistência maior será o tempo de carga.

  • 8

    BASIC Stamp 2Leitura de valores analógicos

    Pot VAR WORD declaração da variável Pot.

    HIGH 7 coloca +5V na porta 7, descarregando o condensador.

    PAUSE 1 Tempo de espera para que o condensador descarregue por completo.

    RCTIME 7,1,Pot Mede o tempo que a porta 7 deixa de ter um determinado estado (1) e armazena o resultado em Pot

    RCTIME pin, state, variable

    Pot VAR WORD

    Main:HIGH 7PAUSE 1RCTIME 7,1,PotDEBUG ? PotPAUSE 500

    GOTO Main

    BASIC Stamp 2Leitura de valores analógicos

    1V/div

    0.5mS/div

    Vss

    HIGH 7

    PAUSE 1

    Begin RCTime sensing

    Threshold Crossed

    Time to cross

    BASIC Stamp 2Variáveis

    INS, OUTS e DIRS são os registos que armazenam o estado das portas de I/O (estão localizados na RAM).

    REG0 a REG12 são registos de 16-bit (wordsized) usados para armazenar as variáveis do programa.

    Estes registos podem armazenar:– 13 variáveis de 16-bit (Words)– 26 variáveis de 8-bit (Bytes)– 52 variáveis de 4-bit (Nibbles)– 208 variáveis de 1-bit (Bits)

    ou– Qualquer combinação entre elas dentro

    dos limites de memoria.

    BASIC Stamp 2

    Variáveis

    ‘Declaração de Variáveis

    Temperature VAR BYTE My_Count VAR WORDSwitch1 VAR BITButtonNum VAR NIB

    My_Count16-bit Word

    Temperature8-bit Byte

    ButtonNum4-bit Nibble

    Switch11-bit

  • 9

    BASIC Stamp 2

    Constantes

    As constantes permitem atribuir nomes a valores que nunca mudam no programa.

    São usadas para facilitar a leitura do código.

    As constantes são usadas aquando da compilação do programa e portanto não gastam memória adicional.

    BASIC Stamp 2Fluxo típico de um programa do BASIC Stamp

    Main:GOSUB Check_PB1 'Call subroutine for PB1GOSUB Check_PB2 'Call subroutine for PB2

    GOTO Main

    Check_PB1: ' *** Sound alarm if PB1 pressedIf PB1 = PB_Off THEN Check1_Done 'If NOT pressed, jumpGOSUB Sound_Speaker ' over GOSUB

    Check1_Done:RETURN

    Check_PB2: ' *** Sound alarm if PB2 pressedIf PB2 = PB_Off THEN Check2_Done 'If NOT pressed, jumpGOSUB Sound_Speaker ' over GOSUB

    Check2_Done:RETURN

    Sound_Speaker: ' *** Sound speaker for alarmFREQOUT Speaker, 1000,2000 'Sound speaker

    RETURN

    BASIC Stamp 2

    Operações matemáticas e booleanas suportadas

    O BASIC Stamp apenas suporta matemática inteira.

    Contem um conjunto de operadores e funções matemáticas de uso geral: +, -, *, /, ABS, COS, SIN, SQR, MIN, MAX, //, etc.

    As operações booleanas são usadas na avaliação de expressões ou para manipulação bit a bit.

    Contem um conjunto de operadores booleanos de uso comum: AND, OR, XOR, NOT, &, |, ^, ~.

    BX-24

  • 10

    BX-24

    Conversor Analógico-Digital

    O BX-24 inclui um converso analógico-digital de 8 canais e de 10-bits de resolução.

    Os oito canais correspondem às portas 13 a 20.

    Todos os 8 canais podem ser usados tanto com input abalogico como digital.

    O input analogico deve estar entre 0 V e 5 V.

    É aconselhavel que a ligação terra da fonte de voltagem que se está a medir seja ligada à terra do BX-24.

    BX-24

    O conversor analógico digital é usado com a função GetADC

    Existem duas versões da função GetADC. A versão Integer devolve uma voltagem inteira de 10 bits. A versão Float devolve uma voltagem entre 0.0 e 1.0.

    Const PinNumber As Byte = 13Dim iV As Integer, V As Single

    'Versão Integer; iV tem um valor entre 0 e 1023.iV = GetADC(PinNumber)

    ‘Versão float; V tem um valor entre 0.0 e 1.0.Call GetADC(PinNumber, V)

    BX-24

    Procedimentos e funções

    [Private|Public] Sub procedure_name (arguments)[statements]

    End Sub

    Os procedimentos são chamados atravez da palavra chave Call.

    Podemos sair de um procedimento através da instrução Exit Sub.

    Private Sub GetPosition(ByRef X As Single)Call ReadDevice(X)If (X > 100.0) Then

    Exit SubEnd IfX = X * X

    End Sub

    BX-24Procedimentos e funções

    [Private|Public] Function function_name (arguments) As type[statements]

    End Function

    A função devolve um valor através do seu nome. Isto é, o nome da função é como que uma variável que podemos ler e escrever. Excepto no caso de funções do tipo string cujo nome da função não se pode ler.

    É possível sair de imediato de uma função através da instrução Exit Function.

    Function F(ByVal i As Integer) As SingleIf (i = 3) ThenF = 92.0 * FExit Function

    End IfF = CSng(i) + 1.0

    End Function

  • 11

    BX-24Instrução If-Then

    If (boolean_expression) Then[statements]

    End If

    If (boolean_expression) Then[statements]

    Else[statements]

    End If

    If (boolean_expression) Then[statements]

    ElseIf (boolean_expression) Then[statements]

    [ElseIf (boolean_expression) Then][statements]

    [Else][statements]

    End If

    BX-24Instrução Do-Loop

    Do[statements]

    Loop

    Do While (boolean_expression)[statements]

    Loop

    Do[statements]

    Loop While (boolean_expression)

    Do Until (boolean_expression)[statements]

    Loop

    Do[statements]

    Loop Until (boolean_expression)

    Podemos usar a instrução Exit Do para sair do ciclo Do-Loop.Podemos ter no máximo 10 níveis de ciclos Do-Loop.

    BX-24For-Next Statement

    For loop_counter = start_value To end_value [Step 1 | -1][statements]

    Next

    O contador do ciclo deve ser uma variavel local e não é permitido alterar o seu valor dentro do ciclo.A passagem do contador para um subprograma deve ser feita por valor.No final do ciclo, o contador é indefinido.Podemos usar a instrução Exit For para sair do ciclo For-Next.Podemos ter no máximo 10 níveis de ciclos For-Next.

    For i = 10 To 1 Step -1j = j - 1If (j < 3) Then

    Exit ForEnd If

    Next

    BX-24

    Instrução Select-Case

    Select Case test_expressionCase expression_list1

    [statements][Case expression_list2]

    [statements][Case Else]

    [statements]End Select

    A instrução Select-Case pode ser usada para seleccionara um conjunto de instruções de entre várias possibilidades.

  • 12

    BX-24

    Tipos de dados

    Tipo Espaço Intervalo

    Boolean 8 bits True .. FalseByte 8 bits 0 .. 255Integer 16 bits -32 768 .. 32 767Long 32 bits -2 147 483 648 .. 2 147 483 647Single 32 bits -3.402 823 E+38 .. 3.402 823 E+38String Varia 0 to 64 charactersBoundedString Varia 0 to 64 characters

    BX-24Variáveis

    [Public | Private] Dim variable As type

    Exemplos:

    Public Distance As Integer ‘Module-level variable, globalPrivate Temperature As Single ‘Module-level variable, local to module

    Sub ReadPin()Dim PinNumber As Byte ‘Variable is local to this subprogram

    End Sub

    BX-24Variáveis

    Os Strings podem ter tamanho fixo ou variável

    Exemplos:

    Dim S1 As String 'Variable lengthDim S2 As String * 1 '1-character stringDim S2 As String * 64 '64-character string

    Um String de tamanho variável pode guardar 0 a 64 caracteres.

    BX-24Constantes

    [Public | Private] Const constant_name As type = literal

    Por defeito as constantes são privadas.

    Cosntantes declaradas dentro de um subprograma:

    Const constant_name As type = literal

    Exemplos:

    Const Pi As Single = 3.14159Private Const RoomTemperature As Single = 70.0Public Const MaxSize As Byte = 20Const SwitchOn As Boolean = True, SwitchOff As Boolean = False

  • 13

    BX-24Conversão entre tipos de dados

    Funções Resultado

    CBool BooleanCByte ByteCInt IntegerCLng LongCSng SingleCStr StringFixB ByteFixI IntegerFixL Long

    BX-24ArraysOs arrays podem ser de qualquer tipo excepto strings e outros array

    Exemplos:

    Dim I(1 to 3) As Integer, J(-5 to 10, 2 to 3) As BooleanDim X(1 To 2, 3 To 5, 5 To 6, 1 To 2, 1 To 2, 1 To 2, _

    1 To 2, -5 To -4) As Single

    Os arrays podem ter entre 1 e 8 dimensões.

    Apenas arrays com uma dimensão e limite inferior igual a podem ser passados como parâmetros de subprogramas.

    A memória disponível para os arrays está limitada pelo tamanho da RAM e da EEPROM. Para alem disso um array não pode ter mais de 32KB.

    BX-24Ficheiros do projecto

    Um projecto é formado pelos seguintes ficheiros

    Extensão DescriçãoBAS Module file, contains source code for the program.BXP Project file, lists all modules in program.PRF Preferences file, contains initialization and configuration information.BXB BasicX program in binary format, similar to EXE file on a PC.MPP Map file of entire program, in human-readable format.BXM Map file of static module-level variables, in machine-readable format.MPX Map file of module level variables, in source code format for network.OBJ Object file, contains object code for each subprogramERR Error log file, produced by command line mode

    BX-24

    Rede

    Uma das características mais importantes do BX-24 é a possibilidade de ligação em rede.

    O esquema de endereçamento usado permite ligar um máximo de 65 000 nós em rede.

    Todos os nós da rede têm o mesmo acesso e a mesma prioridade permitindo comunicação peer-to-peer entre qualquer par de nós.

  • 14

    BX-24Multitasking

    Outra da características mais importantes do BX-24 é a capacidade de poder ter várias tasks(subprogramas) a executar ao mesmo tempo.

    O multitasking permite simplificar programas complexos dividindo-os em processos mais pequenos e manejáveis. Cada task pode cooperar com outras tasks ou correr de forma independente. É como ter múltiplos processadores a trabalhar ao mesmo tempo.

    O multitasking é implementado através de timesharing.

    Cada task necessita de uma stack de programa independente.

    OOPIC

    Introduz uma abordagem completamente diferente através da utilização de Programação Orientada por Objectos.

    Existe uma biblioteca de objectos que encapsulam circuitos electrónicos de uso comum.

    Esses objectos podem ser combinados para formar circuitos virtuais.

    OOPIC

    Biblioteca de objectosHardware Objects, Processing Objects, Variable Objects, User Definable Objects, System Objects

    OOPIC

    Objecto oServo (6 bytes)Encapsulamento de um servomotor comum

    The value specifying the position of the servo-motor. Data-Range: 0 - 127

    Value

    The Value property represented as a string.String

    A value that specifies whether or not the pulse isoutputted. Data-Range: 0 – 1

    cvFalse The Servo control signal is not outputted.cvTrue The Servo control signal is outputted.

    Operate

    The physical I/O Line to use. Data-Range: 0 – 31IOLine

    A value that specifies if the output pulse is reversed.Data-Range: 0 – 1.

    cvFalse The Servo control signal is normalcvTrue The Servo control signal is reversed.

    InvertOut

    Adjusts the value for the servo's mechanical center.Data-Range: 0 – 63

    Center

    Returns a pointer to the address of the oServo Objectinstance. Data-Range: 0 – 127

    Address

    DescriptionProperty

    'The servo connects to IOLine 31'The servo continuously move to 0º then 180º.

    Dim S1 As New oServoSub

    Main() S1.IOLine = 31 S1.Center = 28 S1.Operate =cvTrueDo S1 = 0 OOPic.delay = 150 S1 = 127 OOPic.delay = 150

    LoopEnd Sub

  • 15

    OOPIC

    Circuitos virtuais

    Os circuitos virtuais são criados ligando programaticamente um conjunto de objectos segundo uma metodologia semelhante à que se usaria para ligar um conjunto de componentes electrónicos.

    Uma vez criado, cada parte do circuito virtual pode ser manipulada ou evaluada pelo programa, proporcionando um controlo computorizado de todo o circuito.

    OOPIC

    Exemplo de um circuito virtual

    Pretende-se um programa que ligue um LED quando dois botões forem premidos em simultâneo.

    Dim Button1 As New oDIO1Dim Button2 As New oDIO1Dim RedLed As New oDIO1Dim AndGate As New oGate(2)

    Sub Main()Setup_Gate()

    End Sub

    Sub Setup_Gate()Button1.IOLine = 1: Button1.Direction = cvInputButton2.IOLine = 2: Button2.Direction = cvInputRedLed.IOLine = 3: RedLed.Direction = cvOutput

    AndGate.Input1.Link(Button1.Value) AndGate.Input2.Link(Button2.Value) AndGate.Output.Link(RedLed.Value)

    End Sub