[video member=miotatsu stream_platform=twitch project=riscy title="Studying LED Inversion via GPIO" vod_platform=youtube id=gDnZ_UwZ14I annotator=Miblo] [0:05][Recap and set the stage for the day] [1:05][Consult the forums[ref site="SiFive Forums" page="Lots of Questions… (RISCY BUSINESS Day 21)" url=https://forums.sifive.com/t/lots-of-questions-riscy-business-day-21/434] and switch to the updated Getting Started Guide[ref site="SiFive Developers" page="SiFive HiFive1 Getting Started Guide" url=https://static.dev.sifive.com/dev-kits/hifive1/hifive1-getting-started-v1.0.3.pdf]] [6:06][Announce patches to the Arch User Repository hifive1-sdk package[ref site="SiFive Forums" page="Arch Linux and the HiFive1" url=https://forums.sifive.com/t/arch-linux-and-the-hifive1/212]] [10:20][Plug Bruce's experimentations with bit banging[ref site=YouTube page="Bit banging a GPIO on HiFive1" url=https://www.youtube.com/watch?v=0eDS6pGYsCE]][:hardware] [15:16][Consider investing in a 2.8" TFT Touch Shield[ref site=adafruit page="2.8\" TFT Touch Shield for Arduino with Resistive Touch Screen" url=https://www.adafruit.com/product/1651]][:hardware] [18:47][Determine to learn how to control LEDs, and look at our TODOs][:blackboard] [20:37][Scan through demo_gpio.c for code pertaining to the LEDs and bit banging][:research] [25:44][Our goal: To be able to disassemble and understand every instruction] [27:06][Review our understanding of demo_gpio.c][:research] [30:18][Closely read handle_m_time_interrupt() with a view to understanding how it controls the LEDs][:research] [36:53][Marry up the LED offsets in code with the documentation[ref site="SiFive Developers" page="SiFive HiFive1 Getting Started Guide" url=https://static.dev.sifive.com/dev-kits/hifive1/hifive1-getting-started-v1.0.3.pdf]][:research] [41:24][Hunt for the GPIO_OUTPUT_VAL][:research] [46:55][Find the GPIO_OUTPUT_VAL address[ref site="SiFive Developers" page="Platform Reference Manual" url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:research] [49:42][Come to understand how the register offsets work][:research] [51:43][:Research how the GPIO_REG(GPIO_OUTPUT_VAL) call in handle_m_time_interrupt() sets the LED colour, wondering how it sets intensity] [1:00:31][Peruse the Platform Reference Manual on Input / Out Values and Interrupts[ref site="SiFive Developers" page="Platform Reference Manual" url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:research] [1:04:03][Continue to :research how the GPIO_REG() calls control the LEDs] [1:09:55][Read about Output Inversion and Input / Output Values[ref site="SiFive Developers" page="Platform Reference Manual" url=https://www.sifive.com/documentation/freedom-soc/freedom-e300-platform-reference-manual/]][:research] [1:13:40][Determine to test what happens when commenting out the GPIO_REG(GPIO_OUTPUT_EN) call and the leds variable] [1:15:05][We are out of time today] [/video]