maniacminer wrote: ↑Mon Apr 08, 2024 3:09 pm
Thanks for the help. The ALU seems to wander off into the bracken quite quickly from reset, yet despite changing all the logic ICs, I am still getting the same sound as I had before. Maybe there's a fault on the board somewhere that is causing this issue?
I hadn''t realized you had already swapped out all of the logic ICs.
What ICs haven't been replaced?
If you run the "Siren" test I posted earlier in the thread, do both systems sound (and scope) the same?
I think the key to debugging this will be to find the simpest test case where there is a difference.
Ah, yes, I removed all the ICs and replaced them with sockets (photos of that palaver are in this thread) - binned the faulty few, then replaced all the logic, then the RAM and then the DAC. I'll try the sine wave program again, the first time I ran it I didn't get a sine wave from it.
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
hoglet wrote: ↑Mon Apr 08, 2024 3:20 pm
If you run the "Siren" test I posted earlier in the thread, do both systems sound (and scope) the same?
I connected up my Zoom recorder and measured both M5000's after running the program earlier in this thread. I don't get a sine wave out of either...
Attachments
Good vs. Bad M5000 running Sine Wave Program
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
maniacminer wrote: ↑Tue Apr 09, 2024 1:40 am
I don't get a sine wave out of either...
Indeed - I need to fix the test program to generate a true sine wave. I'll post an update later.
But ignoring the waveform shape for now, it looks like the frequency is different between the two systems? Or are the two waveforums not on the same scale?
maniacminer wrote: ↑Tue Apr 09, 2024 1:40 am
I don't get a sine wave out of either...
Indeed - I need to fix the test program to generate a true sine wave. I'll post an update later.
But ignoring the waveform shape for now, it looks like the frequency is different between the two systems? Or are the two waveforums not on the same scale?
The waveforms are the same, just taken at different siren intervals. I unplugged one M5000 from the Zoom and plugged it into the other, so they're not perfectly synchronised by any measure.
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
This is wrong in two respects:
- It doesn't take account of the non-linear characteristic of DAC
- It doesn't correctly format the data as sign (1 bit) + magnitude (7 bits)
This is wrong in two respects:
- It doesn't take account of the non-linear characteristic of DAC
- It doesn't correctly format the wave data as sign (1 bit) + magnitude (7 bits)
hoglet wrote: ↑Tue Apr 09, 2024 12:58 pm
Here's an updated version of the test program that should generate a fairly accurate sine wave.
I have run the new code, thanks. I now get a sine wave output (yay!) There is a minor difference in amplitude between the two, but not really significant. The recording looks normal and is otherwise identical between the "good" and "bad" M5000's.
Attachments
New Sine Wave Good and Bad M5000
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
The frequency should be this value multiplied by 46875 then divided by 2^24:
- Low tone = 0x016DBE * 46875 / 2^24 = 261.6Hz (Middle C)
- High tone = 0x026DBE * 46875 / 2^24 = 444.7Hz
(assuming the wave RAM contains just one cycle)
hoglet wrote: ↑Wed Apr 10, 2024 8:37 am
So I wonder if it's worth testing all 8 channel pairs work, by tweaking these lines:
I ran the test on the other six channels on both units but the output is identical.
Sine Wave Test CH2 and CH3 good vs bad
Sine Wave Test CH4 and CH5 good vs bad
Sine Wave Test CH6 and CH7 good vs bad
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
hoglet wrote: ↑Wed Apr 10, 2024 10:27 pm
There are 8 further channels you could test as well (16 in total):
I expect they will also be identical, but it's probably worth confirming.
Yes, the signals are identical. However, something I did find rather weird, if I change the pitch values the "good" M5000 goes quiet but the "bad" M5000 tries to play the tones, when I picked values like 330 and 545 odd things happened...
hoglet wrote: ↑Wed Apr 10, 2024 10:27 pm
What ICs from the original Music 500 remain?
None apart from the 7805.
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
maniacminer wrote: ↑Thu Apr 11, 2024 12:11 am
Yes, the signals are identical. However, something I did find rather weird, if I change the pitch values the "good" M5000 goes quiet but the "bad" M5000 tries to play the tones, when I picked values like 330 and 545 odd things happened...
That's very interesting....
Can you give a specific example of the register values that behaved differently?
Bit 0 of the LSB frequency register (&FDx0) has a special function - it's called the phase set bit, and also acts as a channel disable bit.
Setting this bit to a one (i.e. an odd number) should disable the corresponding channel.
It sounds like this is working correctly on the "good" M5000, but not on the "bad" M5000.
Can you double-check this?
The channel disable function is implemented by this bit of the circuitry:
If you have a test case where the "bad" and "good" are definitely behaving differently, I would probe around that area with a scope.
I would also check for shorts between DATA[0] (e.g. IC13 pin 3) and other signals. Especially other data bits, but it could be anything.
Cool, thanks. I wasn't aware of the function of bit0 on the LSB of the frequency register. Is there a list of these anywhere? I'll do some more tests today. I thought the "good" M5000 had become "bad" because it kept cutting out at different frequencies - there's always a risk 'scoping around a PCB that an inadvertent slip of the hand causes hours of repairs...
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
maniacminer wrote: ↑Thu Apr 11, 2024 12:07 pm
Cool, thanks. I wasn't aware of the function of bit0 on the LSB of the frequency register. Is there a list of these anywhere?
maniacminer wrote: ↑Thu Apr 11, 2024 12:07 pm
Cool, thanks. I wasn't aware of the function of bit0 on the LSB of the frequency register. Is there a list of these anywhere?
That's an excellent resource, thanks! I scoped out the "good" and "bad" M5000 and yup, D0 is different and that drives data input to the flip-flop that in turn with ADDR0 drives the "mute" circuitry. I notice in some music that fades, those fades turn to crunchy fades on the "bad" unit - I suspect this is the reason, almost as if something is being done that should be inaudible. As for the cause, I am no closer to identifying it as everything is free-running, it just seems to go wild at some point. I couldn't find any shorts, I had a poke about with the multimeter between all the "data" lines and they read point-to-point normally and within 10R of 1kR to ground.
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
maniacminer wrote: ↑Thu Apr 11, 2024 11:55 pm
That's an excellent resource, thanks! I scoped out the "good" and "bad" M5000 and yup, D0 is different and that drives data input to the flip-flop that in turn with ADDR0 drives the "mute" circuitry.
I wonder if the Wave RAM writes from the host are somehow getting corrupted.
Are you testing on a Master or a Model B?
It might be worth confirming the "bad" M5000 fails on both machines.
Also, has this been modded for Master use? Double check the correct R/C values have been used.
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
maniacminer wrote: ↑Thu Apr 11, 2024 11:55 pm
That's an excellent resource, thanks! I scoped out the "good" and "bad" M5000 and yup, D0 is different and that drives data input to the flip-flop that in turn with ADDR0 drives the "mute" circuitry.
I wonder if the Wave RAM writes from the host are somehow getting corrupted.
Are you testing on a Master or a Model B?
It might be worth confirming the "bad" M5000 fails on both machines.
Also, has this been modded for Master use? Double check the correct R/C values have been used.
Dave
I was testing on a rather tortured (the nice Flash/SRAM board guinea pig) BBC Model B disc/Econet. I tried another couple of Beebs that I just got working (repair threads for those two!) and they performed exactly the same. I dug out the Master and tried that, after lots of aggro with GoSDC, Master RAM/ROM cartridges and ANFS 4.25 I ended up burning an EPROM and putting it in the ROM socket on the cartridge. Solved all that aggro and ended up, yup, exactly the same. So on the plus side, all the M5000's in a chain perform exactly the same as they did on any Beeb and the Master. The mod is a couple of track cuts and a bodge wire, a 470R resistor and a 220pF capacitor.
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
hoglet wrote: ↑Sat Apr 13, 2024 8:13 am
Also, has this been modded for Master use? Double check the correct R/C values have been used.
Dave
While at last weekend's ABUG my MUSIC 500 was tested on both a BBC and Master - worked on both. The mod I fitted, for the Master, was just the resistor version. I'm thinking that the resistor value and the TTL pin capacitance gives just enough delay to allow working on the Master!
Just a thought!
Dave H.
Available: ARA II : ARA III-JR/PR : ABR : AP5 : AP6 : ABE : ATI : MGC : Plus 1 Support ROM : Plus 3 2nd DA : Prime's Plus 3 ROM/RAM : Pegasus 400 : Prime's MRB : ARCIN32 : Cross-32
hoglet wrote: ↑Sat Apr 13, 2024 8:13 am
Also, has this been modded for Master use? Double check the correct R/C values have been used.
Dave
While at last weekend's ABUG my MUSIC 500 was tested on both a BBC and Master - worked on both. The mod I fitted, for the Master, was just the resistor version. I'm thinking that the resistor value and the TTL pin capacitance gives just enough delay to allow working on the Master!
Just a thought!
Dave H.
I think it is random as an unmodified M500 works fine on this Master. Perhaps it was problematic due to a change in the source of the 1MHz clock on the 1MHz bus? The B+ has a more complicated cycle stretching circuit, I guess the Master has that wad of TTL incorporated inside one of its ULAs? I'm thinking timing problem...
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
I was pushing/pulling on ICs to see if there were any broken tracks or bad contacts and suddenly everything sounded good. Yay!
I couldn't replicate what I did, so I left it for a day and came back to it and thought what I was doing... I was holding the bottom of the IC extractor and wobbling an IC side to side and it came out of the socket and I put it back in. I reproduced it by putting my fingers back onto the IC in question (IC23/74LS257) and when I got to pin#3 suddenly everything was good.
I have scoped out the PCB and there's no problem with the tracks to and from this IC. It almost feels like a marginal timing issue. A finger is worth 100pF
OK, I've added 100pF on IC23 from pin #8 to pin #3 and yup, the problems vanished.
Damn, I've been through this board, removed all the ICs, replaced them with sockets, put the ICs back in, same problem, then replaced all the TTL with the exact parts (one 74F04 - the remainder LS) - exactly the same problem, then all HCT, same, then all F, same. I tried mixtures, same. Something's gone for a Burton somewhere on the PCB, and a 100pF capacitor seems to solve it will it last?
Attachments
Capacitor bodge
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
maniacminer wrote: ↑Thu Apr 18, 2024 11:00 pm
OK, I've added 100pF on IC23 from pin #8 to pin #3 and yup, the problems vanished.
Well done fixing this.
In Paul Vernon's decription of the difference between an original M500 and an original M3000 there is a second capacitor mentioned. Specifically, he says:
and an additional 220nF capacitor added to pins 7 and 8 of IC 10.1
Looking at the photo, this is 220pF, not 220nF.
I'm bringing this up because this change seems unrelated to the M3000 addressing change, and so possibly is a fix that Chris found was needed occasionally, so was fitted to later units.
This capacitor is slugging the nS7 signal, possibly to remove a glitch. Now what's interesting is one of the places nS7 is used is on the async clear of IC3, which latches the channel disable signal. A glitch on nS7 would cause a channel to be enabled when it should be disabled.
This is the exact part of the circuit your testing showed was failing.
I don't quite see how your capacitor would have the same effect, but it's possible it does, by changing the sequencing of the inputs of IC10.
Dave
Last edited by hoglet on Fri Apr 19, 2024 10:22 am, edited 1 time in total.
Interestingly, reading Pauls page it says the Studio Mixer automatically detect the M3000 has anyone seen the work ? If so how do it work? Maybe time to do some disassembly.
maniacminer wrote: ↑Thu Apr 18, 2024 11:00 pm
OK, I've added 100pF on IC23 from pin #8 to pin #3 and yup, the problems vanished.
Well done fixing this.
In Paul Vernon's decription of the difference between an original M500 and an original M3000 there is a second capacitor mentioned. Specifically, he says:
and an additional 220nF capacitor added to pins 7 and 8 of IC 10.1
Looking at the photo, this is 220pF, not 220nF.
I'm bringing this up because this change seems unrelated to the M3000 addressing change, and so possibly is a fix that Chris found was needed occasionally, so was fitted to later units.
This capacitor is slugging the nS7 signal, possibly to remove a glitch. Now what's interesting is one of the places nS7 is used is on the async clear of IC3, which latches the channel disable signal. A glitch on nS7 would cause a channel to be enabled when it should be disabled.
This is the exact part of the circuit your testing showed was failing.
I don't quite see how your capacitor would have the same effect, but it's possible it does, by changing the sequencing of the inputs of IC10.
Dave
Yup, adding a 100pF capacitor between pins #7 & #8 of IC10 achieves the same effect. LOL the amount of time I've spent on this... I'll do this mod to all the other "broken" M500s I've got.
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
maniacminer wrote: ↑Fri Apr 19, 2024 6:04 pm
Yup, adding a 100pF capacitor between pins #7 & #8 of IC10 achieves the same effect. LOL the amount of time I've spent on this... I'll do this mod to all the other "broken" M500s I've got.
Very interesting!
At least this is now semi-official! It would be interesting to hear Chris Jordan's take on this.
I expect if you looked at nS7 on a fast enough scope there would be a glitch (as the A[2:0] inputs transition from 101 to 110 via 111).
There are runt pulses on that 74138, but the other "good" M500 also has them and that somehow doesn't exhibit this problem. Although one thing I have noticed is the PSU voltage on the "good" M500 is 4.65V and on the "bad" it is 5.1V maybe the lower voltage prevents the runt pulses from having an effect? Perhaps more modern TTL is fast enough to "see" them?
Big Model B Econet,Master 512,Electron,A3000,A540,Atom,Unilab 3-Chip Plus,6502,Z80,65C816,80186,32016,Matchbox,ARM7TDMI,Master 10/100,PiCoPro,Teletext,Music500,PiSCSI,Challenger3,Gotek,VideoNuLA,GoSDC,GoMMC,Integra-B,RGB2HDMIv4,Epson LQ-850 (for the win!)
maniacminer wrote: ↑Fri Apr 19, 2024 6:48 pm
There are runt pulses on that 74138, but the other "good" M500 also has them and that somehow doesn't exhibit this problem. Although one thing I have noticed is the PSU voltage on the "good" M500 is 4.65V and on the "bad" it is 5.1V maybe the lower voltage prevents the runt pulses from having an effect? Perhaps more modern TTL is fast enough to "see" them?
Think I'd be wanting to try it out with 5V . . . Just to eliminate the low Voltage being the culprit. - Dave H.
Available: ARA II : ARA III-JR/PR : ABR : AP5 : AP6 : ABE : ATI : MGC : Plus 1 Support ROM : Plus 3 2nd DA : Prime's Plus 3 ROM/RAM : Pegasus 400 : Prime's MRB : ARCIN32 : Cross-32