Arduino DUE - lehull a lepel

Az Arduino DUE lapról sokszor sikerült leszedni a keresztvizet (Arduino DUE - a bonckés alatt és Arduino DUE). De nem attól műszaki vénájú valaki, hogy megmondja, hogy miért nem oldható meg egy probléma, hanem hogy három megoldást is adjon rá. Ez a cikk a megoldásokról szól.

Az Arduino DUE problémaköre elsősorban az eltérő processzormagra vezethető vissza. Ezen segíteni nem tudunk.
A programoknak többszörösen kompatibilisnek kell lenniük:

  • önmagukkal,
  • a régi hardware kialakítással és a
  • 3.3V-os rendszerbusszal is.

Ebből a szoftveroldali kompatibilitás már - nagyjából - adott. A gyakorlatban a SAM3X8E chip funkcionális lábai az Arduino Mega alappanel kivezetéseivel egyeznek meg. Ha valamilyen eltérésre sikerül futni, szinte mindegyik problémára van kész szoftveres, emulációs megoldás: NewSoftSerial (soros port), SoftI2C (Wire-busz), SoftSPI (SPI-busz).

3.3V vs. 5V

Az Arduino DUE kivezetései a rendszerrel együtt 3.3V-osak és ha bemenetként használjuk őket, nem 5V toleránsak! Így a shield áramkörök kezelésekor nekünk, a felhasználónak kell odafigyelni.
Több megoldás is kínálkozik a probléma kezelésére:

  • a shield maga is 3.3V-os, csak a shielden levő chipek bemenetei 5V toleránsak. Ekkor semmi teendőnk nincsen, azonnal használható a rendszer (pl. Ethernet-shield, Proto shield, stb.),
  • a shield bemenete 0V/5V rendszerre készült.

A második esetben az alappanelünk kimenete illesztendő a shield-áramkörhöz. Az jelszintek illesztése vet fel pár problémát mind az adatirány, mind a jelszint miatt.

3.3V alaplapi kimenet , 5V shield bemenet

Ez lehet egyszerű összekötés is megvalósításként, ha nincs nagyon terhelve az áramköri kimenet. A 3.3V már logikai magas szintnek számít az 5V rendszerben.
De FET-es illesztőt is használhatunk, ekkor korrekt a jelszintillesztés:

Jelszintillesztés 3V és 5V közt

Az ábra bal oldalán a bekötés: LV-3.3V; HV-5V. Így az illesztéskor a 0V/3.3V kimeneti feszültségből a bemeneten 0V/5V lesz. Ugyanez a megoldás chipbe integráltan is elérhető, pl. MAX9003 sorozatban (Maxim MAX90xx adatlap).

5V shield kimenet, 3.3V alaplapi bemenet

Típusproblémaként, sok esetben a shield 5V-os kommunikciós kivezetése kerül az alappanel bemenetére. Itt hogyha közvetlen összekötést alkalmazunk, akkor az 5V túlterheli a 3.3V bemenetet! Ámbár, ha szerencsénk van, akor az alaplapi kontroller belső védődiódája megvédi az elektronikát.
Fontos! A belső dióda általában csak a statikus kisülés elleni védelmet szolgálja (ún. ESD védelem), így nem terhelhető! Jellemzően 0,1...0,5mA folyamatos áram elviselésére alkalmas! A trükk az, hogy az 5V kimenet és a 3.3V bemenet közé egy soros 4k7 áramkorlátozó ellenállást kell beépíteni. Nem elegáns megoldás, csak végszükség esetén szabad használni (ideiglenes megoldás - 10 évre! :) ).

Ha a shieldpanel korrekt tervezésű, akkor jelszintillesztő kapuáramkörrel rendelkezik. Ez általában eredetileg 5V I/O és a 3.3V alap rendszer közt került kialakításra. Ilyen megvalósítás például az Ethernet-shield SD-kártyájánal illesztése.
Egyes szintillesztéseket ellenállásosztóval is meg lehetett valósítani 5V rendszer esetén. Azonban, ha a shield 5V rendszer-tápfeszültség helyett 3.3V rendszerfeszültséget kap, akkor a működés bizonytalanná válik. A jelszintillesztés az előző ábra jobb oldali kétellenállásos megvalósítása.

Szoftverkezelés

Az Arduino DUE esetén a közvetlen hardware kezelése ugyanúgy ellenjavalt, ahogyan ez a Arduino család  többi tagja esetén is volt. Ha mégis ilyen megoldásra van szükség, akkor azt az eljáráskönyvtárakon keresztül kell elérni! Idővel, ahogyan a Mega lapok esetén is történt, úgy a DUE kapcsán is lassan elkészülnek az eljáráskönyvtárak...

Az Arduino DUE számos különlegességgel rendelkezik, ami más Arduino rendszerekben így együtt nem érhető el:

  • Natív USB port,

Az USB port kihasználásához már csak a szoftver szükséges. A chip belül tartalmaz egy USB illesztő-hardware-t - így könnyen egér, midieszköz, billentyűzet vagy joystick lehet. A könnyű tanuláshoz az Arduino-1.5.x ezeket a mintákat már beépítve tartalmazza. (A Leonardo, Esplora is erre az USB alkalmazáskönyvtárra épül.)

  • DAC

Az AVR chipek esetén minden kivitelben hiányzott a valódi analóg kimenet - persze sok esetben ez megoldható volt a PWM jellel és néhány kiegészítő alkatrésszel. Az ARM alapú rendszeren azonban 2 csatornás, 12 bites analóg kimenet áll rendelkezésre. Arduino mintaprogram köszönhetően a chip 84 MHz sebességének az ogg hangformátumú lejátszó.

  • CAN

Az újabb ipari eszközök illetve az autoelektronikában elterjedt  kommunikációs felület a CAN-busz. Az Arduno családban eddig ez csak külső jelfeldolgozóval volt illeszthető (MCP2551, MCP2515)
Az Arduino DUE a CAN protokoll-feldolgozó egységet már beépítve tartalmazza! Hivatalos mintaprogram azonban még nincsen készen.

  • Alternatív TWI

Az Arduino DUE két I2C/TWI portot tartalmaz. Ezek két, független portként kezelhetők!
A címzésük is nagyon egyszerű - ám a mintaprogram még várat magára.

Kitekintés

Az Arduino keretrendszer is lassan felnő a feladathoz. Idővel - remélhetőleg - bekerülnek az ARM belső plusz funkciókat kihasználó kódok is például a gyorsabb memóriaeléréshez, optimalizált futáshoz. Hiszen a keretrendszer jelenleg 1.5.2 beta állapotban van jelenleg...

TavIR-Facebook