connecting DIY glue logic to linuxCNC through HAL
src dir = /home/plasturo/linuxcnc-dev
Or, if you are using a RIP install as that dir name suggests, you must be in a shell session with the environment variables set before comp can be located.
ie
. ./scripts/rip-environment
regards
Please Log in or Create an account to join the conversation.
thanks a lot, ". ./scripts/rip-environment" was what I missed.
Now I start to play/program a little bit with the own driver.
bye,
Plasturo
Please Log in or Create an account to join the conversation.
I start trying to understand the hm2_7i43 driver, but I think it is to haevy for me. So I follow your idea to try the PLUTO_P driver. I read the pluto_step.comp file and think, that this way is easier. Thanks for the tip.
I also used the comp --install and it worked with the right RIP-settings. Thanks to ArcEye.
But to understand the HAL component builder "comp" I need more background knowledge.
Can somebody tell me a good german web page where I can learn more about "comp"?
I try to read this: linuxcnc.org/docs/html/hal/comp.html, but in german it will be easier to read for me.
Thanks an bye,
Plasturo
Please Log in or Create an account to join the conversation.
Can somebody tell me a good german web page where I can learn more about "comp"?
I try to read this: linuxcnc.org/docs/html/hal/comp.html, but in german it will be easier to read for me.
Unfortunately the german docs translation is almost non-existent. This should be it, you will see that almost nothing is translated.
linuxcnc.org/docs/html/index_de.html
I doubt that google translate would be much help either.
Please Log in or Create an account to join the conversation.
I tried a little bit with the EPP-Mode of the parallel interface. in general it works for writing information to different addresses, so I am able to send the value 0x00 to 0xff for address 0x00, 0x04, ... to the hardware.
I used the pluto-step driver as basis to rewrite a new driver. The content of the part EXTRA_SETUP() I used to send some test scenarios:
EXTRA_SETUP() {
rtapi_print_msg(RTAPI_MSG_ERR, "Performing EXTRA SETUP\n");
return titan_setup();
}
One part of the titan_setup() is the following to check the READ function:
rtapi_print_msg(RTAPI_MSG_ERR, "START OF TEST.\n");
EPP_DIR_WRITE();
EPP_ADDR(0);
EPP_WRITE(0xf0);
EPP_DIR_READ();
input = EPP_READ();
rtapi_print_msg(RTAPI_MSG_ERR, "read value is: 0x%x\n", input);
EPP_DIR_WRITE();
EPP_WRITE(0x0f);
rtapi_print_msg(RTAPI_MSG_ERR, "END OF TEST.\n");
Now we can see that the event before the trigger point is the EPP_ADDR(0);
Then on the trigger point the bit is set with the command EPP_WRITE(0xf0);
In the space, there has to be the EPP_DIR_READ(); input = EPP_READ();, but it isn't.
And at the end we see EPP_DIR_WRITE(); EPP_WRITE(0x0f); because the bit is set to zero.
Why is there no /DSTR in the moment where I like to read the value from the hardware?
Do I need to add some code in the driver?
Additionally I can not understand why the EPP_DIR_xxx is empty:
static inline void EPP_DIR_WRITE(void) { }
static inline void EPP_DIR_READ(void) { }
Thanks for you ideas and help in advance,
bye,
Plasturo
Please Log in or Create an account to join the conversation.
... the solution is:
static inline void EPP_DIR_WRITE(void) {
outb(inb(ioaddr+2) & 0xdf, ioaddr+2); // set direction bit(5) to 0 (write)
}
static inline void EPP_DIR_READ(void) {
outb(inb(ioaddr+2) | 0x20, ioaddr+2); // set direction bit(5) to 1 (read)
}
bye,
Plasturo
PS.: I am suprised, that there is nothing in the pluto_step driver at this place ... how can the pluto_step driver read values from the hardware?
Please Log in or Create an account to join the conversation.
That's good, I hadn't a clue.I did it ....
A stepper system might not read anything back from hardware?I am suprised, that there is nothing in the pluto_step driver at this place ... how can the pluto_step driver read values from the hardware?
Please Log in or Create an account to join the conversation.
I thought that these things are included ...
Please Log in or Create an account to join the conversation.
this idea that you need to change the EPP direction to read or write. This only makes sense
if you are emulating EPP port hardware on a normal (PS2) type parallel port, EPP hardware does
all direction control and handshaking in hardware so no explicit direction change is needed.
Data or address read or writes with a working EPP parallel port are simply
inb and outb instructions to the proper addresses (assuming 8 bit access)
Please Log in or Create an account to join the conversation.
I am using the foloowing:
plasturo@linux-CNC:~/linuxcnc-dev/src$ sudo lspci -vv
01:00.2 Parallel controller: NetMos Technology Device 9912 (prog-if 03)
Subsystem: Device a000:2000
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin C routed to IRQ 11
Region 0: I/O ports at e010 [size=8]
Region 1: I/O ports at e000 [size=8]
Region 2: Memory at fea01000 (32-bit, non-prefetchable) [size=4K]
Region 5: Memory at fea00000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [78] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [80] Express (v1) Legacy Endpoint, MSI 00
DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <1us, L1 <2us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
LnkCap: Port #1, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 <64ns, L1 unlimited
ClockPM+ Suprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
Capabilities: [100] Advanced Error Reporting <?>
I use the ioaddress 0xe010.
Is there anybody who knows about this parallel-port adapter?
bye,
Plasturo
Please Log in or Create an account to join the conversation.