Aprendendo a programar com o BASIC Step M8. Conversor analógico / Digital



Documentos relacionados
Sistemas Digitais II. Interface com o mundo analógico. Prof. Marlon Henrique Teixeira Abril/2014

INTERFACE PARALELA. Área: Eletrônica Nível de conhecimento necessário: básico. Autor:

Cerne Tecnologia e Treinamento. suporte@cerne-tec.com.br

O Sistema de Computação

Arquitetura e Organização de Computadores

Oganização e Arquitetura de Computadores

CAPÍTULO 2 SISTEMAS DE NUMERAÇÃO E CÓDIGOS

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

Controle Remoto Ventilador

Informática Aplicada

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

Arquitetura de Computadores - Módulos de E/S. por Helcio Wagner da Silva

Manual do Usuário SISCOLE - Sistema de Cadastro de Organismos e Laboratórios Estrangeiros

O QUE É O CALC PLANILHAS ELETRÔNICAS O Calc é um programa que trabalha com planilhas.

Este manual contém instruções p/ instalação dos adaptadores. Bluetooth X Serial RS232. F8115e (DTE) F8895e (DCE)

Curso de Sistemas de Informação Campus Guaíba Cursos de Informática Projeto de Inclusão Digital APOSTILA APOSTILA CONCEITOS BÁSICOS DE INFORMÁTICA

Estruturas de Repetição

Algoritmos APRENDENDO A PROGRAMAR COM C#

FLIP FLOPS. EXPERIMENTS MANUAL Manual de Experimentos Manual de Experimentos M-1113A

Software Configurador

