DSOQuadV2.6 RESOURCE(Update 2012/04/12)

Try pressing the O key next to the triangle key for about 1 second. Mine notes “saving setting” and appears to keep the setting when I power it off.

A video or basic operation document would be helpful in learning how to use the features. I stumbled across most of the features by experimentation and luck, rather than knowing. Makes me wonder what other features it might have that I don’t know about.

Hi,

It looks like I found a bug that exists in 2.51 and 2.52 firmwares: TH value for channels 2-3-4 calculates wrong.

I’ve attached 2 screenshots with the same signal (from the generator) that connected consequently to channel 1 and then to channel 2. Look at TH value. When it’s blue (channel 1) it shows correct value, but when it’s yellow (channel 2) it shows wrong. The TL value is ok both times.

May be I do something wrong, I don’t know.

channel_1_ok_TH.png
channel_2_bug_TH.png

Also I know another bug that existed in 2.51 but I’ve just upgraded to 2.52 and may be it disappeared, but may be not.
When using Single Mode sometimes a signal and settions delays for several times of pressing Hold.

For example: I changed horizontal resolution and pressed the Hold button to update my screen, but I still see signal with previous resolution, I can press Hold for several times but I still the same signal. I have to wait some period of time to be able to use my new params of resolution. It’s a small bug but annoying a little.

UPD: I found the bug source. App2.51 menu.c line 344 and below:

case TH: if((Meter[i].Track == TRACK1)&&(_1_source == CH_A)) Tmp = (k*TaS)/TaN - (k*PaS)/TaN; if((Meter[i].Track == TRACK2)&&(_2_source == CH_B)) Tmp = (100000*PbS)/TbS; if((Meter[i].Track == TRACK3)&&(_3_source == CH_C)) Tmp = (100000*PcS)/TcS; if((Meter[i].Track == TRACK4)&&(_4_source == CH_D)) Tmp = (100000*PdS)/TdS; if(Tmp <= 0x7FFFFFFF/m) Tmp = 1024*((m*Tmp)/Kp)/n; else Tmp = 0x80000000; Int2Str(NumStr, Tmp, T_UNIT, 4, UNSIGN); break;

TH for channel 1 has one type of calculation but channels 2-3-4 have absolutely different. Please fix these 3 lines.

P.S. Please tell me where I can find 2.52 firmware sources to look into.

P.P.S. Another question: please explain to me how could I load apps to app2,app3 and app4 memory space? I’ve just read hips of texts in the Internet but I still can’t understand how can I load an app for the 1-st button and an app for 2-nd button, etc… When I upgrade the firmware I only upgrade the default one.

Is Macro still working on lt?
I can’t wait for the first release of 2012 and the FFT :smiley:

Application should be prepared (compiled/linked) for particular slot and then it will be installed into correct slot automatically. So you can’t choose slot if you have one .hex file.

Yes, I’ve already understood this sad moment. I saw how vector table is programmed to the specific memory region. It seems that it’s easy to make the program universal for all memory regions and let bootloader decide were to put the program. It can be useful as it allows to use several custom versions from different authors simultaniously.

V1.8 added sites.google.com/site/marcosinat … ronica/dso
Only some changes on XY mode grid and scaling.

Thanks for the software package and updates! Gazie mille! I am testing your soft thoroughly.

XPOS scrolling still does not work in SINGLE mode

My firmware has a lot of bugs, but less than the original, but it has!
I do not have time to work to it now, I hope to resume work as soon as possible…

It’ll be excellent if you open your sources to allow others to continue your firmware improvement process. I would fix some bugs but no sources. You can put them on GitHub or somewhere like this.

No problem.
Source_V2.51_V1.8.rar (70.3 KB)

Thanx a lot!
What do you think about creating a new topic about your firmware on the forum? I’m very newbie on this forum and don’t know anything here.

Hello Marco

  • Where can we find your modified SYS source (the one for SYS25116.HEX)?
  • What does not work with FPGA 2.61, do you recommend to owners of newer DSO Quads to downgrade to 2.22?

Thanks
Patrick

Dear Marco i am very pleased with your firmware 1.8! Tell me why, in contrast to the Chip firmware in your firmware scan mode draws the entire screen at once, rather than at one point? I think this mode in the firmware Chip is more convenient (it resembles the work cardioscope - point moves around the screen and draws the graph). You have not done so because it is difficult? Or are you more comfortable as it works in your firmware? I am a simple user and not engaged in writing the firmware.
I think it’s important to express their wishes in order to improve your firmware! Thank you for what you are doing! Sorry for my English - I’m from Russia.

Dear Marco,

