Aprendendo Baixo Nível

Alguém tem algum link de video aulas sobre PIC/AVR/ARM ? Quero aprender alguma plataforma em mais baixo nível para projetos profissionais, se alguém tiver links, ou dicas, agradeço :slight_smile:

MarceloBoeira:
Alguém tem algum link de video aulas sobre PIC/AVR/ARM ? Quero aprender alguma plataforma em mais baixo nível para projetos profissionais, se alguém tiver links, ou dicas, agradeço :slight_smile:

Cara, tem um monte no youtube, mas você tem que decidir que quer PIC, AVR ou ARM, pois são 3 plataformas bastante diferentes, em todos os aspectos. E mesmo, assim, escolhendo AVR, você ainda tem que escolher entre Arduino ou um AVR "puro", ou seja, sem a infraestrutura de bibliotecas e bootloaders do Arduino.

Brigado pela resposta,

entendo que são plataformas diferentes, literalmente, mas de qualquer forma quero aprender um pouco de cada para poder escolher qual seria mais interessante para os meus projetos.
No youtube até acha, mas geralmente a galera posta 1 ou 2 tutoriais e para de fazer, dai tu fica pegando tudo 'quebrado'.

Outra dúvida é se eu tenho como usar o arduino para gravar códigos de AVR puro, não pesquisei como funciona o bootloader do arduino, ...

MarceloBoeira:
Outra dúvida é se eu tenho como usar o arduino para gravar códigos de AVR puro, não pesquisei como funciona o bootloader do arduino, ...

O hardware sim, mas o software não. O software do Arduino (bibliotecas, etc) não têm nada a ver com AVR puro.

Se você quer algo bem mais baixo nível do que as bibliotecas do Arduino, use o Atmel Studio. Ele mira AVR e ARM (sobretudo os ARM Cortex feitos pela Atmel), e é gratuito:

Com o perdão do termo, o Atmel Studio é um puta de um software, que te dá absolutamente tudo que você precisa para desenvolver (em termos de IDE). Sua IDE é baseada no Microsoft Visual Studio, portanto é algo de primeiríssima linha. Ele usa, no entanto, C e C++ em um nível de abstração bem mais baixo que o Arduino.

AlxDroidDev:
Com o perdão do termo, o Atmel Studio é um puta de um software, que te dá absolutamente tudo que você precisa para desenvolver (em termos de IDE). Sua IDE é baseada no Microsoft Visual Studio, portanto é algo de primeiríssima linha. Ele usa, no entanto, C e C++ em um nível de abstração bem mais baixo que o Arduino.

LOL, estás perdoado. LOLOL

Eu achei-o bastante complicado de usar... mas deu para ver que tem imensos recursos, bem como bibliotecas incluídas para imensas coisas e verdade seja dita, não me dediquei a fundo.

Quando referes baixo nível queres dizer aprender a programar em Assembly (ou código máquina) ou que queres ver-te livre de tudo o que tem a ver com o Arduino?

Os chips ARM não são muito simples de usar. Principalmente por todo o hardware que traz dentro e, excepto a ATMEL, arranjar uma IDE que funcione de borla. Eu tenho usado umas placas da leaflabs.com com uma IDE similar à do Arduino e tenho de admitir que um chip ARM dá imensas opções que os AVR não podem fazer.

Gravar no chip directamente não será algo muito difícil para ti e certamente que existem tutoriais na internet. Já procuraste?

Gravar no chip directamente não será algo muito difícil para ti e certamente que existem tutoriais na internet. Já procuraste?

Eu gostaria de saber mesmo se alguém já fez, justamente para não entrar em qualquer tutorial e ferrar com o uC.

Sim, já gravei uns Atmega168 (antigo arduino) e um megfa16 que tinha aqui em casa.

para gravar usei um arduino normal com o isp sketch. Na altura fiz isso para testar o AVR como um RTC e funcionou bem, logo suspeito que a gravação do chip seja simples. Precisas do avrdude e uma makefile.

