====== KontrollerLab para Linux ====== O seguinte guia descreve a instalação e uso do AVR toolkit para o sistema operativo Ubuntu. ===== Instalação do Software ===== Instale o seguinte software: **1. Pacotes de software de Linux** * gcc-avr – Compilador GNU de linguagem C para AVR * avrdude – Programa para carregaento de ficheiros hexadecimais para o controlador * avr-libc – Bibliotecas em linguagem C para escrever código para a plataforma AVR Para instalar os pacotes use a linha de comandos: sudo apt-get install gcc-avr avrdude avr-libc ou software de instalação gráfica (como sendo o Ubuntu software center ou Synaptic packet manager). **2. Biblioteca HomeLab** A biblioteca simplifica a escrita de código, dado que as funções de baixo nivel já se encontram fitas. Visite a página web do HomeLab e descarregue o ficheiro chamado //Homelab library vX.X.run//, onde XX representa o número da versão. Execute o seguinte comando para instalar a biblioteca: sudo sh homelab_library_vX.X.run Confirme que a instalação da biblioteca foi bem sucedida. **3. KontrollerLab** KontrollerLab é um IDE (//integrated development environment//) para escrita, compilação, carregamento e depuração de software AVR. Descarregue o software KontrollerLab e guarde-o numa directoria (por exemplo, //~/Documents/AVR/KontrollerLab//). Execute o seguinte comando nessa directoria: sudo dpkg -i kontrollerlab*.deb Se tiver problemas com dependências de pacotes, execute o comando para instalar os pacotes em falta: apt-get install –f {{ :kit:001_kontrollerlab_installer.png?500 |}} ===== Ligação ao programador ===== Ligue o programador ao computador para verificar se o computador o reconhece. Escreva o comando "lsusb" no terminal de linha de comandos, este comando deverá mostrar a lista de dispositivos connectados por USB. O nome do programador é "Future Technology Devices International, Ltd FT 232 USB-Serial (UART) IC". {{ :kit:002_lsbusb.png?500 |}} Para obter a porta à qual o programador está conectado, verifique a directoria //dev// utilizando os comandos //cd /dev// (define ///dev// como a directoria actual) e //dir// (lista o conteudo da directoria). Como o programadore uma interface de série USB, o seu nome será algo do tipo "ttyUSBx" onde "x" é o indice do interface. Se não houver mais nenhum interface connectado este indice será 0. {{ :kit:003_ttyusb0.png?500 |}} ===== Criar um novo projecto ===== Para escrever um progama AVR, um projecto tem de ser criado que contem todos os ficheiros necessários: código fonte, ficheiros de cabeçalhos, programas compilados, etc. Para separar mais claramente os projectos, é sugerido ser criada uma directoria para cada projecto (esta opção é sugerida no assistente de criação de projecto). Para criar um projecto sigam os passos: **1.** Abrir KontrollerLab (//Applications -> Programming -> KontrollerLab//) e iniciar um novo projecto no menu //File -> New -> New project//. Uma janela abre onde a localização do projecto necessita ser localizada. Neste exemplo seria //../Homelab/blinkingLED///. {{ :kit:004_new_project_kontrollerlab.png?500 |}} **2.** O projecto tem de ter pelo menos um ficheiro C onde se escreve o código fonte. Ficheiros podem ser adicionados ao projecto através do menu //File -> New -> New//. Na janela que abre selecionar //C source// como tipo de ficheiro e especificar o nome. {{ :kit:005_new_file_kontrollerlab.png?500 |}} **3.** Em seguida, o projeto deve ser configurado para o kit HomeLab. A partir do menu //Project -> Configure Project// abra a janela de configurações e selecione //Common//. O tipo de CPU deverá ser ATmega128 e o relógio deverá ser 14745600,0 Hz. Também devem ser especificados os nomes dos ficheiros HEX e MAP. Pressionando o butão //Set as default// faz com que essas configurações sejam salvas como o valor por defeito para novos projetos. Isso é razoável quando se trabalha apenas com microcontrolador AVR do HomeLab. Como os arquivos HEX e mapa também são armazenados por defeito, recomenda-se usar algum nome geral para eles, por exemplo "out.hex". NB! Como a biblioteca HomeLab não pode ser adicioada no tab de configuração //Linker//, o comando "-lhomelab" tem de ser adicionado a seguir ao nome do ficheiro MAP. {{ :kit:006_project_conf_common.png?500 |}} Aplique as configurações no tab //Compiler// tal como indicado no seguinte screenshot. Antes de premir //OK// guarde também as configurações do compilador como os valores por defeito. {{ :kit:007_project_conf_compiler.png?500 |}} **4.** Configure o programador abrindo a janela de configurações através do menu //Project -> Configure Programmer//. Selecione "AVRDUDE" como o programador. Na tab "AVRDUDE" defina o tipo de programador como sendo //jtagmkI// e a porta de ligação ///dev/ttyUSBx// (onde "x" é o indice da porta). Defina estas configurações também como os valores por defeito. {{ :kit:008_programmer_conf.png?500 |}} **5.** Por fim, coloque as janelas no KontrollerLab como achar mais conveniente e prepare-se para escrever o seu primeiro programa. {{ :kit:010_kontrollerlab.png?500 |}} ===== Escrever e testar um programa ===== Depois dos passos de configuração estarem concluídos, chega a altura de programar. **1.** Ligue ao programado usando o módulo do controlado. Verifique que o programador está correctamente connectado com o socket JTAG. O cabo deverá estar orientado para sair da placa (veja na imagem). Ligue agora o power e verifique que o LED verde acende na placa controladora. {{ :kit:kit_test.jpg?500 |}} **2.** Escreva o seguinte programa no editor de ficheiros do Kontrollerlab e compile: #include #include int main(void) { // Set pin PB7 as an output DDRB = 0x80; // Lõputu tsükkel while (true) { // Inverting pin PB7 PORTB ^= 0x80; hw_delay_ms(500); } } [{{ :kit:011_compile_ignite.png?408 |Toolbar}}] Verifique que a janela de output indica a mensagem "File compiled successfully". Se a mensagem "Error(s) occurred: " aparecer verifique o programa para remover os erros. **3.** PAra descarregar o program para o controlador prima o butão //Ignite//. Após o carregamento sucedido, a mensagem "Project built and uploaded successfully" deverá aparecer. Se tudo estiver bem o LED vermelho da placa controlador deverá pisca periodicamente, com um segundo de intervalo. ===== Utilizando números de vírgula fluctuante ===== às vezes é necessário utilizar números de írgula fluctuante num programa. Para os utilizar em cálculos ou usá-los em funções do tipo//printf// são necessárias algumas modificações à configuração do projecto: **1.** Abra a janela //Project Configurations// e o tab //Linker//. Verifique a primeira linha na lista de //Linker flags// (veja na imagem)). {{ :kit:012_linker_fprintf.png?500 |}} **2.** Prima //OK// e feche a janela.