mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Positive Flanke


Autor: NAS4Killer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich will das der Controller bei einer Positiven Flanke also nur wenn
der Wert von Loq auf High springt an einem bestimmten Pin einen Zähler
hochzählt. Dummer weise habe ich kein befehel gefunden der auf Positive
Flanken Reagiert.

Mit den Spis und Spic Befehlen funktioniert es zwar teil weise doch
Leider wir nicht jede Flanke erkannt. Es ist willkirlich welche erkannt
wird. Ich vermute das es an den Zeiten Liegt.

Ich verwende den AT90S4433.

Habt ihr ideen ? Danke

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interrupteingang verwenden, im Datenblatt nachlesen, man kann die Flanke
einstellen.
Hubert

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Es ist willkirlich welche erkannt wird."

In meiner Glaskugel sehe ich, Du benutzt einen Taster und der ist nicht
enprellt.


Peter

Autor: NAS4Killer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch deine Glaskugel liegt falsch

Ich benutze ein Externes Signal wo mir immer nach ca einer sek ein
signal für ca 500ms generiert wird.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und warum hängst Du dann nicht den SourceCode als Anhang ran ?

Meinst Du etwa, es macht Spaß, nur im Nebel zu stochern und
Ratespielchen zu spielen ?

Und leiere Dir auch noch ausssagekräftige Kommentare zum Code aus dem
Kreuz.

Es ist nämlich ganz häufig so, daß man, wenn man versucht, den Code
einem anderen zu erklären, sofort über den Fehler stolpert.


Peter

Autor: NAS4Killer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe zu jeder meiner Zeilen ein Kommentar drin. Ich hänge ihn gleich
an muss nur notebook einschalten und kopieren.

Ich habe ihn nicht rangehängt da sich über sowas auch einige
beschwären.

Autor: NAS4Killer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier als anhang mein ASM

Autor: NAS4Killer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die ersten zeilen kann man ruhig überspringen das sind anfänge von
meinem Timer :-)

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Flankenerkennung kann man auch in Software machen, indem man sich
ein Flag reserviert und dieses 1 setzt, wenn der Pin-Pegel 1 ist und 0,
wenn der Pegel 0 ist. Wenn man dann wieder den Pin abfragt, vergleicht
man den Istwert mit dem Flag, wenn Flag 1 und Pin 0, dann negative
Flanke, wenn Flag 0 und Pin 1, dann positive Flanke; bei keinem
Unterschied war´s ein stabiler Pegel. Nachdem man den Pin dann
erfolgreich abgefragt und verglichen hat, aktualisiert man das Flag
wieder mit dem zuvor gelesenen Wert. Wenn man o.g. Routine zyklisch mit
einem Timer-Interrupt (alle 10ms vielleicht) aufruft, hat man
automatisch auch noch eine Entprellung drin. Das ganze jetzt in Code zu
fassen, ist Deine Aufgabe ;-).

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@NAS4Killer:

Das von TravelRec kannst Du ignorieren, er hat Dein Problem nicht
verstanden.

Du machst folgendes falsch: Du überprüfst nur, ob der Pin High ist.
Wenn er High ist, springst Du in Dein Program.

Das ist natürlich falsch. Du willst ja eine positive Flanke erkennen.
Eine positive Flanke besteht aber aus zwei Teilen. Zuerst ist der
Eingang Low, danach ist der Eingang High.

Du musst in Deinem Programm also ungefähr folgendes machen:

 1.: Lese Eingang.
 2.: War der Eingang nicht Low (war er also High), dann zurück zu 1.
 3.: Lese Eingang.
 4.: War der Eingang nicht High (war also Low), dann zurück zu 3.
 5.: Flanke erkannt, in Dein Programm springen.
 6.: Wieder bei 1. anfangen.

Autor: NAS4Killer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja klar Prinzipiel weis ich ja wie das sien soll. Habe ich ja auch
versucht geht nur nicht :-/

und der Befehl denn ich jetzt da verwende soll doch angeblich das
machen der Prüft ob der Pegel High schon vorhanden ist. Oder ob er
gerade kommt.

Ignorieren tu ich keinen :-)
Also die Sache mit der Flanke. Versteh ich nicht so ganz wie du das
meinst. Hört sich aber eigentlich nicht so schlecht an. denk ich.

:-//

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
l1:  sbic PORTB, 0
     rjmp l1
l3:  sbis PORTB, 0
     rjmp l3
     rcall programm
     rjmp l1

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Unbekannter: Danke für die Blumen - und was ist an Deinem Vorschlag
jetzt so grundlegend anders?

Autor: Karl heinz Buchegger (heinzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gar nichts.
Er hat nur Deinen PseudoCode in Assembler uebersetzt
(und damit NAS4Killer die Arbeit abgenommen)

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Heinz, ich hatte schon Zweifel ;-)

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.