Eu como uso MacOSX, não tenho o AVRStudio, então uso o avr-gcc que é o mesmo compilador que o arduino usa, mas escrevo o código de raíz.

Manda uma PM com a tua morada de email e eu posso enviar-te um projecto com o ATmega16 para veres a mecânica.

Para windows, o equivalente do que eu uso é o WinAVR. E dá para criar uma IDE levezinha com um editor de texto que eles incluem no pacote.

MarceloBoeira:
Eu gostaria de saber mesmo se alguém já fez, justamente para não entrar em qualquer tutorial e ferrar com o uC.

Sim, faço isto o tempo todo. Uso um USBasp que comprei baratinho da DealExtreme, e funciona perfeitamente bem, além de ser muito mais rápido do que usando a interface USB-Serial do arduino.

Desde que você não brinque de mexer com os fuses (ou "fuse bits"), dificilmente você terá como estragar seu AVR.

Se queres conhecer outra plataforma e aprofundares os teus conhecimentos sobre AVR sem ser com o arduino vê TODOS estes tuturiais

O autor é bicho e a forma de ele explicar é muito boa.
Os temas abordados por ele sao um MUST para todos os utilizadores que queiram começar e para aprofundarem um pouco nos registos do AVR.
ELe usa o WinAVR e explica tudo desde a raiz.
Recomendo a todos passar os olhos ...
O uso do arduino abstrai muito codigo e muitas das vezes o utilizador nao sabe o que se passa por detras de um simples "skeetch".A minha opiniao é que mecher com os registos, trabalhar com os Ports directamente e saber onde tudo começa, é a tabuada para se evoluir nos uC e dar o proximo salto

E muitas vezes se aprendermos bem da pra pegar um micro de menor capacidade, tirar as abstrações das bibliotecas e "extrair" mais potência, ou espaço de código, deixando só o que REALMENTE vai usar.

Eu quero aprender pra poder criar projetos mais profissionais, futuramente pretendo me aventurar em ARM mas quero aprender sobre PIC e AVR também...

Uma arquitetura bem defasada atualmente, mas que ainda é omnipresente é a dos 8051.

Quem SABE programar BEM para 8051, faz bonito em qualquer outra plataforma. Eu já soube programar um pouquinho para 8051, mas faz quase 20 anos que nao mexo mais com eles.

OS 8051, no entanto, ainda existem e sao produzidos em larga escala. Há vários microcontroladores de fins específicos que usam em seu núcleo um 8051. Um exemplo destes é a USB-to-Serial bridge TUSB3410, da Texas.

