RaspberryPi 4 + Mesa 7c81: need help w/ p2 and p7
- llamatrails
- Offline
- Junior Member
-
Less
More
- Posts: 20
- Thank you received: 1
09 Jun 2021 22:23 #211645
by llamatrails
RaspberryPi 4 + Mesa 7c81: need help w/ p2 and p7 was created 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:
Here is the mesaflash --readhmid output:
My entries in the 7c81.hal file:
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:
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:
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:
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 or Create an account to join the conversation.
- PCW
-
- Offline
- Moderator
-
Less
More
- Posts: 18541
- Thank you received: 5090
09 Jun 2021 22:56 #211651
by PCW
Replied by PCW on topic RaspberryPi 4 + Mesa 7c81: need help w/ p2 and p7
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)
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 or Create an account to join the conversation.
- llamatrails
- Offline
- Junior Member
-
Less
More
- Posts: 20
- Thank you received: 1
10 Jun 2021 00:23 #211660
by llamatrails
Replied by llamatrails on topic RaspberryPi 4 + Mesa 7c81: need help w/ p2 and p7
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.
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 or Create an account to join the conversation.
- llamatrails
- Offline
- Junior Member
-
Less
More
- Posts: 20
- Thank you received: 1
10 Jun 2021 22:18 #211744
by llamatrails
Replied by llamatrails on topic RaspberryPi 4 + Mesa 7c81: need help w/ p2 and p7
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-)
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 or Create an account to join the conversation.
Moderators: PCW, jmelson
Time to create page: 0.093 seconds