O que o ATtiny não pode fazer com o Arduino?

12

Inspirado neste vídeo do youtube da Make Magazine , eu gostaria de usar os chips ATtiny em vez do Arduino para a maioria dos meus projetos. O autor do vídeo alerta que algumas funções do Arduino não funcionarão no ATtinys. Existe uma lista completa do que é e não é suportado?

DudeOnRock
fonte
1
Pelo que li (o que não é admitidamente muito), nem todos os ATtinys têm flash suficiente para o gerenciador de inicialização do Arduino. Você provavelmente ainda pode compilar via Arduino e enviar via AVRdude separadamente.
Ignacio Vazquez-Abrams
1
Não se trata do carregador de inicialização aqui (você pode usar um programador externo), mas algumas bibliotecas simplesmente não compilam com o código de trabalho (eu até entendi que nem todas também geram erros). Que eu saiba, não há uma lista de quais funções funcionam e quais não funcionam, mas não custa aprender a programar o hardware diretamente, porque a maioria das funções do Arduino vem com um pouco de sobrecarga. Você não deve querer funções como pinMode();e digitalWrite();em um ATtiny, apenas o direito dos registos adequados DDRx, PORTxdiretamente. Muitas funções semelhantes podem ser encontradas.
jippie
1
Para a grande maioria dos projetos do Arduino que eu já vi, os chips ATtiny seriam capazes. Na maioria das vezes, você programaria via SPI em vez do gerenciador de inicialização e gravaria código em C ou Assembly, em vez da típica cópia e colagem do Arduino nos tutoriais.
Kurt E. Clothier
@Kurt, na verdade, existem portas da maioria das bibliotecas de tempo de execução do Arduino e até software USB - mas é claro que elas têm sobrecarga.
Chris Stratton
1
@ChrisStratton Bom argumento. Imagino que alguém que não sabe a diferença entre um chip ATtiny ou mesmo um chip ATmega e uma placa Arduino não tem idéia do que isso significa (portas, depuração em tempo de execução, software USB, etc.), então eu duvido que eles precisariam usá-los. Nesse caso, eles realmente precisam aprender um pouco mais sobre o que estão fazendo, para que sejam capazes de resolver problemas simples à medida que são encontrados. Então, novamente, acho que esse é o tipo de mentalidade de todas as pessoas anti-arduino como eu.
Kurt E. Clothier

Respostas:

10

Atualização: Para responder melhor à pergunta, os ATTiny's podem fazer qualquer coisa que não exija hardware do ATTiny's, incluindo a porta serial de hardware, o hardware i2c ou várias interrupções. Como isso está oculto nas bibliotecas do Arduino, a menos que você tenha um bom entendimento de como elas funcionam ou leem os arquivos de biblioteca reais, coisas como a biblioteca Wire (hardware i2c) não funcionarão.

Em http://forum.arduino.cc/index.php/topic.5582.0.html :

Por exemplo, um ATTINY84 possui 1 interrupção, nenhum UART de hardware (serial ou i2c) e um pequeno punhado de pinos GPIO, menos espaço de programa e muito menos ram, mas vem em um pacote de 14 pinos.

Um ATMEGA328 possui 2 interrupções, 1 hardware UART, mais memória RAM, mais espaço no programa e mais GPIO, o que é ótimo, se você realmente precisar.

Além disso, a maioria dos ATTinys não possui multiplicação de hardware; portanto, um compilador precisaria fazer uma multiplicação não-base-2 no software.

Finalmente, o Arduinos depende de um gerenciador de inicialização em vez da programação spi, portanto, você precisa de um ATTiny com um flash de pelo menos 4 ~ 8kb para que eles trabalhem com o gerenciador de inicialização Arduino.

ATTiny44 / 45/84/45/2313 são populares como micro-Arduinos. Eles têm cerca de um quarto ou oitavo do ram e flash de um ATMega328 que o Arduino Uno oficial usa.

Existem muitos ATTiny's, portanto, nenhuma declaração pode ser dita sobre todos eles.

Veja também aqui: http://hlt.media.mit.edu/?p=1695

Transeunte
fonte
5

A maioria dos attinys não possui um módulo USART de hardware, portanto você não poderá se comunicar com eles via serial. Para alguns participantes, em vez dos periféricos de hardware I2C e SPI dedicados, existe um periférico USI simplificado para o qual é necessário escrever um pouco de código de cola para implementar a comunicação SPI ou I2C. Alguns attinys não têm ADC.

Em geral, você deve ter mais cuidado ao escolher o atalho para o seu projeto, porque esses tendem a não ter um conjunto completo de recursos disponíveis no atmega328 do Arduino. Por exemplo, attiny2313 possui um UART, mas não possui ADC, attiny44 possui ADC, mas não possui um UART, etc.

Basta verificar a tabela de seleção do microcontrolador Atmel e uma folha de dados no início.

miceuz
fonte
1
Falta de um hardware UART! = Não será capaz de se comunicar via serial.
precisa
@ChrisStratton verdade, você pode bit bang-lo de emular via USI
miceuz
1

Um ponto trivial, se relevante, além das excelentes respostas já publicadas:

A maioria das placas Arduino, sem contar o Pro Mini / Pro Micro e talvez outras raras, contém além do microcontrolador principal, um segundo AVR ou outra parte da interface USB. Isso permite não apenas programar o Arduino a partir de um computador, mas também depurar o terminal serial em tempo de execução. A mesma conexão USB também fornece energia ao Arduino.

Embora obviamente o requisito de energia do ATTiny tenha sido tratado em seu projeto, o código de depuração em tempo de execução usando o software do terminal pode ser bastante útil.

Anindo Ghosh
fonte
1
Algumas placas pequenas resolvem esse problema com o software USB.
precisa