Se quiser aprender tudo sobre uC`s, coloque os 8051 em sua lista.

Meu professor de arquitetura de microprocessadores fala muito do 8051, e o pessoal FODA também, eu acabei por me esquecer, mas também é legal, ....

Eu tenho um ex-professor do senai que programava em assembly pros micros, e uns esqueminhas nada simples, a performance era incrivelmente superior segundo ele, pois tu retirava totalmente as abstraçoes e fazia exatamente o que tu queria, ... mas não é viável hoje em dia, vai escrever pro resto da vida se quiser fazer algo grande, com diversos sensores, dispositivos de exibição e tudo mais, e vai acabar re-escrevendo coisas que ja foram parametrizadas ...
enfim ...

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:

bubulindo:
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...
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...

Esta que estas a comentas é a EPROM só com um E, eu estou estudando isso, ahha na última aula o professor comentou sobre este chip que era sensível a radiação ultravioleta, então se deixasse no sol teoricamente apagava, mas tinha um dispositivo, certamente caro, que apagava ela perfeitamente, ....

EPROM - Erasable Programmable Read-Only Memory
EEPROM - Electrically Erasable Programmable Read-Only Memory (Que são as que vem no arduino)

Eu recentemente participei de um Hands-On da Freescale com a KL2x Family, bem legal, foram só 6 horas, mas muito bem aproveitadas, a placa tem 32 bits, muita potência, e retro-compatibilidade com as shields do arduino por colocar os pinos praticamente na mesma disposição, e mais uma vez começamos a "programar" com o CodeWarrior mas eu não gostei muito pois justamente tinhamos que criar componentes visuais, e definir propriedades depois o CodeWarrior gerava o código, por um lado pra quem esta começando e quer direto ver o 'efeito' da sua 'programação' até é legal, MAS quem quer conhecer e configurar tudo pra aprender desde o zero, segundo o palestrante, é bem complicado pois o uC tem muitas configurações, dai é complicado pra caramba de configurar sem os códigos gerados pela IDE...

Enfim, muito obrigado pelas dicas, e certamente estarei aqui no fórum comentando sobre isso, não sei se seria conveniente em um forum de arduino, eu até tinha pensado em criar um forum/grupo de pessoal que gostem de uC, Robótica, Retrocomputação, para discutirmos e criarmos projetos, mas pouca gente aqui do fórum teve interesse...

MarceloBoeira:
Esta que estas a comentas é a EPROM só com um E, eu estou estudando isso, ahha na última aula o professor comentou sobre este chip que era sensível a radiação ultravioleta, então se deixasse no sol teoricamente apagava, mas tinha um dispositivo, certamente caro, que apagava ela perfeitamente, ....

Eu sou do tempo de usar estas EPROMs.

Ela não apagava simplesmente de deixá-las ao sol. Elas possuiam uma janela, geralmente circular, de alguns milímetros de diâmetro, que quando exposta ao sol apagava o conteúdo. No entanto, usávamos um adesivo preto para tampar aquela janela.

Olha uma foto destas EPROMs mostrando as janelas:

Alguém se lembra dos antigos disquetes de 5.25" ? Quando comprávamos uma caixa destes floppies, eles vinham com uma cartela de adesivos que eram usados para proteger o disquete contra escrita. Eram exatamente estes adesivos que eu usava. Eu tinha centenas de disquetes 5.25", portanto milhares de adesivos!

Eu ainda tenho várias EPROMs - atualmente completamente obsoletas - destas e ainda alguns Maxim/Dallas DS89C450 novos em casa (que são bem legais). Como disse, tem muito microcontrolador de uso específico sendo fabricado, e absolutamente modernos, usando um 8051 em seu núcleo.

Eu arrisco dizer que os 8051 foram os principais responsáveis por tornar microcontroladores um hobby doméstico... mas claro que isto nos anos 80 e 90.

MarceloBoeira:
mas tinha um dispositivo, certamente caro, que apagava ela perfeitamente, ....

Certamente que ficarias surpreso com o custo dum...

http://www.lighting-gallery.net/gallery/displayimage.php?album=307&pos=26&pid=69060
http://highfields-arc.co.uk/constructors/other/epromerase.htm

Tens é de te lembrar de ventilar as lâmpadas ou então podes fritar algo. O meu chefe num dos meus empregos decidiu fazer isto "à trolha" e derreteu uma EPROM da Siemens (que não é só um chip, mas sim um chip e uma placa PCB com links, etc...). Quando começou a cheirar a queimado e fomos ver a solda tinha derretido e dava para tirar os chips da placa. LOLOL

Deixar ao sol apaga... mas não é dum dia para o outro como sugeri. Apenas estava a tentar dar uma ideia do exagero que é esperar que o sol apague aquilo comparativamente aos segundos que demora baixar o programa no Arduino. Eu acho engraçado tanta gente a queixar-se de quanto tempo demora a fazer download com o bootloader, quando nunca tiveram de passar por algo assim. LOL

Quanto a placas mais complicadas... esses geradores de código são também uma boa forma de aprender. Podes sempre reverter a eles para ver o que estás a fazer mal em vez de estares às voltas num fórum ou à net. Eu usava o codevisionAVR quando estava a aprender. :wink:

bubulindo:
Eu acho engraçado tanta gente a queixar-se de quanto tempo demora a fazer download com o bootloader, quando nunca tiveram de passar por algo assim. LOL

É verdade, ahhaha....