RaspberryPi 4 + Mesa 7c81: need help w/ p2 and p7

More
5 years 4 months ago #211645 by llamatrails
I'm moving my gantry cnc from a 32bit computer to a RaspberryPi 4 4GB 64bit computer. There is a Gecko G540 connecting the two for the steppers, a BOB for the homing switches, and everything has been working.

I set up the 7c81, loaded the G540X2 configuration with mesaflash, used pncconf for the initial configuration with manual mods afterwards, and have no problem with the steppers, probe, and spindle control which are all connected on P1 to the G540.

The BOB on P2 or P7 with the homing switches is where I'm having issues. Previously, I had no problems with my home switches set to NO and sending ground when closed.

Tried the same with the 7c81 and no luck. I've tried with the 7c81 set to default of P2 or P7 set to pullup, changed them to pulldown, even tried to send 5vdc into the 7c81 instead of ground.

My testing has been by starting linuxcnc (axis), and then running the HAL meter. I can see the pin toggle for the probe-in, which is on the G540, but nothing changes when I try on the P2 or P7 inputs. I have pulled the BOB out and tried to ground the P2 or P7 pins directly on the 7c81 DB25 cable adapters.

So, what am I missing here?
Should I configure the 7c81 to send ground from the home switches, pullup or pulldown?
Should the 7c81.hal for P7 be configured for [HMOT](CARD0).gpio.040.in or [HMOT](CARD0).gpio.040.in_not ?

Appreciate any ideas,
Rick


