EMC a počet paralelních portů

krizma
Příspěvky: 172
Registrován: 7. 1. 2008, 7:12
Bydliště: Brno
Kontaktovat uživatele:

27. 3. 2009, 4:10

Tak uz to vim....prikazem v terminalu
lspci -v
se vypisou vsechny zarizeni

0000:00:10.0 Communication controller: NetMos Technology PCI 1 port parallel adapter (rev 01)
Subsystem: LSI Logic / Symbios Logic: Unknown device 0010
Flags: medium devsel, IRQ 11
I/O ports at a800
I/O ports at ac00
I/O ports at b000
I/O ports at b400
I/O ports at b800
I/O ports at bc00


pak adresa je 0xa800


:D
Martin
Pupik
Příspěvky: 248
Registrován: 7. 12. 2008, 6:09
Bydliště: Ostrava
Kontaktovat uživatele:

27. 3. 2009, 5:04

A nezapomen na ten druhy ac00 :)
krizma
Příspěvky: 172
Registrován: 7. 1. 2008, 7:12
Bydliště: Brno
Kontaktovat uživatele:

27. 3. 2009, 5:10

Diky...to jsem hledal...jak nastavujes rychlost portu?
Martin
Pupik
Příspěvky: 248
Registrován: 7. 12. 2008, 6:09
Bydliště: Ostrava
Kontaktovat uživatele:

27. 3. 2009, 7:57

pridelenim threadu pro cteni a zapis portu
base-thread je fast (dle latency cca 10-20kHz)
servo-thread je slow (1kHz)

je mozno vytvorit klidne i treti thread s vlastni rychlosti podle potreby

#sample
addf parport.1.read base-thread
addf parport.1.write base-thread
addf parport.2.read servo-thread
addf parport.2.write servo-thread
Uživatelský avatar
Cjuz
Příspěvky: 2433
Registrován: 17. 2. 2013, 6:27
Bydliště: Předklášteří
Kontaktovat uživatele:

10. 7. 2013, 7:50

Ahojte
potřeboval bych trochu postrčit ohledně druhého LPT přidaného do PC.
výpis v linuxu mi říká toto:

01:00.0 Parallel controller: NetMos Technology PCI 9865 Multi-I/O Controller (prog-if 03)
Subsystem: Device a000:2000
Flags: bus master, medium devsel, latency 64, IRQ 5
I/O ports at dc00
I/O ports at d880
Memory at f9fff000 (32-bit, non-prefetchable)
Memory at f9ffe000 (32-bit, non-prefetchable)
Capabilities: <access denied>

vydedukoval jsem že je potřeba přidat do HALu řádky pro přidání portu a pak používat piny akorát si nejsem jistý jak poskládat správně kód
pokud se najde někdo kdo by mě ukázal jak přidat port do HALu jako výstupní a přiřadil třeba na jeden z pinů například start vřetena budu mu vděčný

např. pin se asi přiřazuje takto:
setp parport.0.pin-14-out-invert 1
net spindle-on => parport.0.pin-14-out
- typuji že 0 je číslo portu, 14 pin portu, no a spodní řádek mi už je jasný

přikládám hal (přejmenovaný na txt)
Cjuz.txt
(3.73 KiB) Staženo 434 x
Na konci poznávacího procesu je omyl zcela vyvrácen a my nevíme nic. Zato to víme správně.
Uživatelský avatar
packa
Příspěvky: 7027
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

10. 7. 2013, 8:18

udělej si přez stepconf nějakou pokusnou konfiguraci a nastav tam 2 parpoty ,a mrkni na vytvořený hal
z toho ti hned bude jasné jak se druhý port zapisuje , zkopči si to do svého halu a jen přejmenuj tvůj druhý port , bude to zřejmě 0xdc00 nebo 0xd880
Uživatelský avatar
Cjuz
Příspěvky: 2433
Registrován: 17. 2. 2013, 6:27
Bydliště: Předklášteří
Kontaktovat uživatele:

13. 7. 2013, 11:49

Tak už jsem se k tomu dopracoval :)
Pro případné hledače postup je následující:

1. Vložit LPT kartu do PCI slotu
2. V setupu PC nastavit přerušení, případně povolit pokud jsou zakázané
3. v linuxu napsat příkaz $ sudo lspci -v pro výpis portu (pokud jej linux vidí vypíše něco takového)

01:00.0 Parallel controller: NetMos Technology PCI 9865 Multi-I/O Controller (prog-if 03)
Subsystem: Device a000:2000
Flags: bus master, medium devsel, latency 64, IRQ 5
I/O ports at dc00
I/O ports at d880
Memory at f9fff000 (32-bit, non-prefetchable)
Memory at f9ffe000 (32-bit, non-prefetchable)
Capabilities: <access denied>

4. číslo přečteného portu zadáte do příkazu:

sudo -s
modprobe -r lp
modprobe -r parport_pc
modprobe parport_pc io=0xdc00 irq=5 (zde je uvedený port a přerušení které využívá)
modprobe lp
dmesg | tail -n20
exit

5. příkaz celý zkopírujete do příkazového řádku a enter (pokud to napíše že nebylo možné vykonat někde máte chybu)
6. v halu pro CNC upravíte řádek kde je již jeden port přidán

loadrt hal_parport cfg="0x378 out 0xdc00 out 0xd880 out" (378 je port na desce, dc00 a d880 je nový port v PCI)

7. pak již klasicky napíšete jaké výstupy chcete čím ovládat
například zde se ovládá brzda vřetene na portu 0 (první v PC) na pinu 17, ale dále jsou přidané řádky pro brzdu na druhý port 1 (port v PCI) a jak na pin 17 tak na pin 02 takže když sepnete brzdu změní se vám tři výstupy naráz.
trochu blbost ale pro příklad to použitelné je :)

