Aprendendo Baixo Nível

Xiiii, o 8051... ou o 80C51 que permitia instalar um bootloader ou o 2051 que era mais pequenito.
Como o Alex falou, esses ainda são usados e desenvolvidos. Creio que era a Maxim que tinha usado o core do 51 para os seus chips e tinha colocado imensos periféricos nele... ou talvez a Infineon.
Eu ainda cheguei a fazer projectos comerciais com eles. E como disse o Alex, se uma pessoa sabe usar aquele, os outros apenas são um pouco diferentes (os ARM são mais diferentes que o normal, mas os princípios são precisamente os mesmos).

Quanto a escrever em Assembly, é inegável que a eficácia do código, de um bom programador, é brutal mas em termos de eficiência não é muito bom já que demora imenso a escrever coisas que em C são fáceis de o fazer. Daí que saber algum Assembly e a forma como o compilador gera o Assembly seja bem mais importante que dominar todos os aspectos do Assembly pois isso permite controlar o que realmente vai acontecer no micro. Se procurares por posts iniciados por mim, vais encontrar uma app note a explicar como optimizar o uso do compilador de C. Vais ficar espantado com o que eles mostram. :wink:

Para terminar, uma das coisas que eu adorava (e acabei de comprar um Mega para tentar fazer parecido) no 8051 original era que como ele precisava do programa em EEPROM (Sim, tinha de tirar o chip de EEPROM, meter ao sol durante um dia, meter outro chip num gravador específico e gravar o novo programa... apenas para ver que me tinha esquecido de algo ou tinha escolhido o ficheiro errado), tínhamos sempre um barramento disponível e então todos os periféricos eram mapeados em memória. Era fantástico aceder a um periférico tipo AD ou um LCD alfanumérico apenas com um ponteiro.
Infelizmente, isso é algo que hoje niguém (ou muito pouca gente, excepto uma expansão de memória no rugged circuits) faz e muita da gente que usa o Arduino provavelmente não imagina como fazer. :frowning:

Dito isto... eu estive a arrumar as minhas bibliotecas no Google Code e se calhar vou iniciar um blog com coisas sobre electrónica (principalmente para explicar como usar as bibliotecas e depois para colocar o sistema de monitorização da casa que estou a projectar) e talvez coloque lá a mecânica de mapear periféricos em memória...

Para terminar, se dominares os periféricos dos AVR apenas com registos sem nada do Arduino lá pelo meio, pegar num chip ARM não é tão complicado. No entanto, começar de raíz terá sempre o problema do compilador para ARM e setups de clocks, etc...
Eu tenho usado uma placa da STM32 para molhar os pés e o grande problema é mesmo o compilador que não é simples de usar (ao contrário do AVR-gcc), acredito que seja mais simples com chips ARM da ATMEL, mas depois de ver o chip que escolheram para o Arduino eu é que não vou pagar balúrdios por aquela placa. É um exagero!!!

Sempre que precisares, já sabes. :slight_smile: