Índice:

Como usar o Dragon Rider 500 com seu AVR Dragon: 10 etapas
Como usar o Dragon Rider 500 com seu AVR Dragon: 10 etapas

Vídeo: Como usar o Dragon Rider 500 com seu AVR Dragon: 10 etapas

Vídeo: Como usar o Dragon Rider 500 com seu AVR Dragon: 10 etapas
Vídeo: Программирование AVR — Введение в AVR Dragon 2024, Julho
Anonim
Como usar o Dragon Rider 500 com seu AVR Dragon
Como usar o Dragon Rider 500 com seu AVR Dragon

Este instrutível é um curso intensivo sobre como usar alguns dos recursos do Dragon Rider 500 da Ecros Technologies. Esteja ciente de que existe um Guia do usuário muito detalhado disponível no site da Ecros.

O Dragon Rider é uma placa de interface para uso com um programador de microcontrolador AVR chamado AVR Dragon da Atmel. Para obter mais informações: Wesite da Atmel: https://www.atmel.com/ Link do AVR Dragon: https://www.atmel.com/dyn/products/tools_card.asp? Tool_id = 3891 Dragon Rider 500 da Ecros Technology: https://www.ecrostech.com/AtmelAvr/DragonRider/index.htm Dragon Rider 500 assembly Instructable: https://www.instructables.com/id/Assembling-the-Dragon-Rider-500-for-use-with- the-A / Aprenda tudo sobre os microcontroladores AVR: https://www.avrfreaks.net Este instrutível pode crescer com o tempo, então verifique novamente de vez em quando!

Passo 1: AVR Dude

Você precisa de algum software de programação para usar o AVR Dragon para programação. Eu uso o AVRdude com o sistema operacional Ubuntu (linux) e estou muito feliz com os resultados. Este instrutível não vai lidar com os meandros do software de programação. Se você não sabe como configurar ou usar o software de programação, verifique este instrutível para atualizá-lo: https://www.instructables.com/id/Getting-started-with-ubuntu-and-the- AVR-dragon / Meu palpite é que se você comprou e montou um Dragon Rider 500, você já sabe como programar um chip com o AVR Dragon … em diante!

Etapa 2: ATtiny2313 - piscar os LEDs

ATtiny2313 - Piscar os LEDs
ATtiny2313 - Piscar os LEDs
ATtiny2313 - Piscar os LEDs
ATtiny2313 - Piscar os LEDs
ATtiny2313 - Piscar os LEDs
ATtiny2313 - Piscar os LEDs

Vamos programar um ATtiny2313 que é um microcontrolador de 20 pinos. O Dragon Rider 500 tem soquetes para vários microcontroladores AVR de tamanhos diferentes. Isso inclui: soquetes de 8, 20, 28 e 40 pinos. Dependendo de qual soquete você usa, os jumpers na placa Dragon Rider devem ser configurados de forma diferente.

Configurações de jumpers

Defina os jumpers no Dragon Rider para que os shunts conectem os pinos a seguir. (pino 4 é o pino central para J22-J-24) Pinos: J5 - 23J6 - 23J7 - 12J16 - 23J22 - 41J23 - 41J24 - 41 Esta é uma configuração básica que permite ISP (In System Programming).

Blinky Blinky

Programar não adianta nada a menos que você tenha algo para programar. Eu escrevi um exemplo de código muito curto para piscar o LED do Dragon Rider um de cada vez. Use um cabo de fita para conectar o conector do LED (J29) ao conector do PortB (J2).

Programação

Incluí o arquivo C, bem como um makefile e o arquivo hexadecimal. Como mencionei na introdução, não posso cobrir o lado do software de programação no Instructable. Programe como você faria para o AVR Dragon, já que o Dragon Rider não altera em nada o lado do software.

Etapa 3: usando o complemento de LCD

Usando o Add-on de LCD
Usando o Add-on de LCD

Esta é uma maneira simples de usar o complemento de LCD. Isso gravará "Dragon Rider" na tela LCD.

Hardware:

  • ATtiny2313
  • Jumper R / W: R / W deve ser conectado a "BIT1" no Dragon Rider Board (veja a explicação no manual de montagem)
  • J23: Este jumper deve ser instalado para a programação do ISP, mas depois removido para que o LCD funcione corretamente.
  • Conecte o LCD à PORTA B usando um cabo de fita (J31 a J2)

Programas

