Porty Mega 2560

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Celeron
Příspěvky: 20511
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

Porty Mega 2560

#1 Příspěvek od Celeron »

Řeším na 3D tiskárně v FW Marlin zapínání a vypínání nepoužitých portů. (ventilátory, zapnutí termostatu komory, osvětlení a pod) Marlin umí zpracovat g-code M42, který je na přímé bitové ovládání portů. Takže v datech pro tisk můžu teoreticky zapínat a vypínat kdykoliv, cokoliv během tisku.
G-code má tvar M42 Pxxx Sxxx. Vyčetl jsem že u PWM portů je S0 log0 S255 je log1 a cokoliv mezi pulsuje, třeba S127 dává střídu 1:1. U non PWM se někde píše, že lze zadat pouze 0 a 1, jinde zase jen 0 a 255. To je detail, možno odzkoušet.
Ale mám problém s parametrem Pxxx. Ve schematu Ramps 1.4 chci použít na nevyužitým Aux2 digitální port 40, 42, 44. Jenže nevím, jakej je to skutečnej port na Mega 2560, jestli to je PWM, kolik má povolený proud a pod. Podle pinoutu pokud je číslování portů fialová 0-69, tak to neodpovídá, port 40 jde na displej připojený na Ramps. Není to číslování portů nakonec daný definováním v FW?
Další problém je, který porty lze opravdu použít, nemusí se náhodou inicializovat jejich směr a vlastnosti? Hledání v tý hoře výpisů FW, to bude dílo...
Není tady prosím někdo, kdo to dokáže polopaticky vysvětlit?
Díky
Jirka

Proč mi nemůže všechno chodit hned ?!!
Uživatelský avatar
lesana87
Příspěvky: 4397
Registrován: 20 zář 2014, 00:00

#2 Příspěvek od lesana87 »

D40 je PG1, ten hw PWM neumí, D42 je PL7, ten taky hw PWM neumí, D44 je PL5, ten umí hw PWM, je to kanál C časovače 5.
Uživatelský avatar
Celeron
Příspěvky: 20511
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#3 Příspěvek od Celeron »

lesana87 píše:D40 je PG1, ten hw PWM neumí, D42 je PL7, ten taky hw PWM neumí, D44 je PL5, ten umí hw PWM, je to kanál C časovače 5.


Já tohle na pinoutu vidím, ale problém je, že na Ramps port D40 (PG1) jde na konektor na který se připojuje LCD displej a ne na AUX2. Právě to je ta nesrovnalost v číslování na kterou jsem se ptal. Nemůžou to mít nějak předefinovaný v FW?
Třeba u řízení serva M280 P0 S1500 (servo 1, středová poloha) taky není servo připojený na D0 ale na D11. A to je na beton, funguje mi to.
Díky
Jirka

Proč mi nemůže všechno chodit hned ?!!
Uživatelský avatar
lesana87
Příspěvky: 4397
Registrován: 20 zář 2014, 00:00

#4 Příspěvek od lesana87 »

Ve schématu Ramps 1.4, který jsi sem dal, jde D40 na konektor AUX2, tak jestli chceš nějakou radu, musíš sem dát platné schéma. :roll:
Uživatelský avatar
Celeron
Příspěvky: 20511
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#5 Příspěvek od Celeron »

Tak zpět, máš pravdu koukal jsem asi jinam a blbě. Už jsem si to i proměřil. D40, D42, D44 jsou opravdu parametr P40, P42 a P44. P40 a P42 (non PWM) po zadání S0 až S254 jsou log0 a po zadání S255 jsou log1. Ale P42 (PWM) se chová stejně, žádnej kmitočet na výstupu. Když pošlu na servovýstupy D4, D5, D6, D11 hodnotu S127, tak na nich je obdélník 1:1 1mS.
Takže mám tři dotazy:
To se dá ten PWM pro konkrétní bit programově zrušit?
Pokud by ty 3 datový piny na AUX 2 nestačily, lze použít A5, A9, A10, A11, A12 jako výstupy? Předpokládám, že by se potom volaly jako P59, P63, P64, P65, P66. Jak je to ale s nastavením těhle portů aby se chovaly jako digitální výstupy? Předpokládám, že to musí být někde v FW. Zkusil jsem na A5(P59) poslat M42 P59 S0 nebo S255 a nereaguje.
A poslední dotaz, podle chování výstupů mají vnitřní odpory na VCC. Jak velký proud proti +5V můžu z pinů brát? Nebo prosím aspoň odkaz, kde to je popsaný. Vidím, že v tom děláš a že to máš v hlavě. :)
Díky
Jirka

Proč mi nemůže všechno chodit hned ?!!
Uživatelský avatar
lesana87
Příspěvky: 4397
Registrován: 20 zář 2014, 00:00

#6 Příspěvek od lesana87 »

Jestli je pin analogový vstup nebo digitální vstup / výstup nebo PWM výstup je dané sw konfigurací (v rámci možností hw).
Výstupní budiče na pinech jsou symetrické, dají 20mA proti + i proti zemi. Absolutní maximum je 40mA.
Uživatelský avatar
Celeron
Příspěvky: 20511
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#7 Příspěvek od Celeron »

Díky za pomoc. Když chodí PWM na servovýstupech, tak je počet výstupů pro mě dostatečný (1x servo, 3 volný) a nemusím v FW hledat, kde inicializovat analogový porty na digitální. Potřebuju jeden PWM na řízení intenzity osvětlení tiskárny a druhý na odporový "oblbování" PT100 regulace vnitřní teploty boxu tiskárny. Na konci tisku je možno zadat sekvenci g-kódů M42 na nastavení PWM s následnou G04 čekání v sekundách a pak změnit PWM, zase G4 a tak párkrát dokola, dokud regulátor teploty boxu nesleze v definovaný době na pokojovou teplotu. Samozřejmě oba výstupy přes tranzistor. A jeden další pouze zap/vyp na vypnutí topení boxu úplně na konci po schladnutí.
Jirka

Proč mi nemůže všechno chodit hned ?!!
Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“