Here is the console output from linuxcnc:
Code:
pi@raspi4:~/linuxcnc/configs/7c81 $ linuxcnc 7c81.ini LINUXCNC - 2.9.0~pre0 Machine configuration directory is '/home/pi/linuxcnc/configs/7c81' Machine configuration file is '7c81.ini.expanded' Starting LinuxCNC... Found file(REL): ./7c81.hal Note: Using POSIX realtime trivkins: coordinates:XXYZ Joint 0 ==> Axis X Joint 1 ==> Axis X Joint 2 ==> Axis Y Joint 3 ==> Axis Z trivkins: Recommend: kinstype=both hm2: loading Mesa HostMot2 driver version 0.15 hm2/hm2_7c81.0: Low Level init 0.15 hm2/hm2_7c81.0: Smart Serial Firmware Version 43 hm2/hm2_7c81.0: 57 I/O Pins used: hm2/hm2_7c81.0: IO Pin 000 (P1-01/DB25-01): IOPort hm2/hm2_7c81.0: IO Pin 001 (P1-02/DB25-14): PWMGen #0, pin Out0 (PWM or Up) (Output) hm2/hm2_7c81.0: IO Pin 002 (P1-03/DB25-02): StepGen #0, pin Step (Output) hm2/hm2_7c81.0: IO Pin 003 (P1-04/DB25-15): IOPort hm2/hm2_7c81.0: IO Pin 004 (P1-05/DB25-03): StepGen #0, pin Direction (Output) hm2/hm2_7c81.0: IO Pin 005 (P1-06/DB25-16): IOPort hm2/hm2_7c81.0: IO Pin 006 (P1-07/DB25-04): StepGen #1, pin Step (Output) hm2/hm2_7c81.0: IO Pin 007 (P1-08/DB25-17): IOPort hm2/hm2_7c81.0: IO Pin 008 (P1-09/DB25-05): StepGen #1, pin Direction (Output) hm2/hm2_7c81.0: IO Pin 009 (P1-11/DB25-06): StepGen #2, pin Step (Output) hm2/hm2_7c81.0: IO Pin 010 (P1-13/DB25-07): StepGen #2, pin Direction (Output) hm2/hm2_7c81.0: IO Pin 011 (P1-15/DB25-08): StepGen #3, pin Step (Output) hm2/hm2_7c81.0: IO Pin 012 (P1-17/DB25-09): StepGen #3, pin Direction (Output) hm2/hm2_7c81.0: IO Pin 013 (P1-19/DB25-10): IOPort hm2/hm2_7c81.0: IO Pin 014 (P1-21/DB25-11): IOPort hm2/hm2_7c81.0: IO Pin 015 (P1-23/DB25-12): IOPort hm2/hm2_7c81.0: IO Pin 016 (P1-25/DB25-13): IOPort hm2/hm2_7c81.0: IO Pin 017 (J5-TX0): IOPort hm2/hm2_7c81.0: IO Pin 018 (J6-TX1): IOPort hm2/hm2_7c81.0: IO Pin 019 (P2-01/DB25-01): IOPort hm2/hm2_7c81.0: IO Pin 020 (P2-02/DB25-14): IOPort hm2/hm2_7c81.0: IO Pin 021 (P2-03/DB25-02): IOPort hm2/hm2_7c81.0: IO Pin 022 (P2-04/DB25-15): IOPort hm2/hm2_7c81.0: IO Pin 023 (P2-05/DB25-03): IOPort hm2/hm2_7c81.0: IO Pin 024 (P2-06/DB25-16): IOPort hm2/hm2_7c81.0: IO Pin 025 (P2-07/DB25-04): IOPort hm2/hm2_7c81.0: IO Pin 026 (P2-08/DB25-17): IOPort hm2/hm2_7c81.0: IO Pin 027 (P2-09/DB25-05): IOPort hm2/hm2_7c81.0: IO Pin 028 (P2-11/DB25-06): IOPort hm2/hm2_7c81.0: IO Pin 029 (P2-13/DB25-07): IOPort hm2/hm2_7c81.0: IO Pin 030 (P2-15/DB25-08): IOPort hm2/hm2_7c81.0: IO Pin 031 (P2-17/DB25-09): IOPort hm2/hm2_7c81.0: IO Pin 032 (P2-19/DB25-10): IOPort hm2/hm2_7c81.0: IO Pin 033 (P2-21/DB25-11): IOPort hm2/hm2_7c81.0: IO Pin 034 (P2-23/DB25-12): IOPort hm2/hm2_7c81.0: IO Pin 035 (P2-25/DB25-13): IOPort hm2/hm2_7c81.0: IO Pin 036 (J5-TXEN0): IOPort hm2/hm2_7c81.0: IO Pin 037 (J6-TXEN1): IOPort hm2/hm2_7c81.0: IO Pin 038 (P7-01/DB25-01): IOPort hm2/hm2_7c81.0: IO Pin 039 (P7-02/DB25-14): IOPort hm2/hm2_7c81.0: IO Pin 040 (P7-03/DB25-02): IOPort hm2/hm2_7c81.0: IO Pin 041 (P7-04/DB25-15): IOPort hm2/hm2_7c81.0: IO Pin 042 (P7-05/DB25-03): IOPort hm2/hm2_7c81.0: IO Pin 043 (P7-06/DB25-16): IOPort hm2/hm2_7c81.0: IO Pin 044 (P7-07/DB25-04): IOPort hm2/hm2_7c81.0: IO Pin 045 (P7-08/DB25-17): IOPort hm2/hm2_7c81.0: IO Pin 046 (P7-09/DB25-05): IOPort hm2/hm2_7c81.0: IO Pin 047 (P7-11/DB25-06): IOPort hm2/hm2_7c81.0: IO Pin 048 (P7-13/DB25-07): IOPort hm2/hm2_7c81.0: IO Pin 049 (P7-15/DB25-08): IOPort hm2/hm2_7c81.0: IO Pin 050 (P7-17/DB25-09): IOPort hm2/hm2_7c81.0: IO Pin 051 (P7-19/DB25-10): IOPort hm2/hm2_7c81.0: IO Pin 052 (P7-21/DB25-11): IOPort hm2/hm2_7c81.0: IO Pin 053 (P7-23/DB25-12): IOPort hm2/hm2_7c81.0: IO Pin 054 (P7-25/DB25-13): IOPort hm2/hm2_7c81.0: IO Pin 055 (P5-RX0): IOPort hm2/hm2_7c81.0: IO Pin 056 (P6-RX1): IOPort hm2/hm2_7c81.0: registered Found file(REL): ./custom.hal note: MAXV max: 0.200 units/sec 12.000 units/min note: LJOG max: 0.200 units/sec 12.000 units/min note: LJOG default: 0.083 units/sec 5.000 units/min Warning: Forward kinematics must handle duplicate coordinate letters:xx Note: Individual axis homing is not currently supported for KINEMATICS_IDENTITY with duplicate axis letter <X> note: jog_order='XYZ' note: jog_invert=set([]) Shutting down and cleaning up LinuxCNC... Running HAL shutdown script task: 864 cycles, min=0.000025, max=0.023893, avg=0.009997, 0 latency excursions (> 10x expected cycle time of 0.010000s) hm2: unloading Note: Using POSIX realtime pi@raspi4:~/linuxcnc/configs/7c81 $


