Como se formar no Arduino para usar diretamente um microcontrolador?

19

Eu tenho trabalhado em um projeto Arduino. Depois que tudo estiver funcionando com o Arduino, gostaria de passar para uma solução que NÃO use o Arduino. Ou seja, eu gostaria de usar um microcontrolador sem envolver a placa Arduino. Isso permitirá uma única placa, sem solução de blindagem.

Eu sei que existem métodos para criar meu próprio Arduino em uma placa de ensaio, mas não é exatamente isso que estou tentando fazer.

Não tenho muita certeza de como fazer isso.

A menos que haja uma opção melhor, estou inclinado a usar o ATmega328, que é usado pelo Arduino. Entendo que as ferramentas de desenvolvimento estão disponíveis gratuitamente ou pelo menos não são muito caras.

Para o propósito desta pergunta, suponha que eu possa obter + 5V no meu circuito.

Minha primeira pergunta é como programar o MCU. Eu acredito que existem duas opções:

  1. Compre um programador, programe o MCU e coloque o chip no meu circuito.
  2. Projete meu circuito para incluir suporte para programação em circuito.

Estou assumindo que, se eu for com a opção 1, é tão simples quanto inserir um chip programado no meu circuito; Eu não preciso de mais nada. É claro que mudar o software seria inconveniente.

Mas para a opção 2, não tenho certeza do que preciso. Pela leitura que fiz, acho que preciso de um cabo de programação e um conector na minha placa (que tipo?). Então eu acho que (corretamente) conecto o conector a certos pinos do ATmega.

De qualquer forma, vou precisar do estúdio Atmel.

Segundo, além da fonte de alimentação, há alguma coisa no Arduino que eu absolutamente precise? Eu acho que talvez um botão de reset?

Rick
fonte
2
Você pode usar um Arduino para programar AVRs. Pessoalmente, gosto de usar ferramentas de linha de comando e um makefile, em vez de um IDE.
jippie
1
Essa pergunta pode ser mais apropriada para o Arduino Stack Exchange. arduino.stackexchange.com Está agora em
versão
4
Mas meu objetivo é um design sem um arduino.
Rick
"existe alguma coisa no arduino que eu absolutamente precise?" Acho que você precisará dos pinos do UART (também conhecido como porta serial), é útil para depuração.
vvy
O estúdio Atmel não é absolutamente necessário. Eu programo meus chips a partir da linha de comando (e um editor de texto). Embora concedido a grandes projectos de Atmel estúdio vai certamente tornar mais fácil
Chris Laplante

Respostas:

10

Bem-vindo ao maravilhoso mundo de Atmel. Deixe-me oferecer algumas respostas para suas perguntas com base no meu hobby e experiência profissional.

Não se preocupe com nada, mas a programação em circuito. A menos que você seja um codificador perfeito, remover um chip sempre que quiser programar é um pesadelo. Eu recomendo o AVRISPmkII como uma ferramenta de programação básica. A desvantagem é que não há depuração de hardware suportada. Uma alternativa é o dragão, mas não tenho experiência com isso. Posso dizer que o JTAGICEmk3 é uma boa ferramenta de depuração capaz.

Atmel studio é bom para programação. Na verdade, é o meu ambiente de desenvolvimento incorporado favorito. Você pode usar ferramentas da CLI, como AVRDUDE e AVR-GCC, mas o IDE cuida disso para você.

EM SUMA:

Compre um AVRISP apenas para programação (mais fácil, plug & play) ou um DRAGON (não posso oferecer conselhos).

Em sua placa, traga os pinos do ICSP para um cabeçalho de 6 pinos, fileira dupla de 0.100 "- as conexões são descritas nesta folha de dados .

As chaves de redefinição não são necessárias.

HL-SDK
fonte
1
Eu tive excelentes resultados com um EvUSBasp.
Ignacio Vazquez-Abrams
Depois de colocar os pinos do ICSP na minha placa, tenho que dedicá-los à programação em circuito ou ainda posso usá-los como pinos GPIO de alguma forma?
Ricardo
2
Você pode usá-los como GPIO, pois eles compartilham as funções com o SPI. O programador coloca o chip em reset e depois se comunica com ele.
HL-SDK
1
Série de tutoriais relacionados sobre o início da programação do microcontrolador . Eles usam o AVRMega e passam pelo processo de conexão do ISP e do luxuoso código C para piscar um LED.
MDMoore313 28/02
1
@ O HL-SDK está certo em que apenas o pino RESET realmente precisa ser dedicado ao ICSP, mas também é necessário cuidado com os outros pinos, ou seja, eles provavelmente devem ser usados ​​como pinos de saída em vez de pinos de entrada (para que os sinais não ser perturbado por circuitos externos no modo ICSP) e o que estiver anexado a eles deve ser projetado para não reagir adversamente a qualquer combinação de sinais aleatórios que o tráfego de programação os envie.
microtherion
10

Você não precisa "se formar" de uma só vez. Aqui está como eu converti:

