Introdução Sistemas Robóticos - IPGccarreto/_private/SR/Docs/0304/Micro... · 2004. 9. 20. · 1...
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