mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pic16F877 Flankensteuerung, wie?


Autor: Daniel P. (dpointeck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Ich will mich zuerst kurz vorstellen.
Bin relativ neu in der uP programmierung.
Deshalb möchte ich euch bitten mit mir ein bisschen nachsichtig zu sein.
Nun zu meinem Problem:

bitte seht euch das mal an.
ich möcht mit dem Pic ein Blinklicht überwachen,
dabei kam mir ein Interrupt am sinnvollsten vor.

Das sieht dann so aus:

zuerst überwache ich RB4 ob das Blinksignal da ist.
quasi bei jedem Blinktakt soll 1 dazugezählt werden.

void interrupt isr(void)
{

  GIE=0;

    if (RBIF)                  // Am port B hat sich etwas geändert
    {

    if ((PORTB & 0b00010000)== 0b00010000)
    {
      a++;
    }

  }

  RBIF = 0;

  GIE=1;

}

und dann auswerten--> ich sag mal min. 10 Blinktakte sind ok.

also

if(a >= 10)
{
    Blink_ok = 1;
}

mein Problem ist das ich aber noch weitere Eingänge am PortB beutze und 
ich ein High von RB4 auch ein Fehler ist.

Also meine denkweise. wenn High dann wird ohnehin nur einmal gezählt 
also kann nie 10 erreicht werden und bei low wird nicht gezählt.

so jetzt zum Fehler. Der Interrupt wird immer ausgelöst wenn sich am 
PortB was ändert und wenn die Leuchte(RB4) dauernd auf high ist, wird 
der Interrupt über einen anderern Eingang am PortB ausgelöst.
Also wird auch bei dauern High raufgezählt.

Eine Idee wäre Flankensteuerung wie funktioniert das beim 16F877???

mfg Daniel.

Autor: Daniel P. (dpointeck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Niemand ne Idee dazu???????????

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du darfst eben nur zählen, wenn RB4='1' ist, und beim letzten Lesen '0' 
war.

Tip: Wenn gezählt wurde, dann das Zählen sperren und erst wieder 
freigebenbis RB4='0' ist.

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.