Programação C para Arduino

Documentos relacionados
Arquitetura do Microcontrolador Atmega 328

Disciplina : Microcontroladores AVR

ARDUINO. Profº. Engº. Robson Dias Ramalho

AULA 6 - INTRODUÇÃO AO ARDUINO Revisão de Eletrônica Digital e introdução aos Sistemas Computacionais.

A placa descrita pode receber alimentação pela conexão USB ou por uma fonte de alimentação externa.

Anatomia do Arduino Bootloader

Sistemas Embarcados:

Objetivos MICROCONTROLADORES HARDWARE. Aula 03: Periféricos. Prof. Mauricio. MICRO I Prof. Mauricio 1. Arquitetura de um Microcontrolador

Sistemas Digitais EDUARDO ELIAS ALVES PEREIRA

Introdução à robótica

Família de Microcontroladores AVR

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

Programa Trainee 2012 Módulo 4 Microcontroladores AVR

Arquitetura e Organização de Computadores. Conjunto de Instruções da Arquitetura CompSim

Arduino - Primeiros Passos

Microprocessadores e Microcontroladores. Professor Lucas Araujo do Nascimento

Características técnicas Baseado no ATMega da empresa AVR, fabricante de micro-controladores em plena ascensão e concorrente do PIC Pode usar ATMega

Microcontroladores PIC16 - XM 116 -

INTRODUÇÃO A PLATAFORMA ARDUINO. TÁSSIO JOSÉ GONÇALVES GOMES

II SATEC 2ª Semana de Atualização Técnica

Aula 10 Microcontrolador Intel 8051 Parte 1

Microcontroladores PROF. ME. HÉLIO ESPERIDIÃO

Manual Técnico Protuino FTDi

Hardware Livre Arduino. Givanaldo Rocha de Souza

Guia da Placa de desenvolvimento PD Mega16 N1

Programação do Arduino. Parte 1. IDE Wiring

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

MINICURSO - PLATAFORMA ARDUINO Eixo de Informação e Comunicação Gil Eduardo de Andrade

Aula 1 Apresentação e Conceitos Iniciais. Wellington Cássio Faria fb.com/wellingtoncf

Suporta os microcontroladores: R. Leonardo da Vinci, Campinas/SP CEP F.: (19) Kit de Desenvolvimento ACEPIC 28

Introdução aos microcontroladores Microcontroladores e microprocessadores Tecnologia em Manutenção Industrial

Placa de desenvolvimento USB AFSmartBoard utiliza PIC18F4550 da Microchip, microcontrolador com o Flash 32kb, 2048 bytes de memória RAM

ARDUINO BÁSICO E T A P A 1 O QUE É ARDUINO? Prof. Amadeu Zanon Neto

14/3/2016. Prof. Evandro L. L. Rodrigues

MSP430 Lab 01 Instalação do Code Composer Studio e teste da Launchpad

Programação Básica em Arduino

Introdução ao Arduino

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Palestra de Tecnologia. Assunto: Microcontroladores.

Jadsonlee da Silva Sá

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

Introdução à Plataforma ARDUINO

Introdução. O que é o Arduino?

AULA2 Introdução a Microcontrolador. Disciplina: Aplicações Avançadas de Microprocessadores (AAM)

Cerne. Conhecimento para o Desenvolvimento. Cerne Tecnologia e Treinamento

Cerne Tecnologia e Treinamento

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Curso Arduino ESP8266. Aula #1 - Introdução

Arduino Básico: As versatilidades desta plataforma na prática

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25

Estudo da placa de prototipagem Intel Galileo Gen2. Apostila de acompanhamento para o aluno.

Programação Básica em Arduino Aula 1

SEL-433 Aplicação de Microprocessadores I. Prof: Adilson Gonzaga

Curso introdutório de microcontroladores - Plataforma Arduino

Cerne Tecnologia e Treinamento

A placa Arduino: uma opção de baixo custo para experiências de Física assistidas pelo PC. Prof. Helio Salim de Amorim 1

Microprocessadores. São máquinas elétricas onde podemos armazenar instruções lógicas, aritméticas e de tomada de decisão;

Cerne. Conhecimento para o Desenvolvimento. Cerne Tecnologia e Treinamento. Apostila de BASIC para PIC16F628A

// Arduino {? } Mais o que é?..

Arquitetura do Disciplina de Microcontroladores. Prof. Ronnier Prof. Rubão

Linguagens de Programação Classificação

MINICURSO ARDUINO BÁSICO

Portas de entrada e saída; Interrupções; Interrupções externas; Temporizadores Contadores; Interface Serial

Introdução à Organização de Computadores. Aula 8

Introdução do Arduino para aquisição de dados e controle de instrumentos

ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR

Sistemas Digitais: Introdução

Tecnologias Digitais

Microcontroladores PIC18 - XM 118 -

