Desde o meu empreendimento em microprocessamento, decidi ir com o Atmel AVR devido aos vastos recursos disponíveis. E o Arduino parece ter muito também, sem mencionar que seus kits iniciais parecem mais "no meu nível"
O problema é que eu quero aprendê-lo primeiro em Assembly e depois ir para C / C ++ ou com o Arduino, mas ouvi dizer que o Arduino não aceita o assembly do AVR? Isso é verdade? há alguma maneira de contornar isso?
obrigado
editar: eu iria com o ATMEL STK500, mas ... para um primeiro temporizador, parece muito complicado? Existe alguma razão para eu não conseguir obter um AVR de 8 bits e colocá-lo em uma placa de ensaio e experimentar dessa maneira? (Eu acho que eu teria que descobrir como fazer a interface deles como tal ....)
edit2: Isto é o que eu estava pensando
http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=193
Respostas:
As placas do Arduino podem ser programadas em montagem. Tudo o que você precisa é de um cabo ICSP (programador serial em circuito) e a cadeia de ferramentas AVR (livre de ATMEL) para gravar no quadro. Você obtém a vantagem da depuração a bordo.
Como você sugeriu, basta colocar um chip ATMEL em uma tábua de pão e ir para a cidade.
O kit que você referenciou parece um ótimo ponto de partida. Você pode retirar o chip da placa e colá-lo em sua própria placa de ensaio (desde que tenha a energia regulada corretamente e você seja o responsável pelo relógio).
fonte
O Arduino IDE pode ser "fixo" para acomodar o código do Assembly. Aqui está o wiki: http://www.cs.nmsu.edu/~jcook/arduino/index.php?n=Notes.AssemblyMods
fonte
Tanto quanto eu sei que não deve ser nada específico sobre o bootloader Arduino que poderia impedi-lo de usar a montagem em vez de C. O Arduino IDE pode tornar difícil para carregar você possui arquivos .hex mas parece que o bootloader Arduino é STK500 compatível de modo você deve poder usá-lo com avrdude.
fonte
As placas Arduino (Uno e Duemilanove, de qualquer forma) têm um conector de programação AVR padrão, que é suportado pelos programadores e depuradores Atmel via AVR Studio. O Studio suporta assembler e C. Um programador adequado é o AVRISP MkII, e o AVR Dragon oferece programação e depuração. Eu pegaria o último, é mais caro em US $ 50, mas o recurso de depuração é inestimável. Você também pode usar essas ferramentas com um chip AVR padrão (não o Arduino) conectado a uma tábua de pão ou a uma PCB.
fonte
O Arduino é composto de duas partes: o hardware e o IDE. O IDE principalmente (se não completamente) restringe você a C e C ++ (com algum açúcar sintático que os desenvolvedores usaram para torná-lo um pouco mais parecido com Processing / Java). Há uma chance de o IDE reconhecer os arquivos .s ou .S no mesmo diretório que um esboço padrão (.pde), mas eu não daria muita atenção a isso.
Não há nada de especial no hardware. É uma placa agradável e amigável, com muitos recursos bacanas que os neófitos µC apreciarão, mas se você deseja apenas programar o AVR através do cabeçalho do ISP, também pode fazê-lo. Você precisará de algo como o Atmel AVRISP mkII , ou qualquer outro programador que funcione com o conector de linha 2x3 na placa Arduino. Procure aqueles que sejam compatíveis com o programa avrdude que você usará para fazer upload de seus aplicativos. Fique longe do USBtinyISP da Adafruit; Eu tive uma péssima sorte e acabei comprando o Atmel que vinculei por menos de US $ 40 à Mouser.
fonte
Não é nada difícil.
http://www.dwelch.com/arduino/
Você precisa olhar Eu acho ser.c na minha página para escolher qual cartão. alguns usam velocidades de porta serial diferentes por padrão e esquemas de redefinição diferentes para entrar no modo de programação. Se você olhar o firmware do arduino, descobrirá que quase nenhum dos comandos de programação do avr é realmente suportado. Realmente não preciso deles de qualquer maneira.
fonte
O Aruduino pode ser absolutamente programado em montagem. E você nem precisa de um cabo ICSP para fazer isso!
Ok, para ser justo, isso não é o mesmo que programá-lo em pura montagem desde o início.
Mas você pode integrar o assembly em C. O que significa que você pode carregar o código no seu Arduino que possui o assembly em linha, que será executado. Considere a biblioteca TVOut , que permite que o Arduino produza NTSC / PAL para uma TV.
Essa biblioteca é muito sensível ao tempo (como está sendo transmitida para uma TV, cada linha de varredura deve ser gravada no momento certo.) Portanto, ela usa montagem em linha para acelerar o processo. Observando a linha 89 deste arquivo da biblioteca, o autor está usando algumas das macros de montagem que ele escreveu.
Agora. Eu suspeito que ele não os escreveu usando o IDE padrão do Arduino. Mas essa biblioteca chama seu código asm embutido, que qualquer pessoa pode importar, compilar e executar por meio de sua interface.
Boa sorte!
fonte
o arduino pode ser programado com montagem usando o GCC-AVR Inline Assembler, verifique este link para obter o livro de receitas do GCC-AVR Inline Assembler
http://web.stanford.edu/class/ee281/projects/aut2002/yingzong-mouse/media/GCCAVRInlAsmCB.pdf
fonte