Para minha aventura em microprocessamento, decidi usar o Atmel AVR devido aos vastos recursos disponíveis. O Arduino parece ter muito também, sem mencionar que seus kits iniciais parecem mais ” no meu nível. ”
O problema é que quero aprender primeiro em assembly e, em seguida, ir para C / C ++ ou o que quer que o Arduino use, mas ouvi que o Arduino não aceita o assembly AVR. Isso é verdade? Existe alguma maneira de contornar isso?
Editar: Eu iria com o ATMEL STK500, mas para um primeiro temporizador parece MUITO complicado. Existe alguma razão pela qual eu não posso simplesmente pegar um AVR de 8 bits e colocá-lo em uma placa de ensaio e experimentar dessa forma? (Eu acho que eu teria que descobrir como fazer a interface deles dessa forma.)
Edit2: isso é o que eu estava pensando
http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=193
Comentários
- Como está indo? Então, qual solução você considerou? Eu comprei o Arduino Uo e estou procurando uma maneira de desenvolver em assembler também
- Eu sugeriria usar o controlador 89c51 (8051) para linguagem assembly
Resposta
As placas Arduino podem ser programadas em assembly. Tudo que você precisa é de um cabo ICSP (programador serial em circuito) e o conjunto de ferramentas AVR (gratuito da ATMEL) para escrever na placa. Você então obtém a vantagem da depuração integrada.
Como você sugeriu, você pode simplesmente colocar um chip ATMEL em uma placa de ensaio e ir para a cidade.
O kit que você referenciou parece um ótimo ponto de partida. Você pode retirar o chip da placa e colocá-lo em sua placa de ensaio (contanto que tenha energia regulada corretamente e você leve em consideração o relógio).
EDITAR: Aparentemente, você não precisa de um ICSP para carregar programas de montagem. Consulte o comentário abaixo para obter detalhes.
Comentários
- Sim, eu ‘ d prolly quero continuar com Não colocá-lo no meu próprio breadboard agora lol Não sou tão bom com circuitos.
- @Sauron – hah – de qualquer maneira é bom. O que quer que o deixe viciado! A coisa boa é que os chips individuais são muito baratos (alguns dólares ou mais).
- Esta resposta é substancialmente enganosa: NENHUM ISP É NECESSÁRIO . O bootloader usado pelo Arduino é anterior ao projeto Arduino e não tem nenhuma ideia se o arquivo que está sendo carregado foi originado de um compilador ou assembler. Por favor, don ‘ t perpetuar o equívoco de que o bootloader em um Arduino tem qualquer coisa a ver com o método de escrever programas para direcionar o hardware; é simplesmente um mecanismo conveniente para obter código de qualquer origem no chip.
- @ChrisStratton – obrigado por seu feedback. Eu ‘ atualizei minha resposta para incorporar seus comentários.
Resposta
O IDE Arduino pode ser “consertado” para acomodar o código Assembly. Aqui está o wiki: http://www.cs.nmsu.edu/~jcook/arduino/index.php?n=Notes.AssemblyMods
Comentários
- o url parece estar quebrado
Resposta
Tanto quanto eu sei, deveria não seja nada específico sobre o carregador de inicialização do Arduino que possa impedi-lo de usar o assembly em vez de C. O IDE do Arduino pode dificultar o upload de seus próprios arquivos .hex, mas se parece com o carregador de inicialização do Arduino é compatível com STK500 , portanto, você deve ser capaz de usá-lo com o avrdude.
Comentários
- Sim, na verdade, o próprio IDE do Arduino usa avrdude para realizar o upload.
Resposta
Nada difícil.
http://www.dwelch.com/arduino/
Você precisa olhar I think ser.c na minha página para escolher qual cartão. alguns usam diferentes velocidades de porta serial por padrão e diferentes esquemas de reinicialização para entrar no modo de programação. Se você olhar o firmware do arduino, descobrirá que quase nenhum dos comandos de programação avr são realmente suportados. Não preciso deles de qualquer maneira.
Resposta
o arduino pode ser programado com assembly usando GCC-AVR Inline Assembler verifique este link para Livro de receitas Inline Assembler GCC-AVR
http://web.stanford.edu/class/ee281/projects/aut2002/yingzong-mouse/media/GCCAVRInlAsmCB.pdf
Resposta
Placas Arduino (Uno e Duemilanove de qualquer maneira) têm um conector de programação AVR padrão que é suportado por programadores Atmel e depuradores via AVR Studio. Studio suporta assembler e C. Um programador adequado é o AVRISP MkII, e o AVR Dragon oferece programação e depuração. Eu compraria o último, é mais caro, 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 placa de ensaio ou PCB.
Comentários
- Embora ‘ seja verdade que eles têm um cabeçalho ICSP, há ‘ s não há necessidade de usá-lo. O carregador de inicialização funciona igualmente bem com qualquer meio de autoria de programa e, de fato, até mesmo o IDE do Arduino depende do programa utilitário de linha de comando pré-existente
avrdude
para operar o carregador de inicialização.
Resposta
O Arduino é composto de duas partes: o hardware e o IDE. O IDE restringe você principalmente (se não completamente) a C e C ++ (com algum açúcar sintático que os desenvolvedores adicionaram para torná-lo um pouco mais parecido com Processing / Java). Há uma chance de que o IDE reconheça os arquivos .s ou .S no mesmo diretório que um esboço padrão (.pde), mas eu não me preocuparia com isso.
Não há nada especial sobre o hardware. É uma placa agradável e amigável com muitos recursos interessantes que os neófitos do µC irão apreciar, mas se você quiser apenas programar o AVR através do cabeçalho do ISP, você também pode fazer isso. Você “precisará de algo como o Atmel AVRISP mkII ou qualquer outro programador que funcione com o conector de linha 2×3 na placa Arduino. Procure aqueles que sejam compatíveis com o programa avrdude que você usará para enviar seus aplicativos. Fique longe do USBtinyISP da Adafruit; eu tive uma sorte horrível com ele e acabei comprando o Atmel que vinculei por menos de US $ 40 da Mouser.
Comentários
- Estranho, eu ‘ não tive nada além de boas experiências com o IDE Atmel e o usbtiny. O buspirate também funcionará como um provedor de serviços de Internet para muitas plataformas diferentes, excelente ferramenta
- Não ‘ s não há necessidade de um adaptador ICSP, o bootloader funciona bem com qualquer meio de autoria do programa
Resposta
O Aruduino pode ser absolutamente programado em assembly. E você nem precisa de um cabo ICSP para fazer isso!
Ok, para ser justo, isso não é o mesmo que programá-lo em montagem pura desde o início.
Mas você pode montar inline em C. O que significa que você pode carregar o código em seu Arduino que tem assembly inline, que será executado. Considere a biblioteca TVOut , que permite que o Arduino envie NTSC / PAL para uma TV.
Essa biblioteca é muito sensível ao tempo (uma vez que está dando saída para uma TV, cada linha de varredura deve ser escrita à direita tempo.) Portanto, ele usa montagem inline para acelerar o processo. Olhando para a linha 89 deste arquivo da biblioteca, o autor está usando alguns dos macros de montagem que ele escreveu.
Agora. Suspeito que ele não as escreveu usando o IDE Arduino padrão. Mas esta biblioteca chama seu embutido código asm, que qualquer pessoa pode importar, compilar e executar por meio de sua interface.
Boa sorte!
Comm ents
- Na verdade, você também pode fazer os arquivos de origem do assembly, basta pular o IDE do Arduino e interagir com as ferramentas de back end, como avr-gcc (ou o que quer que você usar como assembler) e avrdude diretamente.
Resposta
Eu uso Linux como minha plataforma host, mas eu acho que essas ferramentas também estão disponíveis para variedades do Windows.
Eu uso ” avra ” para o assembly em código hexadecimal converter (compilador)
Em seguida, programo o chip usando um programador USBTiny e a ferramenta de programação ” avrdude “.
Acredito que essas duas ferramentas sejam de código aberto.