www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Negative Flanke mit Atmega 32 abfragen


Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich habe ein kleines Problem und zwar habe ich mir bei Pollin das Atmel 
Evaluations Board Gekauft und einen Atmega 32.

Nun möchte ich ein Programm schreiben in dem Eine negative Flanke 
abgefragt werden soll die an PB0 ankommt und wen dan an PB4 ein High 
kommt möchte ich das er mir an PC1 ein Hihg rausgibt.
Allerdings weiß ich nicht wie ich die Neagtive flanke abfrage und mir 
diese dan speichern kann bis an PB4 ein High kommt.

Ich hoffe ihr versteht was ich meine.

Programmieren tuhe ich mit AVRstudio in C.

Habe zwar schon erfahrung mit dem Programmieren in C durch die Schule 
aber wir haben bis jetzt leider noch nicht gelernt eine Flanke 
abzufragen.

Habe auch schon im Forum gesucht aber irgendwie nicht das gefunden was 
ich suche.

Schon mal im vorraus danke für eure Hilfe!!

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
könntest du auch andere Ports verwenden?
Wenn du D2(INT0) und D3(INT1) benutzt kannst du das über Interrupts 
machen.
Ob auf steigende/fallende Flanke getriggert werden soll kannst du in den 
Registern einstellen ( Datenblatt S.66/67, Kapitel "External 
Interrupts")

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nen auswechen auf nen andern Port ist leider nicht möglich da ich von 
dem Controllerboard auf ne Leiterkarte gehe die schon vorgefertigt ist 
und auf der habe ich nur den PB zur auswahl als eingang.

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir keiner weiterhelfen ich komme einfach nicht weiter!!!!

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was meinst du mit negativer Flanke genau?

              Die
               V
+x V -------+
            |
 0 V        +------


oder

              Die
               V
 0 V ----------+
               |
-x V           +------

Wie groß ist x?

Je nach dem muss man eine Eingangsschaltung benutzen. Negative oder zu 
hohe Spannungen tun dem AVR aua. Die muss man zuerst in einen 
verträglichen Bereich bringen.

Wie oft kommen die Flanken (Frequenz)?

Die Frequenz ist wichtig für die Auswahl der Eingangsschaltung und für 
die Auswahl der passenden Programmstruktur.

Bei niedrigen Frequenzen kann man mit Polling ("Abfragen") arbeiten. 
Laufend den Zustand der Leitung abfragen und wenn sich der Zustand alt = 
HIGH zum Zustand neu = LOW geändert hat, hast du eine Flanke entdeckt.

Bei hohen Frequenzen ist Interruptbetrieb angesagt, d.h. du bereitest 
die Hardware des AVR so vor, dass diese unabhängig von deinem Programm 
auf die Flanke reagiert.

Ein Zwischending ist die Überwachung der Leitung in einer Timerroutine. 
Der Timer läuft öfter als dein Hauptprogramm und unabhängig "neben" 
deinem Hauptprogramm. In der Timerroutine wird dann Polling gemacht.

Für sauberen Interruptbetrieb gibt es verschiedene Möglichkeiten. Je 
nach Möglichkeit, muss aber das Signal an einem bestimmten Pin 
angeschlossen sein.

Der Analog Comparator vergleicht ein Signal mit einem Vorgabewert und 
kann einen Interrupt erzeugen, wenn der Vergleich so oder so ausfällt. 
Beispiel: Vergleiche Signal mit 2,56V (interne Referenz). Eingestellt 
wird Interrupt schmeissen, wenn Signal < Referenz. Das wird eine 
HIGH-LOW Flanke erkennen.

Die Input Capture Unit kann ebenfalls benutzt werden. Hier kann man 
direkt den Trigger (Auslöser) einstellen, ob eine steigende Flanke oder 
eine fallende Flanke den Interrupt auslöst.

Spielt bei der Signalquelle Prellen eine Rolle?

Wenn ja ist eine Entprellung notwendig.

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die flanke ist imprinzip keine Negative Flanke sondern eine 
Fallende Flanke as beudet sie sieht wie folgt aus:

+5V         _
           |   |
           |   |
OV    _____|   |______

Das signal ist normeler weise 0V-24V habe aber alle eingehenden und 
ausgehenden Singnale des controllers mit Opptokoplern galvanisch 
getrennt und so aufgabeut das am Controller 5 V Signale ankommen.

Das signal ist nur zum Auslösen einer schleife gedacht in der dan eine 
Funktion ausgführt wird.

Das signal kommt wenn es hoch kommt villeicht alle 10s also keine hohe 
frequenz.

Es sind insgesamt 4 solcher signale die jeweils etwas anderes auslösen 
sollen und wenn möglich sollten sie am PB0-PB3 angeschlossen werden.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Anfänger würde ich dann ein Programm mit Polling schreiben.

Es hängt von der tolerierbaren Reaktionszeit auf ein ankommendes Signal 
ab, wie oft du abfragen musst bzw. wie viel Rechenzeit deine Funktionen 
zwischen den Abfragen verbrauchen dürfen. Wenn die Rechenzeit in den 
Funktionen länger ist, musst du die in kürzere Routinen umschreiben.

Und weil es jetzt schon vier Signale sind, würde ich mir die Infos zu 
Statemachine ansehen. Das kann helfen wenn man keinen schwer zu 
pflegenden Spagetticode haben möchte.

Der Optokoppler hilft beim Thema Entprellung nicht. Wenn das 0..24V 
Signal vor dem Optokoppler prellt, wird auch das Signal hinter dem 
Optokoppler prellen.

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne das Signal prellt nicht das wir mir von eriner SPS übergeben.

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.