macsonny Posted March 21, 2022 Share Posted March 21, 2022 27 minutes ago, xrbrevin said: yes the 1050 uses 40 tracks, sectors shouldnt be a factor for this purpose tho i need to re-read the WDC279x datasheet to fathom the DIRC characteristics but if we use the RIOT method then its only out of curiosity at this stage. this might be the pulldown resistors doing their job. the STEP assertions from the RIOT are high and override the pulldown. when the assertion stops, the pulldown takes over again. i think the high state should only swap over when there is a direction change? did the track display work for you then? i havent had chance to dig a drive out yet here is a pic of my breadboard. i can supply the 2x diodes with a 5v and the display will go up 1 or down 1. if i give 5v to the green wire the display goes to zero. i'll try and video it but im not an octopus! I've attached a video of a floppy booting from cold boot on my drive. The heads move in one direction from track 1 inwards as expected whilst loading the floppy. Ignore the track count in the video (clearly wrong) and look at the the PIN 2 and PIN 3 toggle which toggles each time the head moves to the next track during loading. See what I mean? See what I mean by confusing logic now? Please ignore the scratching sound in the background - it's an old rubber belt on the drive that needs replacing and waiting for it to arrive from the US. IMG_7141.mov Quote Link to comment Share on other sites More sharing options...
macsonny Posted March 21, 2022 Share Posted March 21, 2022 (edited) 8 minutes ago, xrbrevin said: this vid demonstrates the design responds to 5v inputs on the 3 wires: 1-up, 1-down, 1-zero operations.avi Aaaahhh, so the track count is really when either the up or the down is high and then it's an add or subtract to the track counter right? So the code would be in my case: IF PIN2=HIGH then TRACKCOUNT=TRACKCOUNT+1 IF PIN3=HIGH then TRACKCOUNT=TRACKCOUND-1 Right? But that won't work for me as PIN2 is HIGH for one track and the the next track PIN3 is HIGH so it's 1 track forward 1 track backwards in count? Edited March 21, 2022 by macsonny Update Quote Link to comment Share on other sites More sharing options...
macsonny Posted March 21, 2022 Share Posted March 21, 2022 Here's a video where you can see the two PINs toggling between HIGH based on each track as you can hear the track pause. IMG_7143.mov Quote Link to comment Share on other sites More sharing options...
xrbrevin Posted March 21, 2022 Author Share Posted March 21, 2022 looks like its counting upwards in binary Quote Link to comment Share on other sites More sharing options...
xrbrevin Posted March 21, 2022 Author Share Posted March 21, 2022 im assembling my RIOT version but i wrote off the IC socket trying a shortcut with pinned wires ? installing new socket now... Quote Link to comment Share on other sites More sharing options...
macsonny Posted March 21, 2022 Share Posted March 21, 2022 41 minutes ago, xrbrevin said: looks like its counting upwards in binary So how do I deal with that? Quote Link to comment Share on other sites More sharing options...
TGB1718 Posted March 21, 2022 Share Posted March 21, 2022 (edited) 5 hours ago, macsonny said: Do you have this in JAVA? Sorry, Java and Python, 2 languages I always avoided Edit: as this was on an Arduino, maybe converting to Python shouldn't be too difficult as it seems to be the well supported. Edited March 21, 2022 by TGB1718 Quote Link to comment Share on other sites More sharing options...
xrbrevin Posted March 21, 2022 Author Share Posted March 21, 2022 (edited) 1 hour ago, macsonny said: So how do I deal with that? im not sure, is it something to do with how the LCD processes numbers? here is my installed attempt: it zeroes, counts the first track and the second flashes up for a moment but then it is unstable. if i run it without the pin 19/D3 wire connected, it counts up when moving in both directions. its possible ive picked the wrong outputs from the RIOT as there are 4 and i only need 2. i will research these NS01-4 lines and see if i can work it out installed.avi Edited March 21, 2022 by xrbrevin Quote Link to comment Share on other sites More sharing options...
+kheller2 Posted March 21, 2022 Share Posted March 21, 2022 2 hours ago, macsonny said: Aaaahhh, so the track count is really when either the up or the down is high and then it's an add or subtract to the track counter right? So the code would be in my case: IF PIN2=HIGH then TRACKCOUNT=TRACKCOUNT+1 IF PIN3=HIGH then TRACKCOUNT=TRACKCOUND-1 Right? But that won't work for me as PIN2 is HIGH for one track and the the next track PIN3 is HIGH so it's 1 track forward 1 track backwards in count? Half steps and a multiphase motor to contend with. Look at the 1050 source code. Quote Link to comment Share on other sites More sharing options...
xrbrevin Posted March 21, 2022 Author Share Posted March 21, 2022 14 hours ago, ijor said: The 1050 doesn't use the FDC step motor interface. You won't get anything from those pins. you are correct, im not getting anything on STEP nor DIRC on the FDC during operation. I heeded what you said but i still wanted to find out practically for myself ? do you think a modification of EPROM code could get them to mirror the stepper actions to serve this purpose? The datasheet states how they function but they must leave it to the users to decide whether they are used or not. I suppose Atari chose not to. i have modified the arduino code to suit the FDC-only design and it works properly on the breadboard but no dice on the 1050 due to the null outputs on the FDC pins 15 & 16. Curses! haha.. attached is the code for this in case it can be of use. so its back to the RIOT and U2/U3. there are 4x wires into U2/U3 and 4x wires out. im now wondering if the +/- logic is determined by combinations of these. time to find a stepper motor datasheet! TwoDigit7SegWorkingV2.ino Quote Link to comment Share on other sites More sharing options...
+kheller2 Posted March 21, 2022 Share Posted March 21, 2022 From the Alitrra Hardware manual: Port B PB7 Input SIO command 1 = asserted PB6 Input SIO data output (computer to device) inverted PB5 Output Stepper phase 1 0 = activated PB4 Output Stepper phase 2 0 = activated PB3 Output Stepper phase 3 0 = activated PB2 Output Stepper phase 4 0 = activated PB1 Input SIO ready 0 = ready PB0 Output SIO data input (device to computer)69 non-inverted Track stepping The read/write head in the 1050 is stepped between tracks by port B bits 2-5 like in the 810, but with some important differences. The outputs are pulled low instead of high to activate phases, only one phase is active at a time instead of two, and each change in phase steps by a half-track instead of a full track. In terms of values written to port B, a right shift steps inward to higher number tracks, and a left shift steps outward to lower numbered tracks. Track 0 sensor Oddly, the track 0 sensor is hooked up inverted so that the FDC senses a track 0 condition when the head is not on track 0 and vice versa. This is no issue for the FDC since its seek facilities are not used, but it does mean that the firmware has to interpret the Track 00 bit in FDC status oppositely from its intended interpretation. The track 0 sensor in the 1050 also activates for track 0.5 as well as track 0. 1 Quote Link to comment Share on other sites More sharing options...
ijor Posted March 21, 2022 Share Posted March 21, 2022 43 minutes ago, xrbrevin said: you are correct, im not getting anything on STEP nor DIRC on the FDC during operation. I heeded what you said but i still wanted to find out practically for myself ? That's perfectly understandable Quote do you think a modification of EPROM code could get them to mirror the stepper actions to serve this purpose? It is, of course, possible to modify the firmware to issue seek/step commands to the FDC, but it is not a good idea because this will increase the seek time. There is also the problem of the TRACK0 signal being inverted. Quote Link to comment Share on other sites More sharing options...
xrbrevin Posted March 21, 2022 Author Share Posted March 21, 2022 many thank @ijor that will save me going down a dead-end! initial thoughts: after reading the WD279x FDC datasheet it seemed relatively straightforward, i.e. dedicated FDC step pins + arduino code = track display. current realisation: the 1050 firmware stops these outputs from the FDC and enabling them is too detrimental. anyone know a good resource for understanding old style stepper motor logic? Quote Link to comment Share on other sites More sharing options...
xrbrevin Posted March 21, 2022 Author Share Posted March 21, 2022 3 hours ago, kheller2 said: Half steps and a multiphase motor to contend with. Look at the 1050 source code. i think half steps can be adjusted on a software level i just checked the RIOT datasheet and the 4 pins that output to control the stepper motor are universal, controlled by firmware. do you think the output logic for stepper in/out movements could be determined by looking at the source code? im struggling to find info on the old style steppers at the mo Quote Link to comment Share on other sites More sharing options...
+kheller2 Posted March 21, 2022 Share Posted March 21, 2022 6 hours ago, xrbrevin said: i think half steps can be adjusted on a software level i just checked the RIOT datasheet and the 4 pins that output to control the stepper motor are universal, controlled by firmware. do you think the output logic for stepper in/out movements could be determined by looking at the source code? im struggling to find info on the old style steppers at the mo It is possible to determine it. I'm not a phase expert, or even a novice. The 810 and 815 were similar. Googling four phase stepper motor returns a lot of results and and comes down to sequence of firings, and keeping track of them: A, A+B, B, B+C, C, C+D, D, D+A, repeat or reverse. But you can also get into discussions of how many coils, and so on. Stollen from here: http://www.hteck.ca/electronics/s-motor-tster/sm-tester.html Quote Link to comment Share on other sites More sharing options...
phaeron Posted March 22, 2022 Share Posted March 22, 2022 The 1050 only activates a single phase at a time instead of two adjacent phases like the 810. The easiest way to handle this is just to have a 16-entry table that converts from the 4-bit phase signals to an active phase index, convert both the previous and next phase code on each change to phase indices, then subtract the phase indices to get the step delta. It'll be +1/-3 for one direction and -1/+3 for the other, depending on the direction that the lone 0 bit for the active phase is moving. There's a small gotcha that the firmware will turn off all of the phases when not actively seeking or reading/writing, so transitions to and from the all-off state also have to be handled. 1 Quote Link to comment Share on other sites More sharing options...
xrbrevin Posted March 22, 2022 Author Share Posted March 22, 2022 i think this type of stepper motor has been superseded long ago as data is v.scarce. its all permanent magnets, 2x coils, unified coils which is not similar enough. the stage im at is that my arduino hardware and code work, i just have to find appropriate signals from the 1050 PCB and its components. maybe i can read the logic level signal in a motor phase and code the arduino to take the whole waveform as a single command? some breadboard trial and error might be useful here. ive ordered some of those spring plunger clips for connecting to IC legs in situ. itll make variations much easier than a stripdown, solder and rebuild! cleaner too alternative considerations (pipe dreams really..): rotary encoder attached to the stepper pulley degree sensor on stepper pulley an LED on each of the RIOT lines to U2 and U3 to observe logic signal behaviour during operation get a 'scope for the above instead Quote Link to comment Share on other sites More sharing options...
macsonny Posted March 22, 2022 Share Posted March 22, 2022 9 minutes ago, xrbrevin said: i think this type of stepper motor has been superseded long ago as data is v.scarce. its all permanent magnets, 2x coils, unified coils which is not similar enough. the stage im at is that my arduino hardware and code work, i just have to find appropriate signals from the 1050 PCB and its components. maybe i can read the logic level signal in a motor phase and code the arduino to take the whole waveform as a single command? some breadboard trial and error might be useful here. ive ordered some of those spring plunger clips for connecting to IC legs in situ. itll make variations much easier than a stripdown, solder and rebuild! cleaner too alternative considerations (pipe dreams really..): rotary encoder attached to the stepper pulley degree sensor on stepper pulley an LED on each of the RIOT lines to U2 and U3 to observe logic signal behaviour during operation get a 'scope for the above instead I like you are still thinking on a solution. I think getting read/write status and drive ID status is easy so will do that later. If you can work out how to get track status I’ll be super happy. I’ve noticed a number of 1050 drive photos with the mod showing track count real-time so it can be done. Just no one has printed instructions on how to do ? Quote Link to comment Share on other sites More sharing options...
xrbrevin Posted March 22, 2022 Author Share Posted March 22, 2022 the original happy mod and mega-speedy mod gave you track display but they added a lot of 'deep-rooted' circuitry to perform their other functions anyway. im trying to be as non-invasive as poss. the arduino code can give a fair bit of leeway to allow for the 'nuances' of circuit signals. im now thinking of using software code to refine / filter the signal into what can be used ? if only the FDC still outputted those 2 pins - it would be a done by now! Quote Link to comment Share on other sites More sharing options...
Nezgar Posted March 27, 2022 Share Posted March 27, 2022 On 3/21/2022 at 8:26 PM, phaeron said: The 1050 only activates a single phase at a time instead of two adjacent phases like the 810. With the exception of the firmware in made in Hong Kong / World Storage mech 1050's, which uses phase encoding with 2 phases engaged at a time. (EPROM labelled WST AMC R5) As a result, mismatching Tandon/WST firmware/mech will result in a 1/4 track misalignment if the mech is not re-aligned. Quote Link to comment Share on other sites More sharing options...
_The Doctor__ Posted March 27, 2022 Share Posted March 27, 2022 1 hour ago, Nezgar said: With the exception of the firmware in made in Hong Kong / World Storage mech 1050's, which uses phase encoding with 2 phases engaged at a time. (EPROM labelled WST AMC R5) As a result, mismatching Tandon/WST firmware/mech will result in a 1/4 track misalignment if the mech is not re-aligned. always wondered if we could adjust the firmware to get ore tracks with the WST's, think there was something about it... Quote Link to comment Share on other sites More sharing options...
Nezgar Posted March 27, 2022 Share Posted March 27, 2022 Just now, _The Doctor__ said: always wondered if we could adjust the firmware to get ore tracks with the WST's, think there was something about it... There is a diagnostic function already in the stock ROM for 1/2 track stepping, and someone had posted some test/proof of concept code that would try to write /read "between" tracks... doesn't work so well for the sake of "hiding data" or any potential of gaining any extra capacity. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.