Mesa 7i90 in SPI mode

More
10 years 7 months ago #72049 by PCW
Replied by PCW on topic Mesa 7i90 in SPI mode
Yeah looks like the SPI driver and/or hardware has bolluxed up the 32 bit sends
(the hardware sends a burst of 32 clocks correctly but the data is busted)

Please Log in or Create an account to join the conversation.

More
10 years 7 months ago #72090 by kaklik
Replied by kaklik on topic Mesa 7i90 in SPI mode
Yes, I it is ODROID-C1 spi issue..

I borrowed the OROID-U3 and run the mesaflash uitility on it.. The result is here:


Please Log in or Create an account to join the conversation.

More
10 years 7 months ago #72318 by kaklik
Replied by kaklik on topic Mesa 7i90 in SPI mode
I have the first working 7i90 SPI setup. I have used the ODROID-U3 and VLT01A - MLAB voltage translator for adapt 7i90 to the ODROID's logic.



The 27 Ohm damping serial resistors are on the 7i90 translator' side covered by heat-shrink tube.
Code:
halrun halcmd: loadrt hostmot2 Note: Using POSIX non-realtime hm2: loading Mesa HostMot2 driver version 0.15 halcmd: loadrt hm2_spi spidev_path="/dev/spidev1.0" spidev_rate=500 probing device /dev/spidev1.0 with rate 500000 Hz hm2/hm2_7i90.0: 72 I/O Pins used: hm2/hm2_7i90.0: IO Pin 000 (P1-01): StepGen #0, pin Step (Output) hm2/hm2_7i90.0: IO Pin 001 (P1-03): StepGen #0, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 002 (P1-05): StepGen #1, pin Step (Output) hm2/hm2_7i90.0: IO Pin 003 (P1-07): StepGen #1, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 004 (P1-09): Encoder #0, pin A (Input) hm2/hm2_7i90.0: IO Pin 005 (P1-11): Encoder #2, pin A (Input) hm2/hm2_7i90.0: IO Pin 006 (P1-13): Encoder #0, pin B (Input) hm2/hm2_7i90.0: IO Pin 007 (P1-15): Encoder #2, pin B (Input) hm2/hm2_7i90.0: IO Pin 008 (P1-17): Encoder #0, pin Index (Input) hm2/hm2_7i90.0: IO Pin 009 (P1-19): Encoder #2, pin Index (Input) hm2/hm2_7i90.0: IO Pin 010 (P1-21): Encoder #1, pin A (Input) hm2/hm2_7i90.0: IO Pin 011 (P1-23): Encoder #3, pin A (Input) hm2/hm2_7i90.0: IO Pin 012 (P1-25): Encoder #1, pin B (Input) hm2/hm2_7i90.0: IO Pin 013 (P1-27): Encoder #3, pin B (Input) hm2/hm2_7i90.0: IO Pin 014 (P1-29): Encoder #1, pin Index (Input) hm2/hm2_7i90.0: IO Pin 015 (P1-31): Encoder #3, pin Index (Input) hm2/hm2_7i90.0: IO Pin 016 (P1-33): StepGen #2, pin Step (Output) hm2/hm2_7i90.0: IO Pin 017 (P1-35): StepGen #2, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 018 (P1-37): StepGen #3, pin Step (Output) hm2/hm2_7i90.0: IO Pin 019 (P1-39): StepGen #3, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 020 (P1-41): PWMGen #0, pin Out0 (PWM or Up) (Output) hm2/hm2_7i90.0: IO Pin 021 (P1-43): PWMGen #0, pin Out1 (Dir or Down) (Output) hm2/hm2_7i90.0: IO Pin 022 (P1-45): PWMGen #1, pin Out0 (PWM or Up) (Output) hm2/hm2_7i90.0: IO Pin 023 (P1-47): PWMGen #1, pin Out1 (Dir or Down) (Output)

Please Log in or Create an account to join the conversation.

