Counter: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(Artikel verständlicher formuliert.)
K (Code: +Kommentare)
Zeile 13: Zeile 13:
 
==Code==
 
==Code==
 
Code für die src-Datei:
 
Code für die src-Datei:
<source lang="text">
+
<source lang="c">
 
CONTROL_START
 
CONTROL_START
 
         ECMD_GLOBAL(pc_counter, 0);
 
         ECMD_GLOBAL(pc_counter, 0);
Zeile 19: Zeile 19:
  
 
                 // Pullup-Widerstaende aktivieren
 
                 // Pullup-Widerstaende aktivieren
                 PORTD |= _BV(PORTD2);
+
                 PORTD |= _BV(PORTD2); // activate pullup on D2
                 DDRD |= _BV(DDD2);
+
                 DDRD |= _BV(DDD2);   // set D2 to input
                 PIND &= ~_BV(PIND2);
+
                 PIND &= ~_BV(PIND2);  
  
                 _EIMSK |= _BV(INT0);
+
                 _EIMSK |= _BV(INT0); // external interrupt request 0 enable
                 _EICRA |= _BV(ISC01);
+
                 _EICRA |= _BV(ISC01); // the falling edge of INT0 generates an interrupt request.
 
         END
 
         END
 
CONTROL_END
 
CONTROL_END

Version vom 15. September 2010, 20:21 Uhr

Dieses Beispiel zeigt, wie man einen Impulszähler mittels eines Control6-Skripts erstellen kann. Der Signaleingang ist am INT0-Pin.

Abfrage

Counter-Abfrage mittels ECMD über TCP:

gummi:~# echo "c6 get pc_counter" | socat stdio tcp4:10.0.0.40:2701
pc_counter 98

oder mittels ECMD und Webbrowser:

http://10.0.0.40/ecmd?c6+get+pc_counter

(liefert "pc_counter 98" im Browser).

Siehe auch ECMD Protocols.

Code

Code für die src-Datei:

CONTROL_START
        ECMD_GLOBAL(pc_counter, 0);
        ON STARTUP DO

                // Pullup-Widerstaende aktivieren
                PORTD |= _BV(PORTD2); // activate pullup on D2
                DDRD |= _BV(DDD2);    // set D2 to input
                PIND &= ~_BV(PIND2); 

                _EIMSK |= _BV(INT0);  // external interrupt request 0 enable
                _EICRA |= _BV(ISC01); // the falling edge of INT0 generates an interrupt request.
        END
CONTROL_END

ISR(INT0_vect)
{
        pc_counter ++;
}

Siehe auch