Para começar, continuei usando um Arduino, mas converti chamadas para a biblioteca do Arduino em registros e leituras e gravações, uma linha de cada vez, para ver se meus programas ainda funcionavam. Dessa maneira, eu me acostumei a usar registros e vi que eles não eram radicalmente descontínuos com a maneira de fazer as coisas no Arduino. As funções do Arduino como digitalWrite () simplesmente manipulam os registros - você é livre para ler e escrever neles diretamente em seus esboços.

Meu próximo passo foi colocar um ATTiny 85 em uma placa de ensaio e programá-lo com o Arduino como ISP ( http://highlowtech.org/?p=1695 ). Se você comprar uma fonte de alimentação de placa de ensaio e usar o oscilador interno do ATTiny, isso exigirá pouca fiação. Eu usei o Arduino IDE para compilar, mas continuei usando os registros o máximo que pude.

Em seguida, instalei a cadeia de ferramentas de linha de comando gratuita Crosspack e compilei um programa intermitente. Após mais algumas tentativas e erros, consegui programar o ATTiny apenas com avrdude, permanecendo completamente fora do ecossistema Arudino.

Depois de atingir o piscar de olhos apenas com as ferramentas de linha de comando, você estará livre do Arduino. Explore os vários periféricos e seus registros e em breve será totalmente natural.

Depois de tudo isso, muitas vezes me vejo usando o Arduino porque é mais rápido. Descobri que examinar as descrições dos registros é meio chato; não faz sentido fazer isso se você não precisar. É bom saber como, no entanto.

user24505
fonte
8

Eu concordo com o comentário do HL-DSK acima. Eu gastaria o dinheiro extra e conseguiria um programador com recursos de depuração. Eu uso o JTAGICE3, cerca de US $ 110 na digi-key.

Leia aqui a programação do provedor de serviços de Internet . Ele mostrará como fazer as conexões SPI. As conexões SPI no seu chip estarão na folha de dados do ATmega. Procure na página 2 os pinos MISO / MOSI / SCK / RESET. O programador precisa ser capaz de controlar a linha de redefinição. Lembre-se de usar um resistor pull-up na linha de redefinição para que seu chip funcione depois que o programador for desconectado.

Arranja um cabeçalho 2x3 aqui . Ou faça o seu próprio usando cabeçalhos separatistas.

qce88
fonte
2
Vou buscar um programador com suporte a depuração. No início deste mês, fui levado ao fundo do poço em um projeto PIC32 sem experiência anterior de baixo nível. Mesmo com outra pessoa escrevendo a funcionalidade de bater pouco no nível mais baixo, eu nem quero pensar em quão difícil foi descobrir onde estavam meus problemas, se tudo o que eu tinha que ver lá dentro era um único LED vermelho / verde.
Dan Neely 28/02
Assim, depois de ter ferramentas profissionais, não há como voltar atrás.
Matt Young
7

A diferença entre um Arduino e um ATmega328 vazio é apenas duas coisas. O Arduino Bootloader e as bibliotecas do Arduino. Você pode codificar um Arduino com C ou C ++ simples sem usar nenhuma das bibliotecas. Você também pode usar a montagem. O gerenciador de inicialização permite que você carregue um novo código por meio da série sem passar pela (um pouco) mais complicada programação em série do circuito (basicamente SPI).

Você pode usar bibliotecas de programação padrão e o avr-gcc com quase qualquer ide. Ao contrário do que os outros possam dizer, codificar um Arduino é basicamente como codificar um microcontrolador simples, com algumas conveniências adicionais à custa de algum desempenho.

Transeunte
fonte
4
Mas você também pode usar o carregador de inicialização e as bibliotecas do Arduino com um ATmega328.
Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams, que o transforma em um arduino básico, natch.
Transeunte
5

Eu compro ATmega328P pré-bootloaded chips e programa-los no circuito com um cabo FTDI e avrdude, de forma idêntica à forma como eu programar o Arduino. Gosto do Eclipse IDE, mas você pode usar qualquer ambiente que preferir - Atmel Studio, Arduino IDE, emacs ou descalço na linha de comando.

Esta placa está em construção no ponto em que está completa o suficiente para testar com um programa Hello, usando o cabo para programação, energia e terminal. Ele ainda precisará de sua fonte de alimentação - regulador de tensão quiesciente ultra baixo LM2936 e um conector de bateria, no meu caso - e quaisquer outros componentes integrados e conexões externas que o projeto precisará:

NotDuino

Como você possui um Arduino, você pode economizar um pouco de dinheiro e usar chips não programados, usando o Arduino para instalar o gerenciador de inicialização. As lindas etiquetas azuis com pin-out ajudam a manter minha taxa de bobagem baixa! Eu uso um cristal de 16MHz, mas se você puder rodar com o oscilador interno, sua contagem de peças diminui em 3 (o xtal e 2 capacitores).

JRobert
fonte
2

Para sair do Arduino, onde o hardware é fornecido e o software é uma sobreposição da linguagem C, gostaria de fazer algumas sugestões. Vejo que as pessoas postaram algumas respostas úteis, mas estive onde você está e eu faria as coisas um pouquinho diferentes.

  1. Escolha um depurador. Os depuradores fornecem a capacidade de programar o microcontrolador, bem como a depuração, que inclui processamento 'passo a passo', 'pontos de interrupção' que permitem pausar o programa em uma determinada linha de código para verificar o que o código está fazendo.O ISP (In-Circuit Programming) é uma interface serial, usa 3 pinos, o que é bom, mas não fornece a funcionalidade completa que um iniciante gostaria. A interface JTAG usa 4 pinos, o que fornece basicamente funcionalidade completa em termos de uso de pontos de interrupção e outras coisas. As pessoas geralmente se inclinam mais para o ISP porque é "relativamente" mais fácil de configurar, mas se você me perguntar, o JTAG não é difícil de configurar, mas também se resume à preferência pessoal. E há fio de depuração interface que eu gostaria de pular nesta discussão porque você prefere usar o ISP do que o fio de depuração.
  2. Compre um depurador que possua as funcionalidades ISP e JTAG. Eu acho que você compra uma vez, mas compra um bem, o que o ajudará no futuro, se você desejar alterar seu design. Eu recomendo o AVR Dragon ou o JTAGICE. Ambos se conectam ao PC via USB e fornecem ISP e JTAG. O JTAGICE é um pouco mais caro que o AVR Dragon, mas eu definitivamente recomendo o AVR Dragon.
  3. Você verá que a maioria dos microcontroladores Atmel possui funcionalidade ISP, mas muitos não têm JTAG. Microcontroladores pequenos, como as séries AT90S2313 ou ATTINY, usam a série ISP, pois são pequenos em tamanho. Mas se você está olhando não apenas para piscar alguns LEDs, mas quer interagir com, digamos, uma tela LCD ou um teclado ou o que você tem, então recomendo comprar um microcontrolador um pouco maior. Se você estiver usando uma fonte de 5V, recomendo ATMega8 ou ATMega16 ou ATMega128 (meu favorito). ATMega16 e ATMega128 possuem interface ISP e JTAG.
  4. No que diz respeito ao IDE, eu costumava usar o Code vision e o AVR Studio, mas eu recomendo o Atmel Studio 6.0 ou mais recente, que atende a todas as suas necessidades.

Tenho algumas idéias esquemáticas que aprendi por conta própria, para que você tenha uma interface limpa e suave para o seu micro. Deixe-me saber se você precisar de ajuda.

David Norman
fonte
1

Conselho Honesto

O Arduino é para iniciantes, existem duas maneiras de sair daqui

Caminho 1: Entendendo como um microcontrolador / processador funciona (abordagem preferível)

Atmel 8051

Com isso, quero dizer arquiteturas de aprendizado e código de montagem (ou bare metal) para o micro p / c. Se você precisar de um ponto de partida para isso, sugiro o Atmel 8051, que é um micro controlador de 8 bits com o conjunto de instruções de arquitetura e montagem mais simples. Qualquer outro processador moderno de 32 ou 64 bits possui uma forma derivada de arquitetura. Esse microcontrolador ainda está sendo usado como parte dos meus cursos de pós-graduação, porque é um bom ponto de partida e muita literatura está disponível.

Ah, e os kits para criar sua placa ISP são vendidos (kits completamente montados com processo, componentes de solda em kits de placa e você pode montar a placa de desenvolvimento requer apenas alguns cabos / soquetes de IC e RS-232)

Por ser de baixa tecnologia, todos os componentes serão baratos.

Caminho 2: Salte para uma abordagem de hardware / software (menos preferível)

Raspberry Pi Osso Beagle Preto

Essa é a abordagem para preguiçosos que mergulharam em um pouco de montagem e "escolheram" OU pessoas que desejam mudar para mais software que hardware. Eu sugeriria a mudança para outro quadro amador como o Raspberry Pi ou o BeagleBoneBlack com processadores ARM e começaria a fazer projetos em sua criatividade.

Dexobox
fonte
0

Você pode usar a placa Arduino, sem usar as bibliotecas e o ambiente sandbox, pode programar tudo diretamente. Se você deseja usar o gerenciador de inicialização via serial / uart para programar, isso funciona bem. Mas a maioria / todas as peças avr também podem ser programadas de outra maneira, com a peça mantida em redefinição, o que significa que não é possível tijolos. é muito fácil bit bang spi de um arduino ou outro microcontrolador ou com um ftdi de algum sabor. O sparkfun possui placas arduino e não-arduino (a 32u por exemplo) que o cabeçalho spi é óbvio. e ftdi breakout boards que você pode facilmente usar com bitbang usando a biblioteca do ftdi ou a biblioteca do ftdi que acompanha o linux.

A documentação de cada parte mostra as opções de inicialização e as opções de programação em flash. Sim, não é difícil apenas comprar algumas peças também e fazer sua própria placa de apoio. Eu não faria isso até você ter usado uma fuga existente ou uma placa de avaliação simples e depois cloná-la, se necessário. Idealmente, comece com uma peça com um oscilador rc interno, basicamente pinos de alimentação, terra e programação ...

old_timer
fonte