miniscope; single-chip DSO

Project of digital storage oscilloscope, hardware is just PIC18F4550 and few passive components. Main goal of this project was to test and simplify developing of PC application prepared for another, larger DSO project.

Device doesn't have any analog signal conditioner - hardware part is simplified. Maximum sample frequency is 25kSPS.

Package with project documentation and compiled PC application:
miniscope_setup.exe

Project is outdated and not supported anymore. If you're looking for similar application please visit miniscope v3 project page.


Some variation of this early project is hidpic.dll plugin for miniscope v3. It uses plain vanilla Generic HID demo from Microchip MCHPUSB 2.5 to collect ADC samples. Sampling rate is very low (below 1000Hz) as only single sample is transmitted with each HID report, but you can run it on many starterkits like PICDEM USB.

I dislike the way the new MCHPUSB versions are assembled. Examples are ready to compile for many processors/boards but that makes code quite hard to browse and understand. I've reassembled Generic HID demo into single, self-contained package. It's intended to run on my simple PIC18F2550 board, but should be easy to adapt to PICDEM USB or similar. Before compiling you will have to change path dir_lib in project file from D:\progs\mplab\MCC18\lib to whatever you use. All other paths are stored as relative. Watch out for long paths as some of C18 tools are limited to 62 characters path length (doh!).
PIC18F2550_HID.zip - Generic HID demo

Hidpic.dll project was compiled using MinGW bundled with Code::Blocks 8.02. No DDK package download is required to compile - all needed files are supplied with MinGW. This project uses few header files from miniscope v3 - put both project directories next to each other on directory tree. Most interesting part of source code are reusable classed for HID communication and device attachment/detachment detection using WM_DEVICECHANGE message processed by message loop of hidden window (can be used with console application).
hidpic_dll.zip - input device plugin for miniscope v3
Important note: when using newer MinGW version (bundled with C::B 10.05, 4.4.1) additional compilation switch -fshort-enums is required (using enum variable as a part of interface was a risky thing).

During studying HID I've made also small standalone project using Code::Blocks/MinGW. After connecting with Microchip Generic HID demo it can toggle LED state, read pushbutton and ADC value. Similar to hidpic.dll it is able to detect device disconnection by receiving WM_DEVICECHANGE message using hidden window.
hid_test.zip - Generic HID - native demo