Aplicações Avançadas de Microprocessadores. Professor: Marco Shawn Meireles Machado

Arduino. Gilmar Aquino

ALGORITMOS, ARQUITETURA E ARDUINO

TRABALHO DE CONCLUSÃO DE CURSO TÉCNICO EM ELETRÔNICA. Reutilização de água

ARDUÍNO PROCEDIMENTOS BÁSICOS

SICILIANO TECNOLOGIA

SEL-614 MICROPROCESSADORES E APLICAÇÕES. Adilson Gonzaga

Cerne. Conhecimento para o Desenvolvimento. Cerne Tecnologia e Treinamento

Arduíno: Uma possibilidade de integração com o gvsig

Cerne. Conhecimento para o Desenvolvimento. Cerne Tecnologia e Treinamento

Cerne Tecnologia e Treinamento

Prof. Eliezer Soares Flores 1 / 22

Laboratório de controle 2018/1. Professores: Adolfo Bauchspiess ENE/UnB Lélio R. Soares Júnior ENE/UnB

Instituto Federal do Paraná IF-Robótica. Prof. MSc. Marcos Dinís Lavarda Contato:

Introdução à Computação Parte 2

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

PLATAFORMA PARA ESTUDO EM PROGRAMAÇÃO DE MICROCONTROLADORES FAMÍLIA 8051

Cerne Tecnologia e Treinamento

ARDUINO UNO Guia do Usuário

Descrição dos pinos de entrada e saída e de funções especiais. Descrição dos modos de acesso: individual e por porto

PSI3441 Arquitetura de Sistemas Embarcados

Estrutura Básica de um Computador

Cerne Tecnologia e Treinamento (21) (11) MSN: Skipe: cerne-tec

Curso de Básico Arduino! Ministrado por: Wellington Cássio Faria Contato:

Sistemas Embarcados. Prof. Dr. Fábio Rodrigues de la Rocha. (Apresentação) 1 / 45

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Cerne Tecnologia e Treinamento.

Cerne Tecnologia e Treinamento

Conjunto de Instruções e Modelos de Arquiteturas

Gravadora USB para Microcontroladores AVR Atmel

Transcrição:

INSTITUTO FEDERAL DE SANTA CATARINA DEPARTAMENTO DE ELETRÔNICA Programação C para Arduino Prof. Charles Borges de Lima. Maio/2013 1 1

SUMÁRIO Introdução O Arduino Uno - O ATmega328 Programação - Assembly - Linguagem C - IDE do Arduino Registradores do ATmega328 Trabalho com Bits Produzindo um Código Eficiente Gravação do Firmware Conclusões Referências Bibliográficas 2 2

INTRODUÇÃO Arduino é uma plataforma eletrônica de prototipagem baseada em hardware livre e software, fáceis de usar e flexíveis. Possui um IDE que permite a programação de forma fácil de um microcontrolador AVR. Todavia, não é eficiente e não permite o desenvolvimento profissional de projetos. Para um projeto profissional é necessário o uso de ferramentas adequadas de programação e do conhecimento técnico do microcontrolador empregado. A IDE do Arduino não é destinada ao desenvolvimento profissional. 3 3

O ARDUINO UNO Como é estruturado o Hardware: 0-5 (azul) - pinos de entradas analógicas. Entradas para o ADC, podem ser usados como I/O digital. 0-13 (verde) - pinos de I/O digitais. Pinos 0 e 1 também são utilizados para a comunicação serial. AREF(laranja) - referência analógica do ADC. S1 (azul) - botão de inicialização. ICSP (ciano) - conector de gravação In-Circuit. USB (amarelo) - usado para gravar o Arduino ou energizá-lo. X1 (rosa) - fonte de alimentação externa (9-12VDC, após diodo estará também em Vin). Existem variações no layout da placa conforme o modelo. 20 Pinos de I/O 4 4

O ATmega328 O microcontrolador do Arduino Uno é o ATmega328 (AVR). 5 5

PINOS DO ATmega328 NO ARDUINO Informações fundamentais para a programação. 6 6

Assembly PROGRAMAÇÃO ASSEMBLY Todo microcontrolador possui um conjunto próprio de instruções representadas por mnemônicos (assembly) que após o desenvolvimento do programa são convertidos nos zeros e uns lógicos interpretáveis pelo microprocessador. O assembly é uma linguagem de baixo nível e permite obter o máximo desempenho de um microcontrolador, gerando o menor número de bytes de programa combinados a uma maior velocidade de processamento. Todavia, o assembly só será eficiente se o programa estiver bem estruturado e empregar algoritmos adequados. Programar em assembly exige muito esforço de programação. Assembly é a linguagem da CPU do microcontrolador. 7 7

EXEMPLO 8 8

EXEMPLO Piscando um LED ligado ao pino PB5 (pino 13 no Arduino). 30 Bytes 15 instruções 9 9

