Nein, volatile sorgt nur dafür das der Compiler an der Variablen nichts
rumoptimiert.
Du definierst eine globale Variable indem du sie ausserhalb einer
Funktion definierst, wie du es auch fast richtig gemacht hast, nur die
10 dahinter ist Murks. Wenn du ihr einen Startwert geben wolltest, muss
noch ein = dazwischen.
Temperatur_Soll = Temperatur_Soll + 0.5 funktioniert nicht, da 0.5 keine
Ganze Zahl ist, Temperatur_Soll jedoch schon.
Und statt:
1 | //Interrupt wird ausgelöst bei fallender oder steigender Flanke (INT0,INT1)
|
2 | GIMSK = (1 << DDB6) | (1 << DDB7);
|
3 |
|
4 | //Interrupts INT0, INT1 reagieren auf steigende Flanken
|
5 | MCUCR = (1 << DDB0) | (1 << DDB1) | (1 << DDB2) | (1 << DDB3);
|
schreibst du besser:
1 | //(INT0,INT1) Interrupt kann ausgelöst werden
|
2 | GIMSK |= (1 << INT1) | (1 << INT0);
|
3 |
|
4 | //Interrupts INT0, INT1 reagieren auf steigende Flanken
|
5 | MCUCR |= (1 << ISC11) | (1 << ISC10) | (1 << ISC01) | (1 << ISC00);
|
Ist übersichtlicher und ändert nur was du auch ändern willst.