- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 10

Thema: RC Empfänger an ATMega16

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.237
    Ich würde für diese Aufgabe den ICP Interrupt nutzen.
    Zuerst wird das sensing auf steigende Flanke gestellt.
    Wenn die dann kommt wird das ICP Timer register ausgelesen und das Sensing auf fallende Flanke umgestellt.
    Tritt die dann auf wird das ICP Register wiederum ausgelesen un der vorherige Wert abgezogen.
    Das Sensing muss dann für den nächsten Impuls wieder auf steigende Flanke umgestellt werden.
    Bei 8MHz Taktfrequenz und einen Prescaler von 8 kriegst Du damit einen Auflösung von 1µS.
    Du müsstest dann allerdings einen 16Bit Timer nehmen, weil der Zählerstand ja immer über 255 liegt.

    Die ermittelte Impulslänge kann dann in einer Variable abgespeichert werden. Ich würde dann noch ein Flag ( Bit Variable ) setzen, damit dieser neue Wert im Hauptprogramm bekannt gemacht wird und verarbeitet werden kann.

    Das System läuft gut und scheinbar im Hintergrund, da alle zeitkritischen Operationen im Interrupt stattfinden, also Laufzeiten im Hauptprogramm keinen Einfluss auf die Impulsauswertung haben.

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.06.2005
    Ort
    Gäufelden
    Alter
    39
    Beiträge
    111
    Danke für die Antwort, aber ich glaube das (oder so etwas ähnliches) versuche ich doch gerade oder? Der Empfänger hängt in meinem Fall am IPC1 also PD6. Und da ich die Anzahl der Überläufe zähle die jeweils 10µs lang sind müsste ich doch eigentlich auch auf eine Antwort kommen... ist halt nicht ganz so genau ...

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Hallo,
    wie ist der Empfänger am Mega16 PD6 angeschlossen? Kann es sein, daß der Empfängerausgang ein Open Collector ist und Du da noch einen Pullup Widerstand brauchst - eventuell den internen des Mega16 nutzen?

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.06.2005
    Ort
    Gäufelden
    Alter
    39
    Beiträge
    111
    Ich habe im Moment einfach nur das Kabel an den Pin angeklemmt... also ohne irgendwas. Ich habe mich auch schon gefragt ob ich da noch einen Widerstand brauche aber ich hätte eher einen widerstand zwischen Signal und GND (Pulldown?!?) geklemmt... Wie kann ich denn denn den internen Pullup aktivieren oder muss ich wirklich einfach einen Widerstand anklemmen?

    Gruß

    PS: Was der Empfänger für einer ist kann ich nicht mehr sagen. Er ist ziemlich alt. Bestimmt 15 Jahre oder mehr
    Geändert von Jeti (18.04.2013 um 10:38 Uhr)

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Hi, bei RC Empfängern speziell kenne ich mich nicht aus. Üblich sind Open Collector bei NPN Transistoren. Bedeutet, Du brauchst einen PULLUP Widerstand. Also einfach einen 10k Widerstand von PD6 nach 5V Vcc des Mega16 schalten. Alternativ kannst Du den internen Pullup des Mega16 einschalten. Im PORTD Register das PD6 Bit auf eins setzen bei als Eingang konfigurierten PD6; PD6 ist ja schon in Deinem obigen Programm defaultmäßig auf Eingang, also noch PD6 im PORTD setzen.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.06.2005
    Ort
    Gäufelden
    Alter
    39
    Beiträge
    111
    Ich habe das mit dem Pin PD6 ausprobiert. Leider hat es das Ergebnis nicht verändert. Ich werde nun bei gelegenheit mal einen 10k Widerstand nach VCC schalten. Mal schauen ob das was ändert, dürfte es ja aber eigentlich dann nicht mehr. Sonst noch ideen was falsch sein könnte?

    Nachtrag:
    Ich habe noch ein bisschen rumprobiert und mit ist dabei folgendes Aufgefallen. Es gibt nur zwei Zählerstände die jetzt noch ausgegeben werden. Der eine ist 440... der sagt mir garnicht. Unterbreche ich die gemeinsame GND versorgung von Board und Empfänger und stelle sie wieder her, wechselt dieser zu 2060 und umgekehrt (wobei der Wert nicht bei jeder unterbrechung wechselt). 2060 wären ja dann laut programm 2060 Überkäufe mit je 10µs also genau 20,6ms... kann das sein das der Controller immer nur eine taktflanke auswertet? Entweder positiv oder negativ?
    Geändert von Jeti (18.04.2013 um 12:15 Uhr)

Ähnliche Themen

  1. IR Empfänger
    Von harry3 im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 18.02.2008, 12:38
  2. IR- Empfänger
    Von cbr600 im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 12.05.2007, 17:07
  3. 2m Empfänger
    Von lars2002 im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 07.06.2006, 08:42
  4. lw-empfänger
    Von anabolik im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 04.10.2005, 21:00
  5. atmega16
    Von ürsu im Forum AVR Hardwarethemen
    Antworten: 16
    Letzter Beitrag: 13.01.2005, 21:05

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test