Introdução. Hardware (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação. joseana@computacao.ufcg.edu.

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

LISTA COMPLEMENTAR DE DAC E ADC DO LIVRO DO TOCCI

MODBUS COM ARDUINO.

Orientação a Objetos

ACD Loteca Chaves e Filtro PRO 1.0 Dicas

BARRAMENTO. Caminho de Dados

INTEGRAÇÃO JAVA COM ARDUINO

Aula 01. Breve História dos Computadores Informatiquês O Computador Software vs. Hardware. Introdução à Informática. Prof. Fábio Nelson.

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

ACD Lotogol Chaves e Filtro PRO 1.0 Dicas

Arquitetura de Computadores - Operação da Unidade de Controle. por Helcio Wagner da Silva

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

MANUAL DO USUÁRIO PROGRAMA OSCILOS. Osciloscópio digital. Versão 2.3

MODULO PR-7SEG-4 Experiência 01:

56K ESP-2 Modem 56K ESP-2 MODEM. Manual de instalação rápida. Versão 1.0

TUTORIAL DO SISTEMA CE MERCANTE

Índice. 1. Descrição Geral do Módulo. Módulo Processador CPU209-R1 V /07/05

Localizando e substituindo dados

ELETRÔNICA DIGITAL. Parte 6 Display, Decodificadores e Codificadores. Prof.: Michael. 1 Prof. Michael

Circuitos Lógicos Aula 3

Calculando seno(x)/x com o interpretador Hall.

Figura 8: modelo de Von Neumann

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

Consultório On-line. Tudo o que você precisa em um só lugar.

Cartilha de Acesso Rápido

Prof. Adilson Gonzaga. Interface com Displays

Capacitor em corrente contínua

Direto. ao Ponto. Comunicação Inverter Protocol entre PLC FX e Inversor Série 700 N o. DAP-PLCFX-05. Rev. A

CENTRO TECNOLÓGICO ESTADUAL PAROBÉ CURSO DE ELETRÔNICA

Entrada e Saída Transmissão Serial e Paralela

Interface com Displays de 7 Segmentos. Interface com Displays

Circuito integrado Temporizador 555. Circuito Integrado Temporizador (Timer) 555

Administração de Redes. Permissões gnu/linux

GUIA DE INSTALAÇÃO MULTIBIO 700

Vetores, Matrizes e String

Data Sheet FBEE Kit V05

Interrupções. O que é uma interrupção? Como funciona uma interrupção no AVR?

Microcontroladores PROF. ME. HÉLIO ESPERIDIÃO

DEAR ROBOT 2006/7. DEAR Robot 2006/7. Ligações. Sugere-se o seguinte esquema de ligações de sensores: Sensor. Alimentação dos sensores.

DISPOSITIVOS OPTOELETRÔNICOS Leds e Fotodiodos

Presys Instrumentos e Sistemas

Programação Básica em Arduino Aula 7

FIQUE POR DENTRO DA INTERNET

7. Funções de Lógica Combinacional. 7. Funções de Lógica Combinacional 1. Somadores Básicos. Objetivos. Objetivos. Circuitos Digitais 03/11/2014

Remoto Serial v. 1.0 Beta 10/8/ :41:04

Fundamentos de Arquitetura e Organização de Computadores

TUTORIAL - COMO SUBMETER ARTIGOS

Circuitos Aritméticos

ECF: A Geração do Arquivo

Sistemas Digitais Ficha Prática Nº 7

Unidade 10 Análise combinatória. Introdução Princípio Fundamental da contagem Fatorial

Configuração de um moving head com canais RGB

Painel Gráfico No-Break Conception Multi Ativo Innovation

Sistemas Operacionais. Entrada e Saída. Edeyson Andrade Gomes.

Dispositivos Externos

Laboratório de Microprocessadores e Microcontroladores. Experimento 7: Conversor Analógico/Digital e Conversor Digital/Analógico

PAINEL DE ALARME MONITORÁVEL ACTIVE CENTER

O Segredo De Como colocar links externos no Youtube e Aumentar sua taxa de conversão em 1000%

Aula 02. Conceitos relacionados à informática. Prof.: Roitier Campos Gonçalves

Introdução à Informática. Alexandre Meslin

CRONÔMETRO DIGITAL PROJETO

Voltar. Voltar. Voltar

Modem e rede local Guia do usuário

INSTITUTO FEDERAL CATARINENSE Campus Ibirama

Histórico e Evolução da Computação

Exemplo 1: Identificar um Elemento no Visualizador 3D. Bruno Andrade. Palavras-chave: (V17, Visualizador, 3D, Verificação)

SORTEADOR ALEATÓRIO SAP - 59 / MP

Depois de configurada nossa comunicação serial podemos enviar vários comandos para comunicação entre o computador e o Arduino:

Backup e Recuperação Guia do Usuário

Alteração do Status da Denúncia

Índice. Especificações Técnicas...3 Instalação...3 Impacta 16 e Impacta 94, 140 e

Organização e Arquitetura de Computadores I

3.3 Qual o menor caminho até a Escola? 28 CAPÍTULO 3. CICLOS E CAMINHOS

Eletrônica Analógica

Botão: 3 Toque curto: A) no menu, selecionar/ movimentar para baixo B) durante a reprodução para selecionar o próximo registro,

Instruções para download e instalação da atualização de Mapa GPS

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

EPUSP PCS 2021/2308/2355 Laboratório Digital GERADOR DE SINAIS

Transcrição:

Aprendendo a programar com o BASIC Step M8 Chegou a hora de trabalharmos com o conversor analógico/digital e com UART para comunicação serial. Estes dois periféricos são muito interessantes pois permitem uma interação muito grande com o usuário. Se você não leu os artigos anteriores, faça isto agora. Conversor analógico / Digital O conversor analógico / digital do BASIC Step M8 é um dispositivo muito útil. Ele converte uma tensão analógica em um número digital. O conversor é de 10 bits. O resultado é um número de 10 bits, então ele não cabe em uma variável byte. Nós devemos usar uma variável inteira (de 2 bytes). Na linguagem BASIC do BASIC Step M8 definimos uma variável inteira colocando o símbolo de porcentagem como por exemplo var%. As variáveis inteiras não tem sinal, ou seja são sempre positivas. Elas podem variar de 0 a 65535 (&H0 a &HFFFF). Elas podem ser usadas nos comandos IF e em equações exatamente como fizemos com as variáveis byte. A diferença das variáveis byte e inteiras é que as inteiras são armazenadas na RAM estática do chip. Isto significa que são necessários 2 ciclos de clock para ler a variável e mais dois para armazenar o resultado. Sendo assim, as operações com variáveis inteiras são mais lentas do que as com variáveis byte. Para realizar a conversão analógico / digital e armazenar o resultado em uma variável, nós usamos o comando A2D. A sintaxe do comando é A2D variável, multiplexador, opções. O BASIC Step M8 possui 8 entradas analógicas que podem ser lidas. A parte multiplexador do comando A2D é um número de 0 a 7 que corresponde a entrada analógica que queremos ler. As entradas analógicas estão na porta C do processador. Existe uma lista grande de opções para o comando A2D. Veja no arquivo de ajuda do compilador sobre todas as opções. Neste exemplo iremos usar a opção IDLE. Esta é uma opção que permite executar uma conversão muito precisa e sem ruídos. A opção IDLE faz com que o processador entre em estado de espera enquanto a conversão é feita e volte a operação assim que a conversão termine. Deste modo não há ruído digital do processador interferindo com o sinal analógico. Vamos escrever um programa para fazer uma conversão A/D e mostrar o resultado. Para mostrar o resultado iremos colocar o valor na porta B, que deve ser ligada aos LEDs da placa Super StepLab. O único problema é que temos 8 LEDs e 10 bits para mostrar, pois o conversor é de 10 bits. O meio mais fácil de resolver isto é descartando os dois bits menos significativos. Nós podemos fazer isto com o comando SHIFT. Tato Equipamentos Eletrônicos Ltda www.tato.int.br 1

