Pic16F877 Flankensteuerung, wie?

OP #688625
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.
Gast
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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.