V EduShieldu jsem použil pro řízení displeje jednočip ATtiny2313. Je to vlastně legendární AT90S2313, ale s novějším jádrem a novými periferiemi. Původně jsem sice chtěl použít jiný typ, ale ten nebyl dostupný. Inu co už, použil jsem tento.
Otázka ale byla: Jak tu Atinu (familiární označení, jistě to říkáte taky…) naprogramovat. A protože jde o shield pro Arduino, nabízelo se naprosto jednoduché řešení, totiž využít Arduino jako programátor.
Dokonce na to mají i tutoriály – Arduino as ISP. Stačí k tomu pár propojovacích drátů a jeden kondenzátor (ten tam neukazují, ale je zapojený mezi RESET a zem na Arduinu).
Propojení je prosté:
Arduino | ATTiny |
---|---|
digital 10 | pin 1 (RESET) |
digital 11 | pin 17 (MOSI) |
digital 12 | pin 18 (MISO) |
digital 13 | pin 19 (SCK) |
GND | pin 10 |
5V | pin 20 |
Nejprve ale nahrajte do Arduina sketch „ArduinoISP“. Najdete ho mezi Examples.
Jako druhý krok připojte elektrolyt ~10µF mezi zem a RESET na Arduinu (záporným pólem k zemi, logicky).
Teď můžete vesele připojit ATTiny2313 a programovat.
No jo, to se řekne – programovat. Ale čím?
Já jsem si řekl, že bude kůl a vůbec užitečné, když firmware bude taky sketch pro Arduino. A jak jsem řekl, tak jsem i udělal. K tomu, aby to celé fungovalo, ale musíte do Arduina přidat podporu pro ATtiny. Já použil tuto, ale chtělo to trošku laborovat s cestami v souboru boards. Ony se totiž mezi verzí 1.5 a aktuální 1.6 změnily, a tak byl překlad spíš festival chyb než radostná událost. Ale nakonec se podařilo.
Vybral jsem příklad „blink“, přeložil ho pro desku „ATtiny2313@1MHz“, vybral jsem programátor „Arduino as ISP“ a tradá – vše fungovalo.
Trošku trápení bylo s I2C v roli „slave“, ale nakonec po chvilce bastlení s přerušením začala Atina přijímat povely a reagovala na ně. Standardní knihovna Wire totiž moc nešlape, tak jsem zvolil TinyWireS.
(Netestoval jsem Arduino Tiny Core od Spencera Konde, vypadá zajímavě).
S touto sestavou tedy trvalo vytvoření firmware pro EduShield jedno odpoledne. Naprogramování pak vyžaduje jen šest drátů, kondenzátor a pět minut práce.