Easy programming for the DSO Quad

Indeed, that is a possibility worth considering. It may be too tight on the RAM memory, though. Both the main app and pawn require quite much all the available RAM on the device, so it is difficult to make them run at the same time. One could make a key that easily switches between them, though.



Processing data from main app is already possible by reading the files it creates. I have been thinking that a BMP viewer application would be useful if one wants to use the Quad completely stand-alone :slight_smile:

I just finished a simple Spectrum Analyzer using Petteri’s implementation of PAWN and all I can say is that Petteri has provided a great tool. I have started from scratch on many small platforms over the years and this has been the quickest and easiest experience I have ever had in doing this. My little app is called spec_an and can be found with Petteri’s examples at <LINK_TEXT text=“https://github.com/PetteriAimonen/QuadP … r/Programs”>https://github.com/PetteriAimonen/QuadPawn/tree/master/Programs</LINK_TEXT>. Based on what I did I think the very best way to get on top of this is to study a few of the posted programs and then browse through the include files.

Is there possibility to turn off the screen? I haven’t found anything in includes.

I would like to analyse battery discharging process. It takes a lot of time. I suppose backlight use a lot of energy, so if I could turn off the screen I could longer measure.

Not right now. Should be easy enough to add support in runtime once I get around to it (also missing beeper support currently). You can keep the DSO connected through USB if you worry about battery running empty.


I’d add controlling RTC to wishlist - of course if there is RTC on board. Setting time only (without date) would be useful for me, even if I have to set after every power on (or even after application start). I’m working on project (for now “secret” :wink: where I’d like to synchronize asynchronous (user triggered) data dumps with position (from GPS).


Yes, I know. I’m going to check “2xAA USB charger” so for now it’s no problem :wink:

There is RTC, but it doesn’t have backup battery so you’d have to reset it after power-on, just like you guessed.



The get_time() function (which gives millisecond timestamps since power-on) should be accurate.


This is what I’m using as workaround. But this gives me timestamp relative to power on - every time is similar. Of course using “select_filename” I have files in chronological order.



btw. I’m impressed how easy you can write an application. You don’t have to learn PAWN - just use it.

Hmm yeah, I wonder if there is any reasonable solution to this. One common way to easily set RTC of USB devices is to monitor timestamp on files written to USB drive. Then just sync the time right after the write.



Also if I added proper power saving support to the Pawn runtime, it could possibly be left on for a long time. Most power-consuming parts of the system (ADC, FPGA, switching regulator) can be switched off and MCU could go into standby. The standby current consumption should be less than 1mA, giving a few weeks of standby time.



Too bad that they didn’t make use of the RTC in the microcontroller. Would have required just two diodes (to drop 4.2V -> less than 3.6V) if one is happy with LSI oscillator accuracy (can calibrate it right before sleep).

New version 0.03 uploaded.



New features:

Thanks for this contribution, this is really impressing!

I am a bit away from programming the same, but will definitely use it!



BW


thx. i’ll check it as soon as I get home from vacation :wink:



Jaqb

There is now a proto version of custom FPGA image loading in a separate branch… but too bad that I’m running out of flash space.



It would be most useful to get this working:

https://github.com/neilstockbridge/dsoquad-BIOS



Or some other way to build the BIOS with GCC.

Discovered Pawn for quad a few days ago and I am enjoying it very much. Please continue development.

The calibration app, is this just for pawn apps or is it the same calibration that can be done in the dso firmware and its effect is system wide for the entire device and its apps?

Currently only for Pawn apps, as described in <LINK_TEXT text=“https://github.com/PetteriAimonen/QuadP … alibration”>https://github.com/PetteriAimonen/QuadPawn/wiki/Calibration</LINK_TEXT>

A quick weekend project: scrolling spectrogram application for QuadPawn.



<LINK_TEXT text=“https://github.com/PetteriAimonen/QuadP … pectrogram”>https://github.com/PetteriAimonen/QuadPawn/wiki/Spectrogram</LINK_TEXT>



First 500 Hz signal from waveout, then 50Hz noise from my finger:





Some music from youtube:

Would it be possible to add serial port access to pawn? The one used in the bluetooth hack.

Yeah I have been thinking about it for a while but haven’t had time to implement it.



Should be quite easy atleast to write to serial, because a simple printf() from the code is enough. Reading will require some IRQ routine so that it will store the characters as they arrive.

So I can send data with simple printf() but no read? Thats enough for data log but not control.



I took the sample voltmeter code and created a large number display to use like a DVM. The code is not pretty but I was amazed at how much more accurate readings are in pawn compared to the normal or alternative software.



I wonder what could be done with pawn if it was the main app. Use all the slots for pawn.


Kind of. Not yet Pawn bindings for the function. But maybe I’ll find time to add it soon :slight_smile:

Yeah after being calibrated it should be quite accurate. Maybe one day I’ll bother porting the calibration stuff to main firmware. It’s not complex, I don’t understand how the main firmware calibration manages to suck so bad.

Flash is no-longer restricting, but the RAM size is. Pawn as a language is not very powerful, if there will be a more powerful version of DSO Quad one day I’d like to run Lua or Squirrel on it.



And because Pawn is interpreted, it’ll always be limited to the simpler stuff. I couldn’t imagine writing a complete oscilloscope app in pawn; it would simply be too slow.