[gelöst] Atmega8 & IR-Empfänger: Portd 2-5 nicht nutzbar??

  • Hallo liebe Community,


    hab mir einen IR-Empfänger für die Fernbedienung aus dem Shop programmiert: Code.txt (Basic)


    nicht professionell, funktioniert aber und reagiert auf jede Taste individuell.
    Weil ich aber nicht immer warten möchte, bis das durch eine Taste gestartete Programm beendet ist, will ich nun mit Interrupt arbeiten.


    Die entsprechenden Eingänge sind beim Mega8 PD2 und PD3:




    Schließe ich also den an PD0 und PD1 mit dem oben verlinkten Code funktionierenden Infrarotempfänger
    an PD2 funktioniert gar nichts. Code dazu: Code2.txt (noch ohne Interrupt)
    Auch an PD3, 4 und 5 (INT1, T0 und T1) empfängt das Progamm keinen verwertbaren Code. (-> Variable D ist am Ende der Abfrageroutine 0)


    Erst PD6 und PD7 funktionieren wieder.
    woran kann das liegen??
    schließlich sind Interrupts ja von Anfang an deaktiviert, die Pins dürften in meiner Konfiguration also ganz normal als Eingang funktionieren!?



    thx, Elite

  • Lade mal die Fusebits und setzte JTAGEN auf False, also nicht markiert, dann sollte es gehen ;) Achja speichern der Fusebits nicht vergessen.
    Das sind nämlich die Pins die für das debuggen per JTAG benutzt werden, die sind teilweise werksseitig über JTAGEN gesperrt, wenn du das Fusebit änderst kannst du sie wieder benutzen, aber nicht den JTAG, da man den aber eh quasi nicht braucht (ich habs noch nie gebraucht) ist das kein Ding. Das selbe Problem hatte ich bei meinem Cube damals auch.

  • sehr eigenartig, ist das bild bei geladenen fusebits? Oder einfach nur auf fusebits geklickt? Ich kann da kein Bit finden, was irgendwelche Ports blockiert. Allerdings geht meine nächste Überlegung dahin, ob RC5, also das Signal vom IR-Empfänger überhaupt sinn macht an einen Interupt, den ein Interrupt unterbricht ja alles, wenn ein High-Signal ankommt. Da aber RC5 nicht nur einfach ein Highsignal sondern eine ganze Armada von High und Low-Signalen. Ich weiß nicht ob dua die Decodierung über den INT überhaupt sinn macht.

  • Dass du die Fuse nicht finden kannst, liegt daran, dass der Atmega8 ga kein JTAG hat... Atmega16 kanns...


    Ein RC5 Signal besteht aus maximal 14 High pegeln. Aus dem Zeitlichen Abstand kann geschlossen werden, ob nun das Bit 0 oder 1 ist.


    http://www.sbprojects.com/knowledge/ir/rc5.htm


    Hat NEC auch RC5?? Entwickelt wurde das ja vom Philips



    Schau mal nach, ob du die richtigen Eingänge verwendest. du brauchst einen, der einen externen Interrupt verarbeiten kann. Schau mal im internet nach Schaltplänen zu deinem Code. Der RC5 Code für Basic sollte gut dokumentiert sein.
    Soweit ich weiß (Ich programmier kein Basic) braucht der Code für Basic zwingend einen interrupt. Andere Pins funktionieren damit also nicht.

  • foo38
    Das Signal heisst, so wie RC5 RC5 heisst NEC Protocol:
    http://www.mcselec.com/index.p…ask=view&id=223&Itemid=57


    Beiträge hier im Forum sind die zwei:
    Fernbedienung und Bascom
    RGB-Fernbedienung aus'm Shop, welcher IR-Typ?


    Bei der Verarbeitung des empfangenen Code habe ich auch keine Probleme sondern bei der Verwendung eines Interrupteingangs.


    Zitat

    Schau mal nach, ob du die richtigen Eingänge verwendest. du brauchst einen, der einen externen Interrupt verarbeiten kann.


    Du meinst sicher die in meinem ersten Beitrag erwähnten PD2 und PD3 (auch im Bild ersichtlich).

    Zitat

    Andere Pins funktionieren damit also nicht.


    bisher funktionieren nur die ohne...
    danke dir




    Kanwas
    das wusste ich nicht und werde das mal ausprobieren müssen, danke



    bleibt trotzdem die Frage: (wie) lassen sich die Interrupteingänge PD2 und PD3 verwenden?
    Fightclub hatte schließlich auch ein ähnliches Problem