Thanks, Peter. I have read many of your prior posts wrt Mesa cards.xxx
Here's an idea about what I'm trying to get at: practical methods a stepconf person can use to home in on what's needed. [Followers, BEWARE throwing the baby out with the bathwater with a careless grep; for example, I did a "grep -v 25" thinking to eliminate lines with that I/O#, and lost everything, because they all had "5i25". Einstein reportedly said, "Simplify as much as possible, but never more than that."]
There are 7, or 5, questions embedded in here,
1. Is the approach following reasonable?
2. If I don't get a perfect match, how to get one?
3. After getting and flashing a perfect match, how to assign signals to pins?
(Stuff that stepconf just seemed to "do" for me.)
I've unzipped the 5i25[support software].zip file from
Mesanet.com
.
In a terminal, based on tommylight's post, I changed into the top 5i25/ directory and hunted for the PIN files:
% cd 5i25/
% find . -iname \*pin
[many many]
% cd configs/hostmot2/
because that's where all the PIN files live
% ls *pin
[the same many]
[UPDATE: you'll note I changed the grep method below to eliminate search '7iNN' daughter cards. If I'd done that here, none of the
TX/RXData lines would have shown, on the files containing:
15 3 IOPort None
[/UPDATE]
Now, I know from my schematic that my controller card wants pin 15 to be "Emergency stop". From what I see in the candidate files, I conclude that I am not interested in any firmwares that have pin 15 as, say, "Step, Dir, PWM" so I can eliminate those:
% for i in *pin; do grep "^15 " $i | grep -v Step | grep -v Dir | grep -v PWM; done
15 3 IOPort None
15 3 IOPort SSerial 1 RXData4 (In)
15 3 IOPort SSerial 0 RXData4 (In)
15 3 IOPort SSerial 0 TXData2 (Out)
15 3 IOPort SSerial 0 TXData5 (Out)
15 3 IOPort SSerial 0 TXData4 (Out)
[UPDATE: as a result of the search eliminating TX/RXData lines, questions 4, 5, and 6 reduce to:
4a. Why is there no (In) or (Out) associated with:
15 3 IOPort None?
[/UPDATE]
This leaves me with:
4. Do I want a secondary of None, or SSerial?
5. If SSerial, do I want channel 1 or 0, RXData or TXData, Data2, or 4 or 5?
I'll guess that I need an (Out) Pin-dir, reasoning that the machine already has a hardware, manual E-stop switch, and this provides a way for an operator to E-stop from the software GUI.
That reduces me to:
6. TXData2, 4 or 5?
Moving on to something I think I understand better, simple limits, my controller expects pins 11,12,13 to be "X-,Y-,Z-lim", presumably inputs to the Mesa to indicate limits/homes have been hit. I grep again, eliminating "7iNN" cards and IOPorts over 16 as non-P3:
% grep "^11 " *pin | grep -v 7i | grep -v "31 IOPort" [NB not clever but 31 was the only one I saw].
This leaves:
5i25_5ABOBx2.pin:11 14 IOPort QCount 0 Quad-A (In)
5i25_c11gx2.pin:11 14 IOPort QCount 0 Quad-B (In)
5i25_c11x2.pin:11 14 IOPort QCount 0 Quad-B (In)
5i25_dmmbob1x2.pin:11 14 IOPort QCount 0 Quad-A (In)
5i25_g540_enc.pin:11 14 IOPort QCount 0 Quad-B (In)
5i25_g540x2.pin:11 14 IOPort QCount 0 Quad-B (In)
5i25_hdbb2.pin:11 14 IOPort QCount 0 Quad-B (In)
5i25_mx3660x2.pin:11 14 IOPort QCount 0 Quad-B (In)
5i25_prob_rfx2.pin:11 14 IOPort QCount 0 Quad-A (In)
5i25_r990x2.pin:11 14 IOPort QCount 0 Quad-A (In)
A veritable handful, and my 3 "suspect" firmwares are still on the list,
7. But what's QCount? And do I want Quad-A, Quad-B? or is this the wrong track?
My next search would be for a PIN file that has step/dirs on the pin-pairs my controller expects them; e.g, 2/3, 4/5, 6/7:
% grep "^ 2 " 5i25_[a-z]*pin|grep -v "19 IO"|grep " Step "
5i25_c11gx2.pin: 2 2 IOPort StepGen 0 Step (Out)
5i25_c11x2.pin: 2 2 IOPort StepGen 0 Step (Out)
5i25_g540_7i76.pin: 2 2 IOPort StepGen 0 Step (Out)
5i25_g540_enc.pin: 2 2 IOPort StepGen 0 Step (Out)
5i25_g540x2.pin: 2 2 IOPort StepGen 0 Step (Out)
5i25_hdbb2.pin: 2 2 IOPort StepGen 0 Step (Out)
5i25_mx3660x2.pin: 2 2 IOPort StepGen 0 Step (Out)
5i25_prob_rfx2.pin: 2 2 IOPort StepGen 0 Step (Out)
% grep "^ 3 " 5i25_[a-z]*pin|grep -v 21|grep " Dir "
5i25_c11gx2.pin: 3 4 IOPort StepGen 0 Dir (Out)
5i25_c11x2.pin: 3 4 IOPort StepGen 0 Dir (Out)
5i25_g540_7i76.pin: 3 4 IOPort StepGen 0 Dir (Out)
5i25_g540_enc.pin: 3 4 IOPort StepGen 0 Dir (Out)
5i25_g540x2.pin: 3 4 IOPort StepGen 0 Dir (Out)
5i25_hdbb2.pin: 3 4 IOPort StepGen 0 Dir (Out)
5i25_mx3660x2.pin: 3 4 IOPort StepGen 0 Dir (Out)
5i25_prob_rfx2.pin: 3 4 IOPort StepGen 0 Dir (Out)
Similarly for the other step/dir pairs.
% grep "^ 4 " 5i25_[a-z]*pin|grep -v "23 IOP"|grep " Step "
% grep "^ 5 " 5i25_[a-z]*pin|grep -v "25 IOP"|grep " Dir "
% grep "^ 6 " 5i25_[a-z]*pin|grep -v "26 IOP"|grep " Step "
% grep "^ 7 " 5i25_[a-z]*pin|grep -v "27 IOP"|grep " Dir "
and the remaining pins I want.
At the end of all the searches, if I find one or more PIN files at the intersection of the sets of positive results, any of those should work fine to flash the 5i25 with. Except that, I'm reminded that I still don't know (Qcount, Channel, None, SSerial, etc.) WHAT I'm talking about. (I feel like Lou Costello.)