More
10 years 7 months ago #72319 by kaklik
Replied by kaklik on topic Mesa 7i90 in SPI mode
I have the first working 7i90 SPI setup. I have used the ODROID-U3 and VLT01A - MLAB voltage translator for adapt 7i90 to the ODROID's logic.





The 27 Ohm damping serial resistors are on the 7i90 translator' side covered by heat-shrink tube.
Code:
halrun halcmd: loadrt hostmot2 Note: Using POSIX non-realtime hm2: loading Mesa HostMot2 driver version 0.15 halcmd: loadrt hm2_spi spidev_path="/dev/spidev1.0" spidev_rate=500 probing device /dev/spidev1.0 with rate 500000 Hz hm2/hm2_7i90.0: 72 I/O Pins used: hm2/hm2_7i90.0: IO Pin 000 (P1-01): StepGen #0, pin Step (Output) hm2/hm2_7i90.0: IO Pin 001 (P1-03): StepGen #0, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 002 (P1-05): StepGen #1, pin Step (Output) hm2/hm2_7i90.0: IO Pin 003 (P1-07): StepGen #1, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 004 (P1-09): Encoder #0, pin A (Input) hm2/hm2_7i90.0: IO Pin 005 (P1-11): Encoder #2, pin A (Input) hm2/hm2_7i90.0: IO Pin 006 (P1-13): Encoder #0, pin B (Input) hm2/hm2_7i90.0: IO Pin 007 (P1-15): Encoder #2, pin B (Input) hm2/hm2_7i90.0: IO Pin 008 (P1-17): Encoder #0, pin Index (Input) hm2/hm2_7i90.0: IO Pin 009 (P1-19): Encoder #2, pin Index (Input) hm2/hm2_7i90.0: IO Pin 010 (P1-21): Encoder #1, pin A (Input) hm2/hm2_7i90.0: IO Pin 011 (P1-23): Encoder #3, pin A (Input) hm2/hm2_7i90.0: IO Pin 012 (P1-25): Encoder #1, pin B (Input) hm2/hm2_7i90.0: IO Pin 013 (P1-27): Encoder #3, pin B (Input) hm2/hm2_7i90.0: IO Pin 014 (P1-29): Encoder #1, pin Index (Input) hm2/hm2_7i90.0: IO Pin 015 (P1-31): Encoder #3, pin Index (Input) hm2/hm2_7i90.0: IO Pin 016 (P1-33): StepGen #2, pin Step (Output) hm2/hm2_7i90.0: IO Pin 017 (P1-35): StepGen #2, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 018 (P1-37): StepGen #3, pin Step (Output) hm2/hm2_7i90.0: IO Pin 019 (P1-39): StepGen #3, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 020 (P1-41): PWMGen #0, pin Out0 (PWM or Up) (Output) hm2/hm2_7i90.0: IO Pin 021 (P1-43): PWMGen #0, pin Out1 (Dir or Down) (Output) hm2/hm2_7i90.0: IO Pin 022 (P1-45): PWMGen #1, pin Out0 (PWM or Up) (Output) hm2/hm2_7i90.0: IO Pin 023 (P1-47): PWMGen #1, pin Out1 (Dir or Down) (Output)

Please Log in or Create an account to join the conversation.

  • jepler
  • Administrator
  • Administrator
More
10 years 7 months ago #72340 by jepler
Replied by jepler on topic Mesa 7i90 in SPI mode
Great! As far as the C1 is concerned, if you find a solution within linuxcnc that doesn't harm functionality on the U3, please open a pull request on github.

Please Log in or Create an account to join the conversation.

More
10 years 3 weeks ago - 10 years 3 weeks ago #81304 by jtheath
Replied by jtheath on topic Mesa 7i90 in SPI mode
Uncertain whether to open a new topic, different board but SPI integration challenge.

I am working on integration with RPi3. I tried the hm2_rpspi option without success. I created a new pinout for dual MX4660 configuration and first verified the new .bit file with an EPP image. Loaded the SPI image and discovered mesaflash didn't support the RPi. The challenge is the RPi spidev driver only supports 8-bit word transfers. Long story short I added code to recognize the SPI 32-bit word set failure, fallback to 8-bit transfers and do the necessary byte reordering. Good news is I have a functioning mesaflash utility (at least for readhmid).

