Arduino - ICSP programátor

Pro konstrukce s ATtiny 85 jsem potřeboval nějak dostat program z Arduino IDE do procesoru ATtiny85 (44,45,84,85). Proto jsem si postavil ICSP (In-circuit serial programming) programátor s pomocí Arduina a jeho ukázky (Arduino as ICSP)... http://arduino.cc/en/Reference/SPI

IMG 20141202 104951

  • Jako první krok je potřeba si do Arduina (jedno zda UNO, DUE...) nahrát skeč (ukázku), který vytvoří náš ICSP programátor: cesta"File/Examples/ArduinoISP"

ardu

Vybereme desku, port a ukázku nahrajeme do našeho Arduina (ze kterého vyrábíme programátor).

  • Dále potřebujeme k desce Arduina připojit konektor ICSP pro připojení programovaných procesorů (v mém případě ATtiny 85). Na webu je celá řada ukázek a příkladů jak propojit desku Arduino a náš programovaný procesor.

Arduino jako icsp

IMG 20141202 105719

IMG 20141202 103702

IMG 20141202 103924

IMG 20141202 104951

Protože neustálé propojování s Arduinem není zrovna praktické, sestavil jsem si programátor na univerzální desce (shieldu Arduino). Mám použitou patici DIL8 pro procesory ATtiny (44,45,84,85) a DIL 28 pro procesory ATmega328 (168).

ISP

Ve skeči (ukázce) je uvedeno, že je potřeba propojit tyto piny:

Arduino (programátor)  programovaný procesor (ATtiny 85) programovaný procesor (ATmega 328)
RESET pin Arduino 10 RESET pin 1 RESET pin 1
MOSI pin Arduino 11 MOSI pin 5 MOSI pin 17
MISO pin Arduino 12 MISO pin 6 MISO pin 18
SCK pin Arduino 13 SCK pin 7 SCK pin 19

Dále je potřeba propojit zem Arduino programátoru a zem programovaného procesoru. Dále je potřeba, aby měl programovaný procesor napájení (lze ho napájet z desky Arduino programátoru, nebo pokud máme procesor již zapájený v našem zařízení, kde je napájení zapneme toto napájení). POZOR: pokud máme například ATtiny napájen z 3V baterie a programátor Arduino (to má napájení 5V) můžeme poškodit programovaný procesor, který je napájený jiným napětím (zatím se mi to nestalo), ale je lepší, když má obojí stejné napětí!

Příklad vývodů na processoru ATtiny 45/85

ATtiny45-85

Příklad vývodů na procesoru ATmega 328...

Arduino-To-Atmega8-Pins

Je vhodné i signalizovat stavy programátoru a proto připojíme 3 LED diody k pinům:

  • Arduino pin 9 - zelená LED signalizuje chod programátoru (postupné zhasínání a rozsvěcení)
  • Arduino pin 8 - rudá LED signalizuje chybu při programování
  • Arduino pin 7 - modrá LED signalizuje práci s FLASH pamětí (programování)

Samozřejmě musíme mezi pin a LED připojit vždy rezistor alespoň 220 Ohmů :-) druhý konec LED připojíme na GND (0V).

  • Máme hotovo :-) pro použití programátoru musíme v Arduino IDE přepnout, že používáme Arduino jako programátor, jinak by se vždy naším skečem přemazal program programátoru (ArduinoISP)!

asisp

Nyní otevřeme náš skeč (program, který chceme nahrát do prázdného procesoru) nastavíme port, vybereme desku (ATtiny 85, UNO...) a dáme upload.

Tento programátor umí programovat procesory zapájené v zařízení a není proto nutné obvod vyndat a připojovat k tomuto programátoru (stačí pouze připojit piny: 0V, +UCC, MISO, MOSI, SCK) a je to :-)

V dalším článku uvedu jak do Arduina přidat procesor ATtiny 85