Estou usando a biblioteca de LCD de Peter Fleury para acionar o LCD no modo de 4 bits. Verifique a página inicial de Peter para fazer o download da biblioteca. Você precisará certificar-se de que lcd.c foi compilado com seu código e de fazer as seguintes alterações em lcd.h:

Estamos usando o oscilador RC interno, então XTAL precisa ser definido para 1 MHz:

#define XTAL 1000000

  • As configurações da porta precisam ser ajustadas para PORTB:
  • #define LCD_PORT PORTB

  • Pinagem para 4 linhas de dados precisa ser adaptada:
  • #define LCD_DATA0_PIN 4 #define LCD_DATA1_PIN 5 #define LCD_DATA2_PIN 6 #define LCD_DATA3_PIN 7

  • Pinagem para RS, RW e E precisa ser adaptada:
  • #define LCD_RS_PIN 3 #define LCD_RW_PIN 1 #define LCD_E_PIN 2

    O programa principal é muito simples graças ao trabalho que Peter Fleury fez em sua biblioteca LCD. CÓDIGO:

    #include #include "lcd.h" int main (void) {lcd_init (LCD_DISP_ON); // Inicializa o LCD com o cursor desligado lcd_clrscr (); // Limpa a tela LCD lcd_gotoxy (5, 0); // Mova o cursor para este local lcd_puts ("Dragon"); // Coloque esta string no LCD lcd_gotoxy (6, 1); // Mova o cursor para este local lcd_puts ("Rider"); // Coloque esta string no LCD para (;;) {// Não faça nada para sempre (mensagem já exibida no LCD)}}

    Código Anexado

    O código em anexo inclui a biblioteca LCD de Peter Fleury (lcd.ce lcd.h) com sua permissão. Obrigado Peter! A única alteração que fiz foi definir os pinos apropriados nas Defines. Visite o site dele para baixar o pacote: https://www.jump.to/fleuryEu também incluí um makefile que uso escrito por Eric B. Weddington e Jorg Wunsch. Enviei um PM para Jorg no avrfreaks.net, mas nunca recebi uma resposta dele. Existem algumas mudanças no makefile para adaptar ao uso do Linux e do Dragon. Obrigado a vocês dois, por favor, me conheçam suas preferências para compartilhar seu trabalho.

    Etapa 4: Programação de ISP UC de 28 pinos (ATmega8)

    Programação ISP UC de 28 pinos (ATmega8)
    Programação ISP UC de 28 pinos (ATmega8)
    Programação ISP UC de 28 pinos (ATmega8)
    Programação ISP UC de 28 pinos (ATmega8)

    A próxima demonstração do projeto utilizará um ATmega8 que é um AVr de 28 pinos. Aqui está o conjunto de jumpers básico para a programação do ISP dos microcontroladores de 28 pinos.

    Configurações de jumpers

    Defina os jumpers no Dragon Rider para que os shunts conectem os pinos a seguir. (o pino 4 é o pino central para J22-J-24) Pinos: J11 - 23J12 - 23J13 - 12J16 - 23J22 - 42J23 - 42J24 - 42

    Informação técnica

    • Conectar J11 e J12 dessa maneira permite que você use esses pinos como pinos de E / S. A alternativa seria rotear esses pinos para fazer uma conexão com o cristal externo.
    • Conectar J13 dessa forma nos permite usá-lo como o pino de reinicialização. A alternativa seria rotear este pino para o cabeçalho PORTC para uso como um pino de E / S. (isso teria muitas desvantagens, incluindo a incapacidade de programar este chip usando o ISP).
    • J16 e J22-J24 são conectados desta maneira para rotear os pinos apropriados (Reset, MISO, MOSI e SCK) para o cabeçalho ISP do AVR Dragon.

    Etapa 5: LCD avançado e uso de botões: o grande relógio

    Uso avançado de LCD e botão: o grande relógio
    Uso avançado de LCD e botão: o grande relógio

    Este é um projeto divertido que faz uso da tela LCD e dos botões. Estaremos lidando com funções de relógio em tempo real e caracteres personalizados no LCD. Na imagem na parte inferior você pode ver a hora 7:26:07 pm exibida em grandes números na tela LCD. Cada número está usando uma grade 2x2 de exibição de caracteres para mostrar o número grande. Ele utiliza uma fonte originalmente escrita por Xtinus para o projeto XBMC. Os botões são usados para acertar o relógio. Esquerda incrementa as horas, Acima incrementa os minutos, Direita alterna entre 12 e 24 horas e Enter redefine os segundos para zero. O relógio não marca uma hora muito boa, pois estamos usando um oscilador interno muito impreciso, mas este programa pode ser facilmente alterado para usar um cristal externo muito mais preciso. Veja isso em ação no vídeo abaixo. Uma explicação de como esse código funciona está em ordem, mas não tenho tempo agora. Por enquanto, conecte o cabeçalho do LCD (J31) ao PORTD (J4) e o cabeçalho do botão (J30) ao PORTB (J2). Certifique-se de ter SW1 e SW2 na posição desligada. Conecte o AVR Dragon a um cabo USB e conecte a outra extremidade desse cabo ao computador. Ligue o SW2 e programe o ATmega8 com o software de programação de sua escolha (arquivo hex abaixo; fusíveis queimados nas configurações de fábrica). NOTA: Para utilizar os botões Esquerdo e Para cima, você precisará remover os shunts de J22 e J24, faça isso enquanto a energia está desligada.

    Etapa 6: Programação de alta tensão

    Usei a programação paralela de alta tensão para ressuscitar um ATtiny2313 no qual configurei os fusíveis incorretos. Eu precisei disso uma segunda vez ao trabalhar neste instrutível porque eu acidentalmente escrevi a configuração lfuse que eu queria para o registro hfuse … ooops. A programação paralela de alta tensão é uma ferramenta útil para ter à sua disposição! Abaixo está uma lista das minhas configurações de jumper: USE POR SUA PRÓPRIA CONTA E RISCO, ESTE TIPO DE PROGRAMAÇÃO PODE DANIFICAR SEU HARDWARE SE VOCÊ NÃO SABE O QUE ESTÁ FAZENDO !! Programação paralela de alta tensão: ATtiny2313 no soquete U3: SW1 - OFFSW2 - ONJ5, J6, J7 - conecte o pino 1 e o pino 2XTAL1 - conecte o pino 1 e o pino 2J16 - Conecte o pino 1 e o pino 22x5 IDC Cabos: PROG_CTRL à PORTA D, PROG_DATA à PORTA Todos os outros jumpers desconectados (J8-J13, J18, J19, J20, J22-J28, J24) Para outros chips, você deve ser capaz de descobrir as configurações necessárias no guia do usuário da Atmel para seu STK500.

    Etapa 7: Expandindo além do tabuleiro

    Expandindo além do tabuleiro
    Expandindo além do tabuleiro

    Acho muito fácil fazer a interface com uma placa de ensaio. Isso permite muito mais flexibilidade na prototipagem e desenvolvimento de código ao mesmo tempo. Abaixo você verá algumas placas de ensaio conectadas ao Dragon Rider. Eu conecto os cabos de fita às portas apropriadas em uma extremidade. Na outra, uso fios de jumper para conectar o condutor ICD adequado às placas de ensaio.

    Etapa 8: Conclusão

    Há muito mais coisas que poderiam estar envolvidas neste Instructable. Hoje à noite eu concluo um adaptador que permite que você use o cabeçalho de programação de 6 pinos sem remover o dragão do Cavaleiro do Dragão. Estarei colocando informações sobre como construir um você mesmo … em breve. Se você tiver outras coisas que você acha que precisa ser adicionado, deixe um comentário.

    Etapa 9: Adicionar um ISP de 6 pinos

    Adicionar um ISP de 6 pinos
    Adicionar um ISP de 6 pinos
    Adicionar um ISP de 6 pinos
    Adicionar um ISP de 6 pinos
    Adicionar um ISP de 6 pinos
    Adicionar um ISP de 6 pinos

    Eu geralmente incluo um cabeçalho ISP de 6 pinos para todos os meus projetos para que eu possa reprogramar o chip, se necessário, e não ter que retirá-lo do painel do projeto. Infelizmente, o dragon rider não tem um cabeçalho ISP de 6 pinos disponível, mas descobri como disponibilizá-lo.

    Aviso!

    Este é um hack. Se você não sabe exatamente como isso funciona, não faça

    Você foi avisado. Eu criei minha própria placa adaptadora e jumper de 3 pinos para fornecer o conector ISP de 6 pinos. O que você faz é configurar o Dragon Rider para programar e um microcontrolador de 8 pinos. Usando um soquete de 3 pinos, estou conectando o J8 aos pinos 1 e 3. Isso roteia o sinal do relógio para o conector PortB. Em seguida, passo um cabo jumper do conector PortB para a minha placa adaptadora e voila! Há fotos abaixo…. por favor, por favor, por favor, não faça isso a menos que você realmente entenda o que está fazendo, pois você poderia danificar o seu AVR Dragon ou pior, se você fizer isso errado.

    Pinagem: PortB ISP1 42 13 34 NC5 NC6 57 NC8 NC9 610 2

    Etapa 10: Leitor RSS usando conexão serial e LCD

    Leitor RSS usando conexão serial e LCD
    Leitor RSS usando conexão serial e LCD
    Leitor RSS usando conexão serial e LCD
    Leitor RSS usando conexão serial e LCD

    Estou continuando a brincar com esta placa de desenvolvimento. Desta vez, passei parte de uma tarde desenvolvendo uma leitura RSS (principalmente no lado python das coisas). Eu não acho que justifique sua própria instrução, então estou adicionando aqui.

    Hardware

    Estamos usando o Dragon Rider 500 como placa de desenvolvimento. Isso fornece todo o hardware de que você precisa (supondo que você tenha todos os kits complementares). Dito isso, você certamente pode fazer isso com sua própria configuração de hardware:

    • Microcontrolador ATmega8 (ou qualquer um que tenha USART e pinos suficientes para todas as conexões
    • Uma forma de programar o microcontrolador (eu uso o AVR Dragon)
    • Chip MAX232 para as comunicações seriais
    • Conector DB9
    • Tela LCD HD44780
    • Cristal (usei um cristal de 8 MHz)
    • Capacitores e resistores variados

    Um esquema é fornecido abaixo. No Dragon Rider, precisaremos usar um pouco de criatividade para direcionar as conexões. Normalmente, a porta D pode ser conectada diretamente ao conector do LCD. Este não é o caso aqui porque o USART necessário para a conexão serial usa PD0 e PD1. Além disso, a porta B não pode ser usada porque PB6 e PB7 estão em uso para o cristal externo. A imagem abaixo é minha solução para esse problema. Eu conecto um cabo de fita aos conectores do LCD, Porta B e Porta D, em seguida, uso fios de jumper para fazer as rotas adequadas. Não se esqueça de conectar a tensão e o aterramento ao conector do LCD.

    Programas

    O software para este projeto vem em duas partes, o firmware para o microcontrolador e o script python para copiar os feeds RSS e enviá-los pela conexão serial. Firmware do AVREstou usando a biblioteca LCD de Peter Fleury novamente (https://jump.to / fleury). É poderoso e conciso, versátil e fácil de alterar para a configuração do seu hardware. Se você olhar o arquivo de cabeçalho anexado (lcd.h), verá que estou executando no modo de 4 bits com a Porta D como os bits de dados e a Porta B como os bits de controle. O conceito deste firmware é bastante simples:

    • Depois de ligado, o microcontrolador exibe "RSS Reader" e aguarda os dados seriais.
    • Cada byte de dados seriais recebidos faz com que um buffer de 16 caracteres se desloque para a esquerda e adicione o byte ao buffer e, em seguida, exiba o buffer.
    • Três comandos especiais são aceitos pelo microcontrolador: 0x00, 0x01 e 0x02. A tela limpa, mova para a linha 0 e mova para a linha 1, respectivamente.

    Python ScryptI escreveu um script pyton para copiar os dados RSS e enviá-los pela conexão serial. Isso requer o módulo python "pyserial", que provavelmente você terá que instalar em seu sistema para fazer isso funcionar. O feed RSS pode ser configurado na parte superior do arquivo pyton. Observe que você precisa inserir um nome para o feed, bem como o url do feed. Existem três exemplos lá, tenho certeza de que você pode segui-los para a sintaxe adequada. Fazendo tudo funcionar

    • Monte o hardware
    • Programe o microcontrolador (dragon_rss.hex pode ser usado se você não quiser compilá-lo sozinho). Configurações de fusível para ATmega8 usando um cristal de 8 MHz: lfuse = 0xEF hfuse = 0xD9
    • Ligue o Dragon Rider e certifique-se de que o cabo serial está conectado (LCD deve mostrar: "Leitor RSS")
    • Execute o programa python (python serial_rss.py)
    • Aproveitar

    Recomendado: