bool ist normalerweise vom typ int. und dieser Typ ist in c für diesen
Prozessor der Default-Typ, in der Regel der schnellste.
Bei einem reinen 8-Bitter könnte bool jedoch Performance kosten.
Zudem kann 16 oder 32 Bit für eine binäre Info RAM kosten.
Dein Code ist zwar richtig (die Funktionen liefern 0 oder 1 zurück), der
Quelltext sagt aber, dass es nur zufällig so ist.
Hättest Du ein Höherwertiges Bit getestet, so wäre der Rückgabewert 2, 4
oder was auch immer. Das ist auch OK, nur ist der Rückgabewert dann
strenggenommen nicht bool (0/1), sondern 0/!=0.
1 | static inline bool EndPosition (void){
|
2 | return 0!=(PINA&(1<<3)); //PINA3 - End position Switch
|
3 | }
|
oder einfach doppelt negieren
1 | static inline bool EndPosition (void){
|
2 | return !!(PINA&(1<<3));
|
3 | }
|