Emulating ADC

This week I did some programming on PIC32 ADC and SPI functions. The goal is to transfer ADC value from PIC through SPI to a FPGA chip. FPGA chip will act as a ‘Master’ while PIC32 will be the ‘Slave’. I will be coding for PIC32 only therefore the following will only be applicable to PIC32 with MPLABX IDE and Harmony Library. Examples for PIC32 ADC and SPI Microchip Harmony provide several examples on initialization of ADC and SPI, follow the Read more

CodeMirror and Me

Work progress has been slow this week as I spent my time learning about the code completion feature in the code editor. The previous intern has done some work on it with basic functions.  However, there is much to be done until it becomes fully operable and up to my boss’ expectation. Starting with Clang I started with examining the clang code-completion which was implemented. It’s amazing to see how it works by returning related keywords from the C++ library. Read more

Kill the Zombie

This week, my task is to create a cache system for the FPGA synthesis and implementation process, and to kill the previous synthesis process. The cache system would be useful if someone replicates or reuse their design. This saves the processing power and time, where the synthesized file would be ready immediately. Caching the file by using cryptographic hash function, is pretty interesting. I get to see the power of these functions and why they are so popular to be Read more

PHP Server

This week I do some final touch to the PCB board design. (Spartan6 TQFP, PIC32, HC-05). And then I get my hands on to some programming. My goal is to make a Php server that is able to be ping from my Wt::Client(Ajax) that I previously done. The idea is the same with using a PIC32 MCU to act as a ‘Server’ but now is to use PHP on Linux. Surprisingly the C network programming knowledge that I learn/implemented on microcontroller Read more

Bug Hunting in Wt

This has been a cool week, not the weather though, because I managed to solve problems instead of creating more. Thanks to Dr. Shawn’s suggestion, I’ve started using valgrind to test my code. It turns out to be such a gem. Not having the proper fundamentals, I didn’t know such a thing actually existed. Testing out Valgrind There were so many instances where I spent hours trying to discover segmentation fault in my application. Seg fault is even harder to Read more

Designing a new PCB Board

This week I finish drawing my PCB design for a new board using Spartan 6 TQFP packaging and PIC32MZ. Also added a bluetooth module (HC-05) onto the new board. In comparison most of the component’s footprint for this new board is exactly the same with the previous board, only this time I decided to make some changes on the capacitors’ footprint.  For Spartan 6 – 144pin only requires 4.7μF and 0.47μF capacitor value. And from ‘table 2-2 of ug393‘ stated that these Read more

Automate Bitstream: Part 3

Continued from last week, I finally manage to automate the bitstream generation. Good news that I have also fixed the problem that causes the hanging of the web application. The hanging is mainly caused by the usage of Wt::WApplication::instance()->deferRendering, because freezes the user interface. The doJavaScript() Problem What surprised me this week was the usage of doJavaScript() in Wt. Apparently, after removing the Wt::WApplication::instance()->deferRendering, it does not work well, unless the widgets are clicked on. As I refer from the documentation, it Read more

Code cleanup and adding features

I have been removing a lot of old JSON stuff which is now replaced with Wt::Dbo. So far, using Wt::Dbo has offered so much of convenience when adding, modifying or querying database objects, as long as you create the Wt::Dbo::Session using your database file. insertWidget at specified positions So I have taken the advice from Dr. Shawn to make some improvements on my project. When adding new files into the application, the newest file should appear at the first position. Read more

Gone with JSON, in with Wt::Dbo

Up till now, I’ve spent months of quality time with Wt and gotten quite familiar with it. It has taken care a lot of dirty things for me in the background and at the same time, taught me a lot more about programming in C++. Compromises The application I’m working on is far from being stable and optimized. There are compromises which was necessary in the mean time. For example, the Facebook oauth authentication which I will probably fix when Read more

Automate Bitstream: Part 2

The task continues with more challenges, where I start to monitor the synthesis flow that had been set previously, starting from the generation of the HDL file to the generation of the bitstream. Apparently, I found that most of the process are messed up, where the synthesis actually takes place before the generation of the HDL file. The data2mem process is executed even before the update of the ELF file. Many of these minor problems accumulated, and is actually a big Read more