PROGRAMAÇÃO C Linguagem C Com a evolução tecnológica (compiladores), o assembly foi quase que totalmente substituído pela linguagem C. As vantagens do uso do C são numerosas: Redução do tempo de desenvolvimento. O reuso do código é facilitado. Facilidade de manutenção. Portabilidade. Os compiladores convertem o C para o Assembly antes da geração do código de máquina. 10 10

PROGRAMAÇÃO C O problema de desenvolver o código em C é que o mesmo pode consumir muita memória e reduzir a velocidade de processamento. Os compiladores tentam traduzir da melhor forma o código para o assembly (antes de se tornarem código de máquina), mas esse processo não consegue o mesmo desempenho de um código escrito exclusivamente em assembly. Como os compiladores C são eficientes para a arquitetura do AVR, a programação dos microcontroladores ATmega é feita em C. Só existe a necessidade de se programar puramente em assembly em casos críticos. 11 11

EXEMPLO 216 Bytes Otimização -Os Usando cpl_bit(portb,led) resultam 202 bytes. 12 12

IDE DO ARDUINO (Wiring) 30 bytes Assembly 216 bytes C 1084 bytes IDE Arduino Linguagem própria baseada em C e C++. 13 13

REGISTRADORES DO ATmega328 Os registradores de I/O são o painel de controle do microcontrolador, pois todas as configurações de trabalho, incluindo acesso às entradas e saídas, se encontram nessa parte da memória. Total de 87 Registradores Painel de Controle. 14 14

REGISTRADORES DOS PORTs 15 15

Exemplo DDRD = 0b00000100; DDRD = 1<< PC2; PORTD = 0b11111011; set_bit(portd, 2); clr_bit(portd, 2); tst_bit(pind, 7); UCSR0B = 0x00; //desabilita RXD e TXD 16 16

TRABALHO COM BITS O trabalho com bits é fundamental para a programação de um microcontrolador. Assim, compreender como podem ser realizadas operações com bits é primordial para uma programação eficiente. Exemplo: 17 17

Ativa Bit Exemplo: 18 18

Limpa Bit Exemplo: 19 19

Complementa Bit Exemplo: 20 20

Testa Bit Exemplo: 21 21

Exemplo 22 22

PRODUZINDO UM CÓDIGO EFICIENTE Compile com a máxima otimização. Use variáveis locais sempre que possível. Use o menor tipo de dado possível (8 bits), unsigned se aplicável. Use do{ } while(expressão) se aplicável. Use laços com contadores decrescentes e pré-decrementados, se possível. Use macros ao invés de funções para tarefas menores que 2-3 linhas de código em assembly. Evite chamar funções dentro de interrupções. Se possível junte várias funções em um módulo (biblioteca), para aumentar o reuso do código. Todas as constantes e literais devem ser colocados na memória flash. Alterar compilar, alterar compilar, comparar. 23 23

Exemplo sem ponto flutuante unsigned int (16 bits) Evitar o uso de Ponto Flutuante. 24 24

GRAVAÇÃO DO FIRMWARE Gravador USBtiny/USBasp ou diretamente pelo Arduino (conversor serial/usb com um µcontrolador com Bootloader). avrdude.exe - GUI 25 25

GRAVAÇÃO DO FIRMWARE avrdude.exe AVR8 Burn-O-Mat 26 26

CONCLUSÃO O Arduino e seus Shields permitem um prototipação rápida, dado o conjunto de funções e bibliotecas disponíveis. É fácil de programar. Todavia, a IDE do Arduino é muito limitada e inadequada ao desenvolvimento profissional. O código não é otimizado e não existem ferramentas de depuração. O desenvolvimento profissional exige o conhecimento do microcontrolador e da programação C. Códigos eficientes são resultantes de bons algoritmos, produzindo maior densidade de código (funcionalidade/bytes). É fundamental conhecer a arquitetura interna do microcontrolador para desenvolver os melhores programas. 27 27

REFERÊNCIAS BIBLIOGRAFICAS LIMA, C. B.; VILLAÇA, M.V. M. AVR e Arduino: Técnicas de Projeto. 2ª. ed. Edição dos Autores, Florianópolis, 2012. GANSSLE, Jack. The Firmware Handbook. 1ª ed. Elsevier, United Kingdom, 2004. ATmega48/88/168/328/A/PA/P: Microcontroladores AVR (Manual do fabricante). Atmel AVR4027: Tips and Tricks to Optimize Your C Code for 8-bit AVR Microcontrollers (Application Note). http://atmel.com/ http://www.avrfreaks.net/ http://arduino.cc/ http://fritzing.org/ http://borgescorporation.blogspot.com.br/ A vida é dura pra quem é mole! 28 28

MUITO OBRIGADO PELA ATENÇÃO! borgescorp@gmail.com Mars Robot Curiosity is Powered by Arduino... 29 29