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
Interrupteingang verwenden, im Datenblatt nachlesen, man kann die Flanke einstellen. Hubert
"Es ist willkirlich welche erkannt wird." In meiner Glaskugel sehe ich, Du benutzt einen Taster und der ist nicht enprellt. Peter
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.
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
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.
die ersten zeilen kann man ruhig überspringen das sind anfänge von meinem Timer :-)
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 ;-).
@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.
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. :-//
@ Unbekannter: Danke für die Blumen - und was ist an Deinem Vorschlag jetzt so grundlegend anders?
Gar nichts. Er hat nur Deinen PseudoCode in Assembler uebersetzt (und damit NAS4Killer die Arbeit abgenommen)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.