I have an inverted RS232 signal with 5 baud (200 ms per bit) which is sending the byte 0x33. (The first "Low" is the start bit)
When I configure my oscilloscope to 200 ms per unit it shows this signal absolutely perfect.
I use the single trigger mode (button "Single" at the right top)
As you see the timing is precise.
Now comes the weird: I caputure the same signal with the setting 500 ms per unit. It looks like this.
To see the timing better I switch the timing to 200 ms per unit for the SAME capture and get this:
As you see the signal seems to be slower than 200 ms per bit now.
How is that even possible on a digital oscilloscope?
In the first step the oscilloscope stores the captured data in memory.
In the second step it displays the data.
All timing is based on a precise crystal oscillator.
The only difference which I see is at the top of the screenshot where it says:
Correct capture: 10.0 MSa/s and 24.0M pts
Wrong capture: 4.0 MSa/s and 24.0M pts
The only explanation to me seems to be a fat software bug. Are the Rigol engineers not able to do the correct conversion to display a 4.0M Samples signal? How did this oscillocope series even pass the quality control?
And yes: I have made sure that my signal is precise.
I can repeat that a hundred times:
Capturing with 200 ms per unit is perfect.
Capturing with 500 ms per unit gets wrong.
P.D:
Now I tested more time bases. These are the results:
5 seconds per unit --> OK
2 seconds per unit --> OK
1 second per unit --> OK
500 ms per unit --> wrong (constantly 4% timing error)
200 ms per unit --> OK
100 ms per unit --> OK
50 ms or less --> a period does not fit anymore
But this is just one of multiple bugs. The oscilloscope has several more bugs.
When you enable the RS232 decoder and the horizontal resolution is too small it is understandable that it does not show the hex bytes. But this is implemented so buggy that it displays completely wrong data! This screenshot shows a RS232 signal with 10400 baud and long pauses between the data packets. All the displayed "FF" are wrong.
And one of the ugliest bugs is the knob "Horizontal Position". This is complete crap. It should move the signal horizontally on the screen. But it works so bad that moving the knob fast results in the signal suddenly jumping to a completely different loaction. When you move it slowly it nearly does not move at all. Such a basic functionality as navigating in a long capture with a Rigol oscilloscope is a pain!
And when you move that knob too fast you get suddenly artifacts in the signal. The same signal which I caputured above, suddenly looks like this:
Amplifying this bug you see a square signal of 2 ms period. This signal has never existed on the input of the oscilloscope. It is produced by a software bug in the oscilloscope just by moving the captured signal in memory horizontally on the screen!! Here you see a zoom of the left artifact:
And this is a zoom of the right artifact:
And as if all this would not be enough, there are more bugs. All these bugs are not reproducable. For example:
- There is a signal but the oscilloscope does not trigger. It triggers mostly, but not always.
- The "Single" trigger mode is enabled, but the scope does not stop after the screen is full.
- It happened that I plug in a USB stick and the oscillscope completely freezes. All buttons were dead.
Best Answer
Looks like a bug to me. I reproduced it on my 1054z using an Arduino with an LED blinking program.
This is the signal with 12M memory depth acquired at 500ms timescale, and then expanded at 200 ms scale. The 'beat' is 1000 ms long. (Ok, technically it's 900ms long plus the overhead, but if I add the first part of the next train I get a nice 1000 ms sequence that makes numbers nicer.)
The one above is the result I get with AUTO memory settings as well. But if I set memory depth to 24M I get problems at the 500ms scale. As above, this is the signal aquired at 500ms timescale and then expanded to 200ms timescale:
Pulse length appears extended by 40 ms, that's the same 4ms every 100ms shown by the OP (he goes from 600ms to 624ms). Acquisition at 200ms timescale shows the correct pulse length of 1000ms
But if I acquire at 500ms timescale, I get 1040 ms
Here's the Arduino Sketch, if anyone wants to replicate it.
(I have to say it's been a while since I last updated my scope's firmware - I'm on 00.04.04.01.01 - but the bug has been confirmed othe latest version to date)
EDIT: Following mkeith advice, here is the 1kHz scope test signal, acquired at 500ms timescale and then expanded at 200us, when memory depth is set to 24M.
The period becomes 1.040 ms. Same 4% error. Acquisition at 200us directly will give the correct value of 1.000 ms.
And it gets better! If I acquire the test signal with a timebase of 5s, and then expand it to 200us, the period becomes 800 us!
That's a 20% error.
At other timebases (with the same stopped acquisition) I get the correct value. I would love to see how they do the rounding in Rigol.
Anyhwow, this bug is affecting the latest firmware version - as noted by the OP - and since the question has been closed, people interested might want to follow this thread on the EEVBlog forum.