I appreciate what arduino has done, but at some point it's too much.
There's nothing "basic" about the hardware itself: you can at any time switch to C and compile with gcc, just like for any Atmel chip.
Great guide here on how to do that.
If you want even more control, you can just use the avr C libraries with any atmega328, Arduino included.
It's sort of similar to how Python runs on top of C. To the processor, it's all the same. It had no idea that you wrote your application in C or Python. They both end up as machine instructions.
Production-ready examples that are so much more capable than Arduino:
Cypress PSoC 4/5/whatever (these guys are pretty schmick)
Atmel ATMegas, the chips behind Arduino.