wie funktioniert diese Interrupt Routine?

Gast #4616910
Hallo liebes Forum,
ich verstehe folgende Interrupt Routine nicht.
http://wiki.electronics-irc.net/Avr_rc5_remote_control

Hier wird ein RC5 Code eingelesen, welches aus 14 Bit besteht und mit 
Manchester Codierung in eine Union nach data.raw eingelesen wird.
Also Bitfolge 10 --> High Bit und Bitfolge 01 --> Low Bit.
Wie erkennt er High und Low? WIe funktioniert die ISR?
Danke.
1
 SIGNAL (INT0_vect)
2
{  
3
  int pos = 0;
4
 
5
  if (!flag) {
6
    data.raw = 0;
7
 
8
    // triggers on falling edge of start bit 1.
9
    _delay_ms(0.2);
10
 
11
    while (pos < 14) {
12
      data.raw = (data.raw << 1) | ((~PIND & 0x04) >> 2);
13
      _delay_ms(1.8);
14
      pos++;
15
    }
16
 
17
    flag = 1;
18
  }
19
}
Gast #4616935
>>Wie erkennt er High und Low?
>(~PIND & 0x04)

Genau, hier liest der µC am PortD das 3.Bit --> PD2 aus.
Mir geht es darum, wie er die Manchester Codierung erkennt....
Gast #4617006
>Mir geht es darum, wie er die Manchester Codierung erkennt....

In dem gezeigten Code-Schnippsel gar nicht. Da werden nur Bits 
zusammengeklatscht, aber nicht interpretiert.


Hier lesen:

> // Do with data from the remote control here what you like.
Gast #4617024
Suchender schrieb:
> Genau, hier liest der µC am PortD das 3.Bit --> PD2 aus.

.. und packt das Ergebnis (high/low) in die Struktur der 
Manchester-Codierung - Bit für Bit

Suchender schrieb:
> Mir geht es darum, wie er die Manchester Codierung erkennt....

Wenn Du den von Dir eingestellten Link auch liest (Englisch kannst Du ja 
wohl) kommst Du auch weiter.
Gast #4617068
Oben ist die Bitfolge falsch:
> Also Bitfolge 10 --> High Bit und Bitfolge 01 --> Low Bit.
Richtig ist:
Bitfolge 10 --> Low Bit und Bitfolge 01 --> High Bit

Nun kann er auch stumpf alle 1,8ms (eine xx-Bitfolge) einlesen, weil das 
2.Bit des Manchester Code für High oder Low entscheidend ist. Jetzt habe 
ich es.... :)

Danke. :)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.