Let me give you some advice, as someone who went to school for Computer Engineering (very aware of embedding programming) and now works for a major Internet browser vendor. C may have been considered high level back in the day, but relatively speaking is now one of the lowest level programming languages. While it's simple, and fast, it is verbose as hell to write anything useful. C's idea of portability is also bizarre, relative to modern higher level languages (autotools generates thousands of files). I love C, and it's my go to for lower level languages. I just cannot keep track of all there is to C++, it's like a dog that kept getting legs nailed to it until it was referred to as an octopus. C++ is a great language, but it's not for me. I have one lower level language that I'm expert in, and one higher level language that I'm expert in. Java, and C# in my opinion don't differentiate themselves enough from C (by design) as a dynamically typed language would.
That said, it's worthwhile to learn multiple different languages, even if you don't master them, because each one has something to teach you, will change how you think of programming, and make you more effective in programming with other languages as you can reuse interesting patterns.
Seeing other people say "don't follow new trends" is disappointing; it's so close minded that it's sad to see that they've closed themselves off from learning new paradigms.
For my senior design project, I used C in an embedded device, as well as CoffeeScript to receive info and display it via a web interface. It was awesome to have such fine grain control of the bits when I needed, and the ability to create a Hash with a literal when needed. That's why I recommend on mastering one low level and one high level language.
If you don't agree that higher level is the way to go, Rust has an interesting new approach to systems programming, even if the APIs change every (still in beta) release.