Here is the mesaflash --readhmid output:
Code:
pi@raspi4:~ $ mesaflash --device 7C81 --spi --addr /dev/spidev0.0 --readhmid unable to set bpw32, fallback to bpw8 Configuration Name: HOSTMOT2 General configuration information: BoardName : MESA7C81 FPGA Size: 9 KGates FPGA Pins: 144 Number of IO Ports: 3 Width of one I/O port: 19 Clock Low frequency: 100.0000 MHz Clock High frequency: 200.0000 MHz IDROM Type: 3 Instance Stride 0: 4 Instance Stride 1: 64 Register Stride 0: 256 Register Stride 1: 256 Modules in configuration: Module: DPLL There are 1 of DPLL in configuration Version: 0 Registers: 7 BaseAddress: 7000 ClockFrequency: 100.000 MHz Register Stride: 256 bytes Instance Stride: 4 bytes Module: WatchDog There are 1 of WatchDog in configuration Version: 0 Registers: 3 BaseAddress: 0C00 ClockFrequency: 100.000 MHz Register Stride: 256 bytes Instance Stride: 4 bytes Module: IOPort There are 3 of IOPort in configuration Version: 0 Registers: 5 BaseAddress: 1000 ClockFrequency: 100.000 MHz Register Stride: 256 bytes Instance Stride: 4 bytes Module: QCount There are 2 of QCount in configuration Version: 2 Registers: 5 BaseAddress: 3000 ClockFrequency: 100.000 MHz Register Stride: 256 bytes Instance Stride: 4 bytes Module: SSerial There are 1 of SSerial in configuration Version: 0 Registers: 6 BaseAddress: 5B00 ClockFrequency: 100.000 MHz Register Stride: 256 bytes Instance Stride: 64 bytes Module: StepGen There are 10 of StepGen in configuration Version: 2 Registers: 10 BaseAddress: 2000 ClockFrequency: 100.000 MHz Register Stride: 256 bytes Instance Stride: 4 bytes Module: PWM There are 2 of PWM in configuration Version: 0 Registers: 5 BaseAddress: 4100 ClockFrequency: 200.000 MHz Register Stride: 256 bytes Instance Stride: 4 bytes Module: LED There are 1 of LED in configuration Version: 0 Registers: 1 BaseAddress: 0200 ClockFrequency: 100.000 MHz Register Stride: 256 bytes Instance Stride: 4 bytes Configuration pin-out: IO Connections for P1+Serial Pin# I/O Pri. func Sec. func Chan Pin func Pin Dir P1-01/DB25-01 0 IOPort None P1-02/DB25-14 1 IOPort PWM 0 PWM (Out) P1-03/DB25-02 2 IOPort StepGen 0 Step/Table1 (Out) P1-04/DB25-15 3 IOPort None P1-05/DB25-03 4 IOPort StepGen 0 Dir/Table2 (Out) P1-06/DB25-16 5 IOPort StepGen 4 Step/Table1 (Out) P1-07/DB25-04 6 IOPort StepGen 1 Step/Table1 (Out) P1-08/DB25-17 7 IOPort None P1-09/DB25-05 8 IOPort StepGen 1 Dir/Table2 (Out) P1-11/DB25-06 9 IOPort StepGen 2 Step/Table1 (Out) P1-13/DB25-07 10 IOPort StepGen 2 Dir/Table2 (Out) P1-15/DB25-08 11 IOPort StepGen 3 Step/Table1 (Out) P1-17/DB25-09 12 IOPort StepGen 3 Dir/Table2 (Out) P1-19/DB25-10 13 IOPort QCount 0 Quad-A (In) P1-21/DB25-11 14 IOPort QCount 0 Quad-B (In) P1-23/DB25-12 15 IOPort QCount 0 Quad-IDX (In) P1-25/DB25-13 16 IOPort None P5 3,6 17 IOPort SSerial 0 TXData0 (Out) P6 3,6 18 IOPort SSerial 0 TXData1 (Out) IO Connections for P2+Serial Pin# I/O Pri. func Sec. func Chan Pin func Pin Dir P2-01/DB25-01 19 IOPort None P2-02/DB25-14 20 IOPort PWM 1 PWM (Out) P2-03/DB25-02 21 IOPort StepGen 5 Step/Table1 (Out) P2-04/DB25-15 22 IOPort None P2-05/DB25-03 23 IOPort StepGen 5 Dir/Table2 (Out) P2-06/DB25-16 24 IOPort StepGen 9 Step/Table1 (Out) P2-07/DB25-04 25 IOPort StepGen 6 Step/Table1 (Out) P2-08/DB25-17 26 IOPort None P2-09/DB25-05 27 IOPort StepGen 6 Dir/Table2 (Out) P2-11/DB25-06 28 IOPort StepGen 7 Step/Table1 (Out) P2-13/DB25-07 29 IOPort StepGen 7 Dir/Table2 (Out) P2-15/DB25-08 30 IOPort StepGen 8 Step/Table1 (Out) P2-17/DB25-09 31 IOPort StepGen 8 Dir/Table2 (Out) P2-19/DB25-10 32 IOPort QCount 1 Quad-A (In) P2-21/DB25-11 33 IOPort QCount 1 Quad-B (In) P2-23/DB25-12 34 IOPort QCount 1 Quad-IDX (In) P2-25/DB25-13 35 IOPort None P5 TXEN 36 IOPort SSerial 0 TXEn0 (Out) P6 TXEN 37 IOPort SSerial 0 TXEn1 (Out) IO Connections for P7+Serial Pin# I/O Pri. func Sec. func Chan Pin func Pin Dir P7-01/DB25-01 38 IOPort None P7-02/DB25-14 39 IOPort None P7-03/DB25-02 40 IOPort None P7-04/DB25-15 41 IOPort None P7-05/DB25-03 42 IOPort None P7-06/DB25-16 43 IOPort None P7-07/DB25-04 44 IOPort None P7-08/DB25-17 45 IOPort None P7-09/DB25-05 46 IOPort None P7-11/DB25-06 47 IOPort None P7-13/DB25-07 48 IOPort None P7-15/DB25-08 49 IOPort None P7-17/DB25-09 50 IOPort None P7-19/DB25-10 51 IOPort None P7-21/DB25-11 52 IOPort None P7-23/DB25-12 53 IOPort None P7-25/DB25-13 54 IOPort None P5 1,2 55 IOPort SSerial 0 RXData0 (In) P6 1,2 56 IOPort SSerial 0 RXData1 (In) pi@raspi4:~ $