O princípio de operação do comando SHIFT é melhor entendido se olharmos a representação de um número em binário. A representação do número 18 em binário é: 00010010 Agora deslocando para a direita uma vez temos 00001001 Deslocando mais uma vez para a direita obteremos 00000100 Viu como funciona? Então se deslocarmos o nosso número de 10 bits para a direita duas vezes ele se tornará um número de 8 bits e estará no byte menos significativo da variável inteira. Por exemplo, 0000001100110011 se tornará 0000000011001100. Isto pode ser feito com o comando: SHIFT var%,2,right A última coisa que precisamos fazer é passar o byte menos significativo da variável inteira para uma variável byte (para podermos colocar na porta B). Isto é feito simplesmente atribuindo o valor da variável inteira a uma variável byte. O programa ficará assim. A2D x%,0,idle Para executar este programa na Super StepLab, ligue a saída do trimpot a entrada C,0 do BASIC Step M8. Ligue a porta B aos 8 LEDs da placa. Quando executar o programa verá que os LEDs mudam quando você gira o trimpot. Quando você trabalha com dados do mundo real, é geralmente muito interessante filtrar os dados para remover ruídos indesejados. Para isto existe o comando FILTER. Vamos modificar o programa acima para filtrar o sinal vindo do trimpot. No próximo programa iremos ler o valor da tensão no trimpot a cada décimo de segundo. Iremos filtrar o resultado com um valor de 2^4( dois elevado a quarta potência) o que nos dará um filtro de 1,6 segundos. Execute o programa a seguir e mude o trimpot rapidamente. Você verá que a mudança nos LEDs se dará bem mais lentamente e irá se aproximando do valor final. Este é o equivalente por software de usar um resistor e um capacitor para fazer um filtro do Tato Equipamentos Eletrônicos Ltda www.tato.int.br 2

tipo passa baixas. Você pode mudar o parâmetro 4 no comando FILTER para 3 e ver que o resultado fica duas vezes mais rápido. A2D y%,0,idle FILTER x%,y%,4 PAUSE 100 Transmissor-Receptor Universal Assíncrono (UART) Uma das coisas mais úteis que podemos fazer com o BASIC Step M8 é conectá-lo a um computador PC. As informações podem transitar em ambas as direções. A primeira coisa que iremos fazer é transmitir o valor de nosso trimpot (espero que você não tenha desconectado o circuito ainda) para o PC. A UART utiliza dois pinos específicos do processador, o D,0 para recepção ou RX e o D,1 para transmissão ou TX. O cabo de gravação do BASIC Step M8 também funciona como cabo de comunicação serial. O compilador possui uma tela de terminal onde os dados recebidos pela porta serial podem ser visualizados. Vamos acrescentar um pouco mais de código ao nosso programa. Existem dois comandos para controlar a UART. O comando XMIT controla a transmissão da UART e o comando RECV controla a recepção. A princípio nós iremos transmitir os dados lidos do trimpot para o PC com o programa a seguir. O primeiro comando XMIT configura a UART para a velocidade que queremos trabalhar. O segundo comando XMIT transmite os dados. Novamente, você pode ver no arquivo de ajuda mais sobre o comando XMIT e RECV. XMIT INIT 9600 A2D y%,0,idle FILTER x%,y%,4 XMIT OUT temp PAUSE 100 Tato Equipamentos Eletrônicos Ltda www.tato.int.br 3

