Boa hora para se mudar; os 8 bits estão morrendo rapidamente; quando você pode comprar uma placa de US $ 5 com (por exemplo) um STM32F103, que é um microcontrolador ARM de 32 bits bastante capaz (com USB incluso!), não há dúvida de que os tempos mudaram.
Você já teve ótimas respostas, mas principalmente eu diria "esqueça a montagem" e quase "esqueça de se preocupar com o funcionamento da CPU em um nível baixo" - um dia haverá um caso em que você precisará cavar (uma otimização específica ou para depuração), mas os núcleos do ARM executam o código C excepcionalmente bem (por design) e você varia raramente precisa se aventurar profundamente no interior.
Isso significa que você gastará uma certa quantidade de tempo enfrentando problemas com compiladores (e especialmente vinculadores e makefiles) exibindo erros obscuros para você, mas todos são superáveis.
As tripas de como os ARMs funcionam (ou seja, os livros da CPU do ARM) são densas e pouco interessantes até o dia em que você realmente precisa otimizar (e você ficará surpreso com a pouca frequência disso quando você tem registros de 32 bits e seu PLL ' d O relógio da CPU está na região de 100 mhz).
O conjunto de instruções ARM "old skool" é muito mais fácil de ler uma desmontagem do que o muito mais recente "Thumb2" - que é o que você encontra nos ARMs mais modernos (Cortex) em nível de microcontrolador - mas, novamente, as entranhas das instruções em linguagem de montagem desbotam principalmente em segundo plano; se você possui o conjunto de ferramentas certo (especialmente um depurador no nível da fonte decente com pontos de interrupção / etapa única etc), você simplesmente não se importa muito com o fato de ser ARM.
Quando você estiver no mundo dos registros de 32 bits e das larguras de barramento de dados de 32 bits e tudo o que você sempre quis disponível no chip, nunca mais desejará voltar a uma CPU de 8 bits; basicamente, geralmente não há penalidade por "ficar com calma" e escrever código para ser legível mais do que eficiente.
No entanto ... periféricos ... sim e tem o problema.
Você com certeza tem uma tonelada de coisas para tocar nos MCUs modernos, e muitas delas são bem bonitas; você costuma encontrar um mundo de sofisticação muito, muito além dos periféricos on-chip AVR, PIC e 8051.
Um temporizador programável? Nah, tenho oito! DMA? Que tal 12 canais com prioridade programável e modo burst, modo encadeado e recarregamento automático e .. e .. e ...
I2C? I2S? Dezenas de opções de muxing de pinos? Quinze maneiras diferentes de reprogramar o flash no chip? Certo!
Muitas vezes parece que você passou da fome para o banquete com os periféricos e é comum que existam pedaços inteiros de um chip que você admira, mas que mal usa (daí o relógio).
Atualmente, a quantidade de hardware no chip (e as variações na linha de chips de apenas um fornecedor) é hoje bastante impressionante. É claro que um fornecedor de chips tende a reutilizar os blocos de IP; assim, quando você se familiariza com uma determinada marca, fica mais fácil, mas "a merda está ficando louca hoje em dia".
Se alguma coisa, os periféricos e suas interações (e DMA e interrupções e alocação de barramento e e e ...) são tão complexos (e, ocasionalmente, não exatamente como descrito nas planilhas de dados) que os engenheiros freqüentemente têm um intervalo favorito de MCUs e ARM tendem a querer ficar com ela simplesmente porque estão familiarizados com os periféricos e as ferramentas de desenvolvimento.
Boas bibliotecas e ferramentas de desenvolvimento (ou seja, ciclo rápido de compilação + depuração com um depurador adequado) e um grande conjunto de projetos de código de exemplo em funcionamento são absolutamente cruciais para a sua escolha do ARM MCU atualmente. Parece que muitos fornecedores agora têm quadros de avaliação extremamente baratos (
Como tenho certeza de que você notou, uma vez que você ultrapassa o nível do microcontrolador com os ARMs e entra no nível do SOC (por exemplo, SOCs no estilo Raspberry Pi / etc), as regras mudam completamente e é sobre o tipo de Linux que você vai para correr, porque - com poucas exceções - você estaria louco para tentar qualquer outra coisa.
Basicamente; independentemente da CPU que (pode) ter sido pré-selecionada para você neste show, compre um punhado de placas de avaliação baseadas em Cortex super baratas de alguns fornecedores diferentes (TI, STM, Freescale e mais): hackear com o código de exemplo fornecido.
Conselho final; depois de encontrar a página ou três na folha de dados que descreve as opções de agrupamento de pinos para o chip exato do número de peça com o qual você está trabalhando, convém imprimi-lo e colá-lo na parede. Descobrir no final de um projeto que uma certa combinação de periféricos é impossível por causa do muxing de pinos não é divertido, e às vezes essas informações são tão escondidas que você jura que estão tentando escondê-las :-)