AVR ICR1 am AT90CAN 8 PWM Signale auswerten (RC) mit MUX CD4051BE

OP #4438701
Lesenswert?
• ▲
▼
Hallo,

ich kämpfe nun schon eine ganze Weile mit einem Problem. Ich versuche 
über den ICR1 am AT90CAN 8 PWM Signale auszuwerten. Vor dem Pin habe ich 
einen Muxer Baustein (CD4051BE) geschallten, der abwechselnd bis zu 8 
Kanäle vom RC Empfänger durchschaltet.
Die ISR (TIMER1_CAPT_vect) ruft eine Funktion auf, welche die 
Zählerstände auswertet und den Muxer schaltet.

ISR (TIMER1_CAPT_vect)
{
  icp_call();
}

Je nach Flanke wird der Wert des ICR1 ausgewertet und in ein Array 
geschrieben. Zudem wird noch ein FLAG in der 8Bit Variable "result" 
gesetzt. dies benötige ich zum auswerten eines kompletten 
Empfangszyklus.

int icp_call()
{
  cli();
  if (EDGE == negative)
  {
    diff[mux_CH] = ICR1 - start[mux_CH];
    EDGE = positive;
    TCCR1B |= (1<<ICES1);
    result |= (1<<mux_CH);
    PORT_MUX &= 0xF8;
    mux_CH++;
    PORT_MUX |= mux_CH;
    if (mux_CH == max_CH)
    {
      mux_CH = MUX_CH0;
      PORT_MUX &= 0xF8;
    }
  }
  else if( EDGE == positive)
  {
    start[mux_CH] = ICR1;
    EDGE = negative;
    TCCR1B &= ~(1<<ICES1);
  }
  sei();
  return 0;
}

Wenn man sich nach einem Durchlauf den Inhalt von diff[i] ansieht, dann 
stellt man fest, dass nur zwei Kanäle ausgewertet werden. für i = 0 und 
i = 2 erhält man exakt die selben Werte. Genau so für i = 1 und i = 3. 
Es scheint als ob hier irgendein Bit Dreher enthalten ist. Leider sehe 
ich diesen nicht (Betriebsblind).

Kann von euch jemand meinen Fehler sehen? (Kompletter Code im Anhang) 
Danke für eure Hilfe.

Gruß

Fabian
Angehängte Dateien:
OP #4439205
Lesenswert?
• ▲
▼
Manchmal ist es einfach besser man geht noch einmal in Ruhe alles durch. 
Es hat sich herausgestellt, dass ich am Anfang aus Bequemlichkeit nur 
den Pin 'A' des Muxers angeschlossen habe.

Es bestätigt sich mal wieder: Kaum macht man es richtig - schon 
funktioniert es!

Trotzdem danke!

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.