Sorry für meine Blindheit, die Typenbezeichnung steht ja im Titel *brrrrrrrr*.

Zitat Zitat von Phoenix2k
... Interrupt etc. sagt mir im Moment leider noch nicht viel ...
Das ist schlecht.
Zitat Zitat von Phoenix2k
... Da muss ich mich noch schlau machen ...
Das klingt gut.
Zitat Zitat von Phoenix2k
... Am liebsten wäre mir ein link zu nem Beispielprogramm in "C" gewesen, damit ich sehe wie man das Ganze programmieren muss.
Das kann ich mir vorstellen .

Das hier
Code:
/* >> 
 ===================================================================================
  Target MCU        : M168
  Target Hardware   : m168D   Direktor für R2D03
  Target cpu-frequ. : In der Quelle wählbar
 ===================================================================================
....
 ================================================================================ */

  
/* ============================================================================== */
/* ===  Initialisierung fuer EXT_INT0/1 auf Pin 16+17/mega168  =====================
$002 jmp SIG_INTERRUPT0 ; IRQ0 Handler   _VECTOR(1)
$004 jmp SIG_INTERRUPT1 ; IRQ1 Handler   _VECTOR(2)               */
void XTI_0_1_init( void )	
{                               //Initialisiere beide Interrupts auf rising edge
                                //  d.h. EICRA ISC00,01,10+11 auf 1 (doc,S68)
    EICRA  |= (1<<ISC11)|(1<<ISC10)|(1<<ISC01)|(1<<ISC00);
    EIMSK  |= (1<<INT1)|(1<<INT0);	//  und erlaube diese I´s in EIMSK
}
/* ============================================================================== */


/* ============================================================================== */
/* ===  Nicht unterbrechbare ISR für EXT_INT1 auf Pin 17/PD3/mega168  =========== */
/* Routine setzt einfach einen Zähler hoch.
    Sonst wie ISR für EXT_INT0 für Motor li,re und PWM/Geschw.     */
ISR(SIG_INTERRUPT1)
{
    Iencdr2 ++;				//zähle Counter/encoder2 hoch
    Iz_yseci2 = Izeit_1;		//Weise Iz_ysec2 dem akt. Timerwert zu
    Iz_diff2 = Iz_yseci2-Iz_ysecv2;	//Neue Zeit-Differenz2 ausrechnen
    Iz_ysecv2 = Iz_yseci2;		//der aktuelle Zeitwert wird "Alter"
}
/* ============================================================================== */
/* ============================================================================== */
ist für (m)einen mega168 und sorgt bei diesem Antrieb für die Messwerterfassung. Die hier genannten Variablen sind wohl alle volatile uint16_t.

Hilft das?