- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 18

Thema: Kleines externes Interrupt-Problem

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo, Micha,

    ich hab so etwas über ein "Capture" gemacht.
    Ein Timer läuft kontinuierlich (Free Running Mode) und läuft immer wieder über.
    Es wird der Capture Mode so eingestellt, dass er auf positive und negative Flanken reagiert.
    Ein Interrupt "Flanke" speichert dann "automatisch" den momentanen Timerwert in einem 16 Bit Register.
    Das passiert im Controller komplett in Hardware.
    Im Interrupt selbst wird nur der Wert ausgelesen und der vorige Wert abgezogen.
    Wirds negativ, weil der Timer überläuft, dreht man einfach das Vorzeichen vom Ergebnis um.
    Den Timer fässt man nicht mehr an, den lässt man einfach weiterlaufen.
    So kann man sehr präzise Impulse messen.
    Man zählt quasi die Taktzyklen des Timers und das ist Quarzgenau, deshalb darf man den Timer auch nicht anhalten
    oder zurück setzen.

    Ich hab auch Versuche mit 2 Eingängen gemacht, wobei einer nur auf negative, der andere nur auf positive Flanken reagiert.
    Eventuell kann man im Interrupt die Pausenlänge auswerten um festzustellen ob alles Übertragen wurde, also eine komplette Impulskette.
    Die einzelnen Werte landen bei mir in eimen kleinen Zwischenspeicher (Ringspeicher) das mache ich im Interrupt, das geht ja fix.
    Die eigentliche Auswertung mach ich dann im Hauptprogramm.

    Es gibt, wie ich grad im Datenblatt sehe, in dem ATMega 162 sogar einen "Input Capture Noise Canceler"

    The Noise Canceler improves noise immunity by using a simple digital filtering scheme. The
    Noise Canceler input is monitored over four samples, and all four must be equal for changing the
    output that in turn is used by the edge detector.

    Vorsicht ist geboten beim Auslesen des 16 Bit Timerwertes,
    hier muss man dann zuerst das Low Byte lesen, das High Byte wird dann ins temporäre Register übernommen
    Siehe Datenblatt: "Accessing 16-bit Registers"

    Viele Wege führen zum Ziel, das soll nur als Anregung dienen.

    Siro
    Geändert von Siro (07.04.2019 um 20:19 Uhr)

Ähnliche Themen

  1. Kleines Problem mit Assembler
    Von Destroyer im Forum PIC Controller
    Antworten: 5
    Letzter Beitrag: 25.11.2014, 17:28
  2. kleines mathematisches Problem
    Von Felix G im Forum Software, Algorithmen und KI
    Antworten: 7
    Letzter Beitrag: 17.10.2006, 08:58
  3. Kleines Problem mit Motor
    Von cb01 im Forum Mechanik
    Antworten: 10
    Letzter Beitrag: 31.07.2006, 16:47
  4. Kleines I/O-Problem
    Von RCO im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 08.11.2004, 20:43
  5. Kleines Problem mit der Fernsteuerung
    Von Maro im Forum Robby CCRP5
    Antworten: 9
    Letzter Beitrag: 15.08.2004, 16:35

Berechtigungen

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

Labornetzteil AliExpress