Atmel Programmierhilfe

#3007744
Lesenswert?

Hallo habe ein Problem, vielleicht könnt Ihr mir helfen.

Im ersten fall Hand funktioniert die &~ (undnicht) abfrage und im fall 
Automatik nicht ? Finde leider den Fehler nicht.

Atmega644 mit Pollin Board.


1
#define checkbit(var,bit) (var &(1<<bit))
2
#define setbit(var,bit) (var |= (1<<bit))
3
#define clearbit(var,bit) (var &= ~(1<<bit))
4

5

6
Hand//////////////////////////////////////////////////////////////
7

8
if(checkbit(PINB,3)&~ checkbit(PIND,3))    // Handbetrieb Ein
9
      {
10
        setbit (PORTD,0);          // Pumpe 1 Ein
11
        setbit (PORTD,1);          // Pumpe 2 Ein
12
        setbit (PORTD,2);          // Meldeleuchte Anlage Ein
13
      }                  
14
    else
15
      {
16
        clearbit (PORTD,0);          // Pumpe 1 Aus
17
        clearbit (PORTD,1);          // Pumpe 2 Aus
18
        clearbit (PORTD,2);          // Meldeleuchte Anlage Aus
19
      }                    // Ende Handbetrieb  
20

21
  /////////////////// Automatikbetrieb /////////////////////////////////////////////////////////
22

23
    if(checkbit(PINB,2)&~ checkbit(PIND,3))    // Automatikbetrieb Ein 
24
      {
25
        setbit (PORTD,2);          // Meldeleuchte Anlage Ein
26
      }                
27
    else
28
      {
29
        clearbit (PORTD,2);          // Meldeleuchte Anlage Aus
30
      }                    // Ende Automatikbetrieb
Gast #3008196
Lesenswert?

Wenn man schon mit Makros arbeitet (die man evtl. nicht versteht), dann 
sollten die Makros auch komfortabel sein. Checkbit sollte gleich einen 
boolean zurückgeben:
1
#define checkbit(var,bit) !!(var &(1<<bit))

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren