[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]
