Jump to content
IGNORED

help required for 1050 project


xrbrevin

Recommended Posts

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!

 

IMG_2868.JPG

 

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.

Link to comment
Share on other sites

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 by macsonny
Update
Link to comment
Share on other sites

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 by TGB1718
Link to comment
Share on other sites

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

Edited by xrbrevin
Link to comment
Share on other sites

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.  

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

  • Thanks 1
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

 

 

image.png.b15822f340a6bbc238606346e88cf3af.png

 

 

Link to comment
Share on other sites

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.

 

  • Like 1
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 ?

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...