Sorry für meine Blindheit, die Typenbezeichnung steht ja im Titel *brrrrrrrr*.
Zitat von
Phoenix2k
... Interrupt etc. sagt mir im Moment leider noch nicht viel ...
Das ist schlecht.
Zitat von
Phoenix2k
... Da muss ich mich noch schlau machen ...
Das klingt gut.
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?
Lesezeichen