The Latest Projects From Cornell’s ECE 4760/5730

A photo of an RPi and a note about the first lecture.

ECE 4760/5730 is the Digital Systems Design Using Microcontrollers course at Cornell University taught by [Hunter Adams]. The list of projects for spring this year includes forty write-ups — if you haven’t got time to read the whole lot you can pick a random project between 1 and 40 with: shuf -i 1-40 -n 1 and let the cards fall where they may. Or if you’re made of time you could spend a few days watching the full playlist of 119 projects, embedded below.

We won’t pick favorites from this semester’s list of projects, but having skimmed through the forty reports we can tell you that the creativity and acumen of the students really shines through. If the name [Hunter Adams] looks familiar that might be because we’ve featured his work here on Hackaday before. Earlier this year we saw his Love Letter To Embedded Systems.

While on the subject, [Hunter] also wanted us to know that he has updated his lectures, which are here: Raspberry Pi Pico Lectures 2025. Particularly these have expanded to include a bunch of Pico W content (making Bluetooth servers, connecting to WiFi, UDP communication, etc.), and some fun lower-level stuff (the RP2040 boot sequence, how to write a bootloader), and some interesting algorithms (FFT’s, physics modeling, etc.).

13 thoughts on “The Latest Projects From Cornell’s ECE 4760/5730

      1. Because RISC-V was originally developed to be used to teach. One part of it was that universities with access to silicon fabs, could teach students to make custom chips without having to pay an arm architecture license fee (in the order of millions) to ARM Ltd.

    1. I study Computer Engineering at Purdue and this semester, we switched over to the RP2350 for our microcontrollers class, and currently I’m taking a class on Risc-V CPU design! We also have a student organization that teaches students more of this stuff, everything from RTL to tapeout. And yes I feel quite pampered haha

  1. I’m surprised that the did not make a 3D holder for the pen to stop the wobble. I also wonder why they did not notice it. Tightening the screw did little to correct the problem.

  2. ICK – are there any general purpose timers with which to learn real-time programming?
    Wrong MCU for that lol. It’s one of the first, most important aspects of embedded systesm programming that I learned at uni. RP2040 not good because there are no input capture/output compare timers.

    1. RP2040 has the arm systick 1 ms timer derived from the watchdog clock in addition to it’s 64-bit timer.

      You can also do input/output compare timers using one of the 4 PIO.

      The RP2040 is a decent MCU to learn the basics, including real time tasking.

    2. How much precision are we talking about? Down to 1 cycle or something like +/- 1usec? RP2040 ticks at 200 MHz, so 200 ticks per usec.

      There are no interrupts on core1 (as opposed to core0), unless you plan them yourself. You are free to cycle-count your code if you want 100% timing control down to 1 cycle.
      There are 8 PIO SMs that allow precise bit transport, but not much math. Good for basic “invert this signal at 50 MHz rate” or “count ones and output run length afterwards” or “implement another USB port PHY” for example.
      If you only need microsecond precision, you can use interrupts and timers. Including using PWMs (probably disconnected from pins) as interrupt timers.
      My favorite option is to use PIO SM and feed DMA circular buffer. That gives you implicit time info. By feeding another PIO SM from DMA circular buffer and starting both synchronously you obtain tick-perfect delay and CPU can just do whatever it wants to drain one buffer and fill the other.
      Or did you mean TI I/O Capture/Compare timers? I think those are called PWM channels on RP2040. They can output fixed frequency at given duty cycle, measure duty cycle, frequency, raise interrupts and be fed with/produce DMA stream.

      Maybe tell us what’s you application and what level of timing precision are we talking about?

  3. This is a really good set of videos if you are serious about understanding microcontrollers. The RP2040 has a rich peripheral set so you can do lots of things with it that may have required specialized port adapters in the past. The course also covers some hardware interface issues like noise isolation and audio harmonics. I watched a few hours of this, currently on lecture 22, Intro to PID control.

    Mostly I program in MicroPython or CircuitPython and so haven’t had to learn the details of PIO, DMA and other RP2040 pieces. Now I have to decide if I have enough brain cells with to finish it and then try some of the labs.

    1. Thanks for that! I learned to use the AVR for my embedded system design class too, around 20 years ago, right before the Arduino really took off.

      I recall that semester being fun, but difficult, because I had to learn the AVR for class and lab exercises, but also had to learn how to use a PIC at the same time for a term project (we didn’t have any choice in the microcontroller selection). At least our professor was awesome, and understanding.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.