Campbell strikes late as Charlton edge Stoke to boost championship survival push