Programovani Arduino Pro Mini – autoreset DTR

Aktualne se mi doma vali dve desky Arduino Pro Mini. Maji klasicky ATmega328 procesor na 16MHz. Od „velke“ desky se lisi hlavne absenci RS-232 – USB prevodniku (a to ani MAX232) a velikosti. Pro Mini se pri sve velikosti (malosti) primo nabizi k vestaveni do ruznych zarizeni. Na velkem Arduinu odladime FW a pak ho dame do Pro Mini. Problem je s programovanim, pokud chceme pouzit bootloader a zaroven levny USB prevodnik za dolar z eBay.

Arduino Pro Mini

Arduino Pro Mini nema ani MAX232. Na desce je dostupny UART v 5V logice. Pokud ho chceme pripojit k PC, musime mit MAX232 na standardni seriovy port, nebo USB prevodnik. Jinak mu usmazime elektronku 😉

U Arduina se bezne pouziva nahravani noveho programu pres seriovy port diky takzvanemu zavadeci. Ten po privedeni napajeni k procesoru urcity cas ceka na prichozi program po seriovem portu. Pokud prijde, prepise flash. Pokud ne, spusti program v jednocipu (ve flash).

Problem je v te dobe. Pokud by to bylo treba 30s, start jednocipu by byl extremne pomaly. Proto to jsou casy hodne pod 1s. Programator na PC to resi velice elegantne – restartuje jednocip a po dobe, kterou zna zacne posilat program. Tak se krasne trefi. Zkouset autoreset tlacitkem na modulu je nesmysl – zkousel jsem a nejde to.

„Velka“ Arduino deska ma vyvedeny pin DTR serioveho portu (z FTDI prevodniku) na reset pin jednocipu. Sepnutim DTR na PC se provede reset jednocipu.

Levne cinske USB prevodniky sice DTR take maji, ale z duvodu asi setreni nejsou vyvedene. Kdo ma odvahu, muze si DTR pripajet (viz datasheety k prevodnikum), ale roztec vyvodu SMD prevodniku byva tlustsi nez drat hrot trafopajky 😀

Ja jsem mel po ruce prevodnik z 5V klasicky na RS-232, vlastne je to jenom MAX232. Bohuzel mel taky vyvedene jenom TxD, RxD a zem.

    

Staci propojit DTR linku ze serioveho portu (pin c. 4) pres 100nF kondenzator k reset pinu jednocipu. Ja jsem do desky prevodniku vyvrtal dalsi diru a osadil 1 pin pinove listy.

Kondenzator je dulezity! Pokud ho vynechame, bude Arduino s pripojenym seriovym portem trvale restartovane (nebude fungovat).

U meho prevodniku jsou obe strany plosnaku uzemnene. Je to videt na obr. 3 u pateho pinu – ten castecne schovany pod kondenzatorem. To je zem a je pripojena na celou plochu DPS. Proto jsem musel po vyvrtani diry pro pin diru zahloubit (obr. 3 a 5) a to z obou stran. Nejdriv jsem to neudelal a vysledkem byla trvale uzemnena (zkratovana) DTR linka.

Vice informaci je pod nadpisem Automatic (Software) Reset na strance Arduina.

Pokud se jedna o jednorazove naprogramovani, je mozne neresit autoreset a zapsat normalne program do jednocipu pomoci klasickeho programatoru. Treba USBtinyISP. Ale zavadec je pohodlnejsi. Pokud pouzijeme programator, muzeme kdykoliv nahrat zavadec zpet.

 

Dalsi clanky o AVR.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *