Oscilloscope XY mode .

so i am plannig to program a game that would run on the screen of an oscilloscope , just as a part of some research i am doing , though there are a couple of things that i cannot understand yet .
firstly i am plannig to use a couple of 8bit Digital to analog converters , one to supply voltage for the X input and one for the Y one .

here is what i quite dont understand , first take a look at this :

so when using a 200Mhz old oscilloscope like that one :

-when i refresh the X port , the processor needs to make 1/16.10^6 s delay (16Mhz) before outputting the Y data , so would’t that give me an incorrect offset for a point before outputting the correct one . (X0;Y0) -1clock- (X1,Y0)(incorrect point) -1clock- (X1;Y1) doesn"t the processor need to send an incorrect point before sending the next one ?

-what i did read relating to the XY mode of the oscilloscope says it draws the voltages in function of they each other , so it draws points then connects them on the screen of the oscilloscope … the thing is in that photo up there some of the points are not connected to they each other ?? look at the numbers and the paddles ?? how could that even be done ??

thank you

It only connects the points if you have a scope that tries to vector it. Otherwise it will just draw the points and you can maybe see a vague trace between the end of one line to the start of the next. So to draw the paddle you have to draw multiple points in a straight line. After that you make a jump to the next object etc

And I don't know what you think is the problem with the 16MHz. But the scope does not know what the speed of the Arduino is. Heck, the Arduino is probably not the limiting factor, it's the DAC. But it doesn't matter. All the scope sees it what the value of X and Y are. So as long as the X and Y are in the right spot at the same time it does not matter how long it took for the Arduino and DAC to put it there.

Since not only mechanical, but even electrical deflection like this is not instantaneous, it is conventional to use "Z-axis" modulation with vector graphics.

thank you guys , @Paul the oscillator in the picture does not allow for such a feature i think .

@septillion : that’s not what i ment for the 16Mhz part , l’ets say that the voltages are to values of X0 and Y0 so the point that the oscilloscope is at , should be P(X0,Y0) now l’ets say i want the next point to be P2(X1,Y1) so the arduino needs to change X0 then after one clock change Y0 so at some point in between what you have is an extra point P’(X1,Y0) before the arduino get’s to change Y0 to Y1 aint that an icorrect point though? the arduino cant change both of the ports at exactly the same time ,

amine2:
the arduino cant change both of the ports at exactly the same time ,

That depends completely on your DAC. If it's some sort of DAC with a latch, no problem. Then it can happen at exact the same time.

But yeay, if you don't have a combined latch you indeed are monumentally at the wrong position. But does it matter? I think not. The time spend at each point is longer then the wrong transition time.

It's just like writing a string to an LCD, not everything appears at the same time. Or when you try to blink multiple LED's. As long as you don't connect them to the same port and use port manipulation the will change with a slight delay.

And I think you only need a refresh rate of around 50Hz/100Hz or so to make and image. So the step time between two points can be quite large compared to the X Y step error time.

Both DAC channels can share the same clock. So, although you may write to one DAC (or one channel) before the other, the analog data can be clocked-out at the same time.

That's how a stereo audio DAC (or ADC) works. The left & right channels share the same clock.


I made a Stereo VU Meter lighting effect where the LED drivers use a 3-wire serial interface. With this effect the left & right meters don't really need to be synchronized and you'd never see a few microseconds delay between the channels

But, there's was reason to use two Latch-Clocks so both channels are updated at the same time. Each channel has it's own Data-Line and Data-Clock. (They could have also shared the Data-Line, since the data is only clocked-in with the Data-Clock.)

This oscilloscope clock project shows how to program games, a terminal screen and a clock using an XY oscilloscope, all at once using a 20 MHz ATmega328. The code is public domain.

SparkFun used to sell the boards but no longer.

amine2:
@Paul the oscillator in the picture does not allow for such a feature i think

Most relatively recent vintage dual-channel analog scopes from Tek do have a "z input" - typically, it is a BNC connector on the back end of the scope; it will be labeled as either "Z" or "intensity" - because originally it was meant to be used for NTSC/PAL video troubleshooting - you could feed part of the signal into it, and get a fairly good blue and white (or green and white) TV picture (there are also other uses for it - done properly, one can use the input to split the single Y input into multiple "inputs" - and create a crude form of logic analyzer).

You might also think about using an SPI shift register (or even a 595) - something with a latch, daisy chain them (two 595 would give you two 8-bit "ports" - or go with 3 for two 12 bit ports) clock the data in, latch it over.

Don't let the beam stay on full intensity in one spot for very long. It will put a blind spot ("phosphor burn") there.

Oscillioscopes have relatively low power beams and this isn't likely to be an issue unless you leave it like
this for long periods.

(old CRT TV's and monitors on the other hand can explode if you focus the stationary beam
onto the side of the tube as the beam has enough power to melt glass - burn in typically takes
months to years of operation.)

hey , Thank you very much guys , the main issue is solved .
but now since you mentioned it , what about this beam burning the screen thing ?
you see i am using an oscilloscope in my research dept if anything wrong happens to it i must pay for it .
that isn't much of a risk right ? or is it ? any tips for me not to burn the oscilloscope ?

If nothing else, an oscilloscope is usually left with its timebase running so that there is a line on the screen rather than a dot. If not actually using it for the moment, you always turn the intensity right down so the line is barely visible.

hey Paul thank you for the response .
what Jremington posted is really interesting . go me thinking , well with the TVs we would save up a space in ram for a framebuffer then use the sync pulses to move the cursor across the screen and output the data . my circuit is alot different from that guy's circuit and i have to write my own code so can i do the following ? :

can i use a frame buffer with a bit for each dot on the oscilloscope , like i would go through the array and if a bit is high at that position i would position the X and Y axis at it , then when the processor finds a second bit that is high it move the cursor and so on ..

amine2:
hey , Thank you very much guys , the main issue is solved .
but now since you mentioned it , what about this beam burning the screen thing ?
you see i am using an oscilloscope in my research dept if anything wrong happens to it i must pay for it .
that isn't much of a risk right ? or is it ? any tips for me not to burn the oscilloscope ?

Arrange your Z axis modulation so that it is off by default (or any time the XY update is not running).