Ulvestad began his career with hometown club Aalesunds FK before switching to Burnley in 2015, where he made five appearances as the Clarets won promotion to the Premier League.
The 24-year-old becomes Russell Slade's 11th signing of the summer.
"Fredrik will add a different dimension to us," Charlton manager Slade told the club website.
"He's extremely fit and has probably been a bit unlucky to not have had more of an opportunity at Burnley. He's different to what we have got and that is exactly what I wanted."