www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Sauberes "Capture" beim PIC


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich nutze einen PIC18F4550 für einen Frequenzzähler.
Als Compiler nutze ich den C18.
Für eine Periodendauermessung nutze ich das CCP1-Modul zum
im Capture Mode mit dem Timer1.

Ich möchte mehrer Capture´s erstellen, eine Zeitaufwenfige Routine 
stellt
mir dann den mittelwert auf einem Display dar.
Wenn ich das Capture-Modul, oder den zugehörigen Timer1 stoppe, bekomme 
ich bei erneutem Start immer flasche anfangswerte.

Ich dachte nun, ich lasse das CCP immer laufen. Die werte werden 
gespeichert und über die Differenz der Speicherwerte kann ich die 
Frequenz berechnen. Aber wenn das Capture-Modul zufällig dort 
reinschreibt wo ich gerade rechnen möcht hab ich Probleme.

Wenn Timer1 nach jedem Capture auf 0h00 zu setze bekomme ich falsche 
Werte.
Wenn ich das CCP stoppe, bekomme ich falsche Werte.

Wie würdet ihr das realisieren? Vielleicht ein Ping-Pong Puffer?
Oder gibt es da eine einfachere Methode?

Gruß Stefan

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan schrieb:
> Frequenz berechnen. Aber wenn das Capture-Modul zufällig dort
> reinschreibt wo ich gerade rechnen möcht hab ich Probleme.

Nicht nur Du.
Das Problem haben alle, die zum ersten mal mit Interrupts arbeiten.

Generell gilt, Variablen, die ein Interrupt benutzt, müssen im Main 
atomar zugegriffen werden.
D.h.:
- Interruptsperre,
- Interruptvariable in Tempvariable speichern,
- Interruptfreigabe


Peter

Autor: Michael L. (michaelx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur mal so aus Interesse: Welche Frequenzen willst du denn mit dem 
Capture-Modul messen?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.