Eu uso um Boarduino e um tabuleiro de pão de 30 linhas para programar meu ATtiny. Carrego um esboço não muito complicado chamado ArduinoISP (incluído por padrão agora no IDE do Arduino) e, de repente, tenho um programador em funcionamento. A Atmel vende um bom programador por entre US $ 30 e US $ 40, e há muitos kits para fazer os mais baratos.
Fiquei muito feliz quando recebi meu programador em funcionamento e fiz o pequeno piscar alguns leds. No entanto, agora meu pobre boarduino está preso no dever do programador.
Tanto quanto posso dizer, este programador pressiona o botão de reset e depois transmite e recebe nos pinos MOSI e MISO. Eu acho que o SCK não é usado ou, pelo menos, desnecessário. (O SCK é necessário de acordo com a folha de dados da ATtiny, meu programador não funciona sem ele e não consigo encontrar o local que pensei que tinha lido não era necessário.)
Por que preciso de um programador de hardware para transmitir apenas serial? Quero dizer, vamos supor que estou disposto a pressionar o botão de reset com o dedo em vez de usar um IC. Tudo o que resta é o envio e recebimento serial, então tudo o que preciso são três fios GND, RXD e TXD. Caramba, se eu tiver a linha "DTR" ou qualquer outra coisa, você pode até pressionar o botão de reset com o cabo serial.
Por que existem todas essas soluções de hardware que também exigem software sofisticado (como AVRdude, AVR studio ou qualquer outra coisa)?
Quero dizer, eu pude entender um pequeno cabo USB que apresentava o microcontrolador como um dispositivo de armazenamento em massa e permitia arrastar arquivos binários para programação (como esta placa de desenvolvimento ARM ). Apenas hardware, usando drivers de software padrão.
Eu também conseguia entender uma solução apenas de software (módulo conectando fios do USB ao chip, usando algo como o chip FTDI para simplificar o que ocorre nos fios). Todo o protocolo de programação sofisticado seria tratado por software no computador, e o hardware seria apenas alguns fios.
Por que temos software e hardware (complicados) envolvidos? Quero dizer, até onde eu sei, programar microcontroladores é bem fácil, mas quando eu estava começando a me preocupar com como eu compraria um chip da mouser ou digikey sem pagar algum guru para programar um gerenciador de inicialização para mim.
Tenho certeza de que há uma boa razão (não é como se eu tivesse escrito o software ou começado a fabricar o programador USB de arrastar e soltar), mas como recém-chegado, não tenho idéia do que seja.