setp parport.0.pin-17-out-invert 1
net spindle-brake => parport.0.pin-17-out
setp parport.0.pin-17-out-invert 1
net spindle-brake => parport.1.pin-17-out
setp parport.0.pin-17-out-invert 1
net spindle-brake => parport.1.pin-02-out

8. dokud neznáte správně syntaxi je lepší používat Ctrl+C a Ctrl+V s přepisem portů a pinů, alespoň neuděláte tolik chyb.
Na konci poznávacího procesu je omyl zcela vyvrácen a my nevíme nic. Zato to víme správně.
rollfree
Příspěvky: 484
Registrován: 3. 12. 2008, 1:23
Bydliště: Brno

19. 7. 2013, 10:42

Cjuz píše: sudo -s
modprobe -r lp
modprobe -r parport_pc
modprobe parport_pc io=0xdc00 irq=5 (zde je uvedený port a přerušení které využívá)
modprobe lp
dmesg | tail -n20
exit
Nahodou jsem narazil na tenhle Tvuj prispevek.
Proc se na ten LPT port snazis nacpat drivery "partport_pc" a "lp"? Ty jsou urcene pro ovladani tiskaren, a podle me je LinuxCNC k nicemu nepotrebuje. Spis naopak tam budou prekazet.
Zdrojak jsem nezkoumal, ale prepokladam, ze LinuxCNC pouziva na LPT portu GPIO bit-bang, tj. pristupuje (prestrednictvim hal_partport) primo na I/O adresy toho LPT portu, tedy nechodi nijak pres systemove drivery "lp" a "partport_pc". Pristup pres ne by jenom zvetsoval rezii, a nic by neprinesl.
Doufam, ze se nepletu, a ze LinuxCNC neprecenuji.
Soustruh Noell E0177 (Sandra), jenom kličky
Frézka 3040z (Fiona), LinuxCNC
Uživatelský avatar
Cjuz
Příspěvky: 2433
Registrován: 17. 2. 2013, 6:27
Bydliště: Předklášteří
Kontaktovat uživatele:

20. 7. 2013, 9:47

Tak to je už na mě moc - nevím
Je to postup který jsem na netu vyštrachal a fungoval mi. Asi by to chtělo někoho kdo se linuxem zabývá déle než pár týdnů :D a objasnil to.
Na konci poznávacího procesu je omyl zcela vyvrácen a my nevíme nic. Zato to víme správně.
rollfree
Příspěvky: 484
Registrován: 3. 12. 2008, 1:23
Bydliště: Brno

20. 7. 2013, 1:57

Myslim, ze tedy ani tak nejde o to, aby clovek znal Linux. Ale aby vedel, jak je konkretni aplikace (LinuxCNC) napsana.
K periferiim muze program obecne pristupovat bud primo ve vlastni rezii (je ted celkem jedno, jestli to dela primo aplikace, nebo to dela nejaky driver, ale patrici k te aplikaci), nebo je mozne jit pres ruzne abstrakcni vrstvy.

Moderni trend je jit pres abstrakcni vrstvy, protoze je to mene pracne, a programator nemusi resit specifika ruznych zarizeni (pristupuje se k tomu jako k abstraktnimu "univerzalnimu" zarizeni). Jenze tento postup je velmi narocny na zdroje (pamet, vypocetni vykon), a tak proto jsou dnesni moderni programy na superrychlych strojich stejne pomale, jako byly programy pred mnoha lety na nesrovnatelne pomalejsich strojich, ale s mensim poctem abstrakci.

No a ten druhy zpusob je jit primo na obsluhu hardware, coz je ta nejeefektivnejsi metoda, kdy to pak jenom lita. Tady program primo ovlada jednotlive bity na konkretnich I/O portech. Vysledkem je mnohem vykonnejsi reseni, ale je to pracnejsi na naprogramovani a na osetrovani rozdilu mezi ruznymi modifikacemi zarizeni.

Takze ja doufam, ze tvurci LinuxCNC pouzili tu efektivni metodu pristupu, proto to zadne systemove drivery (ktere by prave vyrabely nejake abstraktni vrstvy) nepotrebuje.
Soustruh Noell E0177 (Sandra), jenom kličky
Frézka 3040z (Fiona), LinuxCNC
krizma
Příspěvky: 172
Registrován: 7. 1. 2008, 7:12
Bydliště: Brno
Kontaktovat uživatele:

20. 7. 2013, 8:45

Je to jak rikas...pouziva ji se GPIO. :)
Martin
testone
Sponzor fora
Příspěvky: 7380
Registrován: 3. 12. 2010, 5:56
Bydliště: Slaný

20. 7. 2013, 8:57

krizma píše:Je to jak rikas...pouziva ji se GPIO. :)
prosím, pro SW neznalce
....používají se GPIO......
A to je ta dobrá nebo ta špatná (na HW náročná) metoda?
Obvykle se dějí věci obvyklé. Méně často se dějí věci neobvyklé a zcela vyjímečně se dějí věci vyjímečné...
Masturn 40 CNC, Hermle UWF1200H CNC a pár klasik
http://www.radialengine.cz" onclick="window.open(this.href);return false;
http://www.autopejsek.cz" onclick="window.open(this.href);return false;
rollfree
Příspěvky: 484
Registrován: 3. 12. 2008, 1:23
Bydliště: Brno

20. 7. 2013, 9:05

Dobra (rychla a nenarocna na zdroje). :-)
Soustruh Noell E0177 (Sandra), jenom kličky
Frézka 3040z (Fiona), LinuxCNC
Odpovědět

Zpět na „LinuxCNC - drive pod nazvem EMC2“