I then ported the mesaflash logic to hm2_spi.c. Some success but consistent failure after the board is discovered. Just looking for guidance as to what I missed.

I tracked the error message down into tram.c and found the source of the trouble is the hm2->llio->send_queued_writes(hm2->llio) call from hm2_finish_write() ends up invoking hm2_spi.c::do_pending() with (nbuf == 0) so we get an immediate return 0 and the failure message.

Thank you, Joe

Here's the console output capturing stdin & stderr:
Code:
LINUXCNC - 2.8.0~pre1 Machine configuration directory is '/home/pi/linuxcnc-dev/configs/by_interface/mesa/hm2-stepper' Machine configuration file is '7i90.ini' Starting LinuxCNC... Found file(REL): ./hm2-stepper.hal Note: Using POSIX realtime hm2: loading Mesa HostMot2 driver version 0.15 probe 24000000 fall back to 8-bit xfer hm2/hm2_7i90.0: 72 I/O Pins used: hm2/hm2_7i90.0: IO Pin 000 (P1-01): IOPort hm2/hm2_7i90.0: IO Pin 001 (P1-03): StepGen #0, pin Step (Output) hm2/hm2_7i90.0: IO Pin 002 (P1-05): StepGen #0, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 003 (P1-07): StepGen #1, pin Step (Output) hm2/hm2_7i90.0: IO Pin 004 (P1-09): StepGen #1, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 005 (P1-11): StepGen #2, pin Step (Output) hm2/hm2_7i90.0: IO Pin 006 (P1-13): StepGen #2, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 007 (P1-15): StepGen #3, pin Step (Output) hm2/hm2_7i90.0: IO Pin 008 (P1-17): StepGen #3, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 009 (P1-19): IOPort hm2/hm2_7i90.0: IO Pin 010 (P1-21): IOPort hm2/hm2_7i90.0: IO Pin 011 (P1-23): IOPort hm2/hm2_7i90.0: IO Pin 012 (P1-25): IOPort hm2/hm2_7i90.0: IO Pin 013 (P1-27): PWMGen #0, pin Out0 (PWM or Up) (Output) hm2/hm2_7i90.0: IO Pin 014 (P1-29): IOPort hm2/hm2_7i90.0: IO Pin 015 (P1-31): StepGen #4, pin Step (Output) hm2/hm2_7i90.0: IO Pin 016 (P1-33): IOPort hm2/hm2_7i90.0: IO Pin 017 (P1-35): StepGen #5, pin Step (Output) hm2/hm2_7i90.0: IO Pin 018 (P1-37): StepGen #5, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 019 (P1-39): StepGen #6, pin Step (Output) hm2/hm2_7i90.0: IO Pin 020 (P1-41): StepGen #6, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 021 (P1-43): IOPort hm2/hm2_7i90.0: IO Pin 022 (P1-45): IOPort hm2/hm2_7i90.0: IO Pin 023 (P1-47): PWMGen #1, pin Out0 (PWM or Up) (Output) hm2/hm2_7i90.0: IO Pin 024 (P2-01): IOPort hm2/hm2_7i90.0: IO Pin 025 (P2-03): StepGen #7, pin Step (Output) hm2/hm2_7i90.0: IO Pin 026 (P2-05): StepGen #7, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 027 (P2-07): StepGen #8, pin Step (Output) hm2/hm2_7i90.0: IO Pin 028 (P2-09): StepGen #8, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 029 (P2-11): StepGen #9, pin Step (Output) hm2/hm2_7i90.0: IO Pin 030 (P2-13): StepGen #9, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 031 (P2-15): StepGen #10, pin Step (Output) hm2/hm2_7i90.0: IO Pin 032 (P2-17): StepGen #10, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 033 (P2-19): IOPort hm2/hm2_7i90.0: IO Pin 034 (P2-21): IOPort hm2/hm2_7i90.0: IO Pin 035 (P2-23): IOPort hm2/hm2_7i90.0: IO Pin 036 (P2-25): IOPort hm2/hm2_7i90.0: IO Pin 037 (P2-27): PWMGen #2, pin Out0 (PWM or Up) (Output) hm2/hm2_7i90.0: IO Pin 038 (P2-29): IOPort hm2/hm2_7i90.0: IO Pin 039 (P2-31): StepGen #11, pin Step (Output) hm2/hm2_7i90.0: IO Pin 040 (P2-33): IOPort hm2/hm2_7i90.0: IO Pin 041 (P2-35): StepGen #12, pin Step (Output) hm2/hm2_7i90.0: IO Pin 042 (P2-37): StepGen #12, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 043 (P2-39): StepGen #13, pin Step (Output) hm2/hm2_7i90.0: IO Pin 044 (P2-41): StepGen #13, pin Direction (Output) hm2/hm2_7i90.0: IO Pin 045 (P2-43): IOPort hm2/hm2_7i90.0: IO Pin 046 (P2-45): IOPort hm2/hm2_7i90.0: IO Pin 047 (P2-47): PWMGen #3, pin Out0 (PWM or Up) (Output) hm2/hm2_7i90.0: IO Pin 048 (P3-01): IOPort hm2/hm2_7i90.0: IO Pin 049 (P3-03): IOPort hm2/hm2_7i90.0: IO Pin 050 (P3-05): IOPort hm2/hm2_7i90.0: IO Pin 051 (P3-07): IOPort hm2/hm2_7i90.0: IO Pin 052 (P3-09): IOPort hm2/hm2_7i90.0: IO Pin 053 (P3-11): IOPort hm2/hm2_7i90.0: IO Pin 054 (P3-13): IOPort hm2/hm2_7i90.0: IO Pin 055 (P3-15): IOPort hm2/hm2_7i90.0: IO Pin 056 (P3-17): IOPort hm2/hm2_7i90.0: IO Pin 057 (P3-19): IOPort hm2/hm2_7i90.0: IO Pin 058 (P3-21): IOPort hm2/hm2_7i90.0: IO Pin 059 (P3-23): IOPort hm2/hm2_7i90.0: IO Pin 060 (P3-25): IOPort hm2/hm2_7i90.0: IO Pin 061 (P3-27): IOPort hm2/hm2_7i90.0: IO Pin 062 (P3-29): IOPort hm2/hm2_7i90.0: IO Pin 063 (P3-31): IOPort hm2/hm2_7i90.0: IO Pin 064 (P3-33): IOPort hm2/hm2_7i90.0: IO Pin 065 (P3-35): IOPort hm2/hm2_7i90.0: IO Pin 066 (P3-37): IOPort hm2/hm2_7i90.0: IO Pinhm2/hm2_7i90.0: error finishing write! iter=2) Unexpected realtime delay on task 0 with period 1000000 This Message will only display once per session. Run the Latency Test and resolve before continuing. Missing <max linear speed> specifier See the 'INI Configuration' documents Shutting down and cleaning up LinuxCNC... task: 173 cycles, min=0.000033, max=0.030282, avg=0.008540, 0 latency excursions (> 10x expected cycle time of 0.010000s) hm2/hm2_7i90.0: error finishing write! iter=2) Unexpected realtime delay on task 0 with period 1000000 This Message will only display once per session. Run the Latency Test and resolve before continuing. 067 (P3-39): IOPort hm2/hm2_7i90.0: IO Pin 068 (P3-41): IOPort hm2/hm2_7i90.0: IO Pin 069 (P3-43): IOPort hm2/hm2_7i90.0: IO Pin 070 (P3-45): IOPort hm2/hm2_7i90.0: IO Pin 071 (P3-47): IOPort hm2/hm2_7i90.0: registered nothing to process!!! hm2: unloading Note: Using POSIX realtime
Last edit: 10 years 3 weeks ago by andypugh. Reason: Code tags

Please Log in or Create an account to join the conversation.

Moderators: PCW, jmelson
Time to create page: 0.129 seconds
Powered by Kunena Forum