Sagen wir mal so - wenn ich Dir nen Link sende, dann liest Du das Zeugs nicht durch :-/Ja klar, verstehen tuh ich das ... bekomme es halt nicht ordentlich in "C" umgesetzt.
Sagen wir mal so - wenn ich Dir nen Link sende, dann liest Du das Zeugs nicht durch :-/Ja klar, verstehen tuh ich das ... bekomme es halt nicht ordentlich in "C" umgesetzt.
Ciao sagt der JoeamBerg
Doch habe ich. verstehe allerdings nur "Bahnhof"...
Wo ist bei dir denn die Auswertung der "Phasen" ?
- - - Aktualisiert - - -
Doch habe ich. verstehe allerdings nur "Bahnhof"...
Wo ist bei dir denn die Auswertung der "Phasen" ?
__________________________________________________ _________________
/*Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.*/
( <-- Das ist Glubschie, er ist nett )
// === Nicht unterbrechbare ISR für timer2 =================================== */ // Routine zählt hoch im Takt 20 kHz = 50 µs. Der Zählerwert wird von den ISR für // EXT_INT0 und -INT1 ausgelesen ISR(TIMER2_COMPA_vect) // // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { // Izeit_1 --; // ###>>> Izeit_1 ist aktuell int16_t ==>> // Izeit_1 bleibt bis 32000 in der int16-Grenze tupUM0 ++; // Tupsicounter für Umdrehungsmessung(en) tmrE0 ++; // Encodertimer hochtickern tmrE1 ++; // Encodertimer hochtickern //RCzeit1 ++; // Tupsicounter uint16_t für RC-5-Decoding if ( Izeit_1 ) // Interrupt-Timer = 1 ... 20 000 ... (1 sec blink) { } // WENN Izeit_1 =|= Null => wahr => Anweisung ausgeführen else // Izeit_1 = Null = unwahr, daher "else" ausführen { // Eine Sekunde ist voll => Izeit_1 = Izthrznt; // ansonsten: Rückstellen auf Zeithorizont ToggleBit (PgLED, L1g); // gnLED toggeln HEARTBEAT <<####, aktuell PC1 Isecundn ++; // Sekundenzähler hochtackern, max 9 Std } // Ende if (Izeit_1 ) if (tmrE0 > 2000) // Grenzwert für Stillstand // ... usf
__________________________________________________ _________________
/*Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.*/
( <-- Das ist Glubschie, er ist nett )
Wenn du das ganze in [code] tags packst, bleibt es lesbar
Da steht aber nur was von Encodertimern. Nimm mal die Zeilen:
in dem Fenster wo drüber steht: "Die vollständige ISR für (m)einen Encoder bei Archie ..." - das ist GENAU das Vorgehen wie weiter oben mit der Kanalskizze beschrieben.Code:// Encoderticks Iencdrx nur hochzählen, IencBx rauf- od runterzählen Iz_diff0 = tmrE0; // Abspeichern Zeit seit dem letzten ISR-Aufruf tmrE0 = 0; // Resetten ##>> IN der ISR ohne CLI/SEI möglich Iencdr0 ++; // Incrementiere Encodercounter, zählt NUR aufwärts if (IsBitSet (PIND, 4)) IencB0++; // Rad treibt vorwärts, math. negativ else IencB0--; // Rad treibt rückwärts, math. positiv
Ciao sagt der JoeamBerg
Lesezeichen