Atmel Programmierhilfe

OP #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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.