My entries in the 7c81.hal file:
Code:
7c81.hal: # external output signals # --- SPINDLE-ENABLE --- setp [HMOT](CARD0).gpio.007.is_output true net spindle-enable => [HMOT](CARD0).gpio.007.out # external input signals # --- PROBE-IN --- net probe-in <= [HMOT](CARD0).gpio.013.in_not # --- HOME-X --- #net home-x <= [HMOT](CARD0).gpio.021.in_not net home-x <= [HMOT](CARD0).gpio.040.in_not # --- HOME-X2 --- #net home-x2 <= [HMOT](CARD0).gpio.023.in_not net home-x2 <= [HMOT](CARD0).gpio.042.in_not # --- HOME-Y --- #net home-y <= [HMOT](CARD0).gpio.025.in_not net home-y <= [HMOT](CARD0).gpio.044.in_not # --- HOME-Z --- #net home-z <= [HMOT](CARD0).gpio.027.in_not net home-z <= [HMOT](CARD0).gpio.046.in_not

Please Log in to join the conversation.

More
5 years 4 months ago #211651 by PCW
Do the GPIO pins on P2 and P7 read high with a voltmeter (and read '1' with halmeter or halshow)
when pullups are enabled and they are in input mode?

(input mode meaning they are not an enabled special function and have not been set into output mode)

Please Log in to join the conversation.

More
5 years 4 months ago #211660 by llamatrails
Thanks for the quick reply.

From what I remember, halmeter would show either true or false based on if I have in_not in the hal file. I'll check tomorrow with a volt meter and report back.

Please Log in to join the conversation.

More
5 years 4 months ago #211744 by llamatrails
Have the issue worked out.

After a lot of checking pin voltages from directly on the 7c81, the IDE-DB25 adapter, the DB25-DB25 cable, and the BOB, it turns out to be a grounding problem. Something in the BOB is blocking the 7c81 ground on the last 9 pins of the DB25 cable from bonding with the BOB ground and everything else.

I pulled the DB25 cable from the BOB, and can toggle the pins in the halmeter by jumping DB25 (say) 25 to each of the active pins for my home switches.

Interestingly, the DB25 cable from P1 connected to the G540 works fine, I can toggle my probe with the same ground that I use for the home switches.

My BOB worked fine when connected to a parallel port on my older x86 computer, it passed the ground from the home switches when tripped.

I'll try a different BOB, at least now I know what is happening.

Thanks again for listening. 8-)

Please Log in to join the conversation.

Time to create page: 0.178 seconds
Powered by Kunena Forum