I´ve been using APP251_1.8 (thanks a lot for your work, btw) and when using the “single page buffer” mode (sorry don’t know it’s real name, the values of RMS and Vdc are incorrectly calculated.
RMS seems to low, like the average is still being calculated with more samples than available in the buffer.

Is this a know “feature”?

Best regards,
Pedro

Dear Marco,

Just browsed your code to look at those calculations.
At first glance (but remember I’m only looking at the sources for the first time), it would seem the calculations for the RMS and Vdc values are not taking into account if the small “one-page” buffer is being used instead of the full buffer, and the same number of samples as the full buffer (4096) is always used to calculate the mean values.
I suppose a switch might be needed to account for the smaller sample number and do the correct calculation in that case.

Here’s the code in Menu.c (Display_Value function)

[code]case VDC:
if(Meter[i].Track == TRACK1){
Tmp = Ka1[_A_Range]+(Ka2[_A_Range](a_Avg/4096)+ 512)/1024 - _1_posi;
if((Tmp >= -2)&&(Tmp <= 2)) Tmp = 0;
Tmp = Y_Attr[_A_Range].SCALE;
if (_1_source ==2) Tmp=Tmp
10;
if (_1_source == HIDE) Tmp=0;
}
if(Meter[i].Track == TRACK2){
Tmp = Kb1[_B_Range]+(Kb2[_B_Range]
(b_Avg/4096)+ 512)/1024 - _2_posi;
if((Tmp >= -2)&&(Tmp <= 2)) Tmp = 0;
Tmp = Y_Attr[_B_Range].SCALE;
if (_2_source ==2) Tmp=Tmp
10;
if (_2_source == HIDE) Tmp=0;
}

Int2Str(NumStr, Tmp, V_UNIT, 3, SIGN);
break;

case RMS:
if(Meter[i].Track == TRACK1){
Tmp = Ka1[_A_Range] +(Ka2[_A_Range]*Int_sqrt(a_Ssq/4096)+ 512)/1024;
if(Tmp <= 2) Tmp = 0;
Tmp *= Y_Attr[_A_Range].SCALE;

  if  (_1_source ==2) Tmp=Tmp*10;
  if  (_1_source == HIDE) Tmp=0;
}
if(Meter[i].Track == TRACK2){
  Tmp = Kb1[_B_Range] +(Kb2[_B_Range]*Int_sqrt(b_Ssq/4096)+ 512)/1024;
  if(Tmp <= 2) Tmp = 0;
  Tmp *= Y_Attr[_B_Range].SCALE;
  if  (_2_source ==2) Tmp=Tmp*10;
  if  (_2_source == HIDE) Tmp=0;
}[/code]

Dear chip,

I suppose you may use the same “base” code for these calculations, as I have the same behaviour with your version (APP_B253)

…or peharps i’m wrong and I’m doing something wrong :confused:

OK, fixed some errors and compiled a version of marcosin (1.7) with the fixes in GCC using garbonator1 makefile.

Not perfect, since the app only starts about 1/3 of the times.

If anyone wishes to try it, made the sources and HEX available here: github.com/pmos69/dso203_gcc
(compiled HEX in Bin directory - installs to slot1)

Changes:

  • Removed -fno-common and changes -Os to -O3 in compile options
    APP still only starts correctly 1/3 of the times
  • Fixed Vdc and RMS values display when in 1-page buffer mode (menu.c)
    Calculation didn’t take into account the buffer size when calculating the averages
  • Fixed wrong calculations for Vdc and RMS (process.c)
    the counters (a_Avg, b_Avg, a_Ssq, b_Ssq) were initialized with a value different than 0)

All thanks to:

  • Seeed-Studio
  • Marco Sinatti (marcosin)
  • Gabriel (gabonator1)

Great work, Pedro!

More problems…

  1. I cannot use the .hex of your bin folder. It makes an error (APP_G251.err on the DSO)
  2. I can compile the source code with the following result: after the initialisition screen: 1/2 of the time black, 1/2 of the time 0.5 second of parasites, then freeze.

One more question: why didn’t you use Marco’s newest source code (1.8, see download/file.php?id=919)?

And even one more: does anybody know where to find the source code of Marco’s SYS file (and how to compile it)?

Unfortunately, it seems that Marco does not visit the forum any more…

I would be very glad to try and help correct the last bugs of Marco’s excellent code (e.g. the fact that the correction for 10x probes does not work) or ameliorate it (e.g. slower time bases, and so on)!

Patrick

PS: by the way, the developement installation /environment proposed be Petteri Aimonen (svn.kapsi.fi/jpa/dsoquad/freq/README.txt) seems to me much more easy to use than Gabonator’s

Strange. You shouldn’t get different results.

I’m using marcosin latest SYS (SYS150_1.6)
Not sure at this time which FPGA I’m using - may be latest or 2.22

:confused: I just used what I had available, but will look at 1.8.