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!!
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")
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.
kann mir keiner weiterhelfen ich komme einfach nicht weiter!!!!
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.
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.
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.
Ne das Signal prellt nicht das wir mir von eriner SPS übergeben.
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.