Se olharmos no pino de saída da UART com um osciloscópio, veremos um trem de pulsos a cada décimo de segundo. É claro que é muito mais esclarecedor se pudermos ver os números na tela do PC. Como foi dito antes, o compilador possui uma tela de terminal que pode ser usada para visualizar os dados recebidos pela porta serial. Abra a tela do terminal e habilite o reset do BASIC Step M8 e você poderá ver os dados relativos a posição do trimpot. Alterando a posição do trimpot você pode ver os valores mudando na tela. Agora vamos fazer os nossos dados transitarem em ambas as direções. O programa a seguir irá receber um byte do PC, incrementá-lo e enviar de volta para o PC, ou seja o PC só irá receber um byte após enviar um. Se você digitar A na tela do terminal, deve receber o caracter B. XMIT INIT 9600 RECV INIT 9600 RECV INTERRUPT ON rflag = 0 IF rflag 0 THEN INCR rbyte XMIT OUT rbyte rflag = 0 END IF ================================ ROTINA DE INTERRUPÇÃO PARA = RECEBER DAS DA UART = ================================ INTERRUPT RECV PUSHFLAGS PUSHREG rflag = 1 RECV IN rbyte, errflag~ POPREG POPFLAGS END INTERRUPT Existem diversos conceitos novos que merecem explicação. O comando RECV INTERRUPT ON habilita a interrupção da parte de recepção da UART. A qualquer momento que um byte seja recebido pela UART, uma interrupção é gerada. Isto significa que não importa o que o programa esteja fazendo, ele irá desviar para a rotina de tratamento de interrupção. No caso do comando RECV, ele irá desviar para a rotina INTERRUPT RECV. Tato Equipamentos Eletrônicos Ltda www.tato.int.br 4

Os dois comandos PUSH salvam o estado do processador na pilha. No fim da rotina de interrupção os dois comandos POP restauram o estado do processador de modo que ele possa continuar a executar do programa principal no mesmo estado que estava antes da interrupção. Estes comandos devem ser colocados em todas as rotinas de interrupção que você escrever. O processamento real da rotina é feito pelas duas instruções do meio. Ele seta a variável rflag, que informa ao programa principal que um byte foi recebido pela UART. O comando RECV IN coloca o byte recebido pela UART na variável rbyte e também carrega o byte de erro da UART na variável errflag~. Este é um novo tipo de variável. Colocando o sinal de til no final do nome da variável, declaramos que a variável é armazenada em RAM e não em registrador. Lembre-se que o processador possui somente 28 variáveis de registrador. Todas as outras deve ser armazenadas em RAM e este é o modo correto de fazer isto. De volta ao programa principal, nós simplesmente esperamos até que a variável rflag seja diferente de 0. Quando isto acontecer, iremos incrementar a variável rbyte (é o que o comando INCR faz) e transmiti-la de volta para o PC. Se o PC enviar um A retornaremos um B. A UART é muito útil quando queremos escrever dados no Display Serial da Tato. A grande vantagem destes displays é que eles necessitam somente de um pino do processador. Existe um outro comando para enviar dados pela UART que serve perfeitamente para os Displays Seriais, este comando é o PRINT UART. O comando PRINT UART necessita que a UART seja configurada com o comando XMIT INIT antes de poder ser usado. Para escrevermos um texto simples na primeira e segunda linha do display poderíamos usar: XMIT INIT 9600 configura a UART XMIT OUT &H0D Inicializa o display PRINT UART linha 1 ; XMIT OUT &HC0 endereça linha 2 PRINT UART linha 2 ; Como podemos ver o comando PRINT facilita o nosso trabalho quando queremos enviar uma string para o display. No próximo artigo iremos falar sobre estruturas de controle. Tato Equipamentos Eletrônicos Ltda www.tato.int.br 5