Arbeistweise Atmega

Hallo Leute,
ich komme aus dem Automatisierungs bereich. Daher kenne ich in erster Linie SPS (PLC) Systeme.
Meine Frage wie "Arbeitet" ein Atmega sein Programm ab. Arbeitet er auch Zylisch seine Program ab oder arbeitet er bestimmte Rountinen nacheinander ab z.B. IF-Bedingungen und dann in die Teife weiter oder ganz anders?
Über Infos wäre ich dankbar

Hallo volvodani

wie tief wollen wir da einsteigen? :smiley:

Ne SPS ist nix anderes wie ein Microcontroller mit einem, sagen wir mal "Betriebsystem", wie etwa CodeSys oder ähnliches Geraffel.

Wenn der µC einen Reset durchführen soll, entweder PowerUp oder ein Signal am Reset-Eingang, springt er an eine Adresse in seinem Speicherbereich (der sog. Reset-Vektor). Ab da führt er Befehl für Befehl aus. Und wenn die Folge von (Maschinen-)Befehlen irgendwann ohne Rücksprung aufhört hängt er sich auf (oder erzeugt früher oder später einen Fehler, genauer Trap, wegen fehlerhaftem Befehlscode.

Schleifen muss man schon selber programmieren. "if" kennt der Atmel nicht. Nur Befehle zum Verzweigen im Programmfluß abhängig von ein paar Bits in einem speziellen Register (bspw. ob die letzte Berechnung 0 war oder nicht, ob der letzte Befehl einen Überlauf erzeugt oder nicht, ob der letzte Befehl einen Übertrag ergab oder nicht... etc.)

LG
Peter

Hallo
danke erstmal für die Antwort. Mir geht es darum dass ich den Atmega für schnelle Regelungen baruche und ich wissen wollte ob sich hier auch relevante zylkluszeiten bilden. das heist ich darf max. für das ganze Programm ein durchlaufzeit von 2ms haben. Er muss den Analog auf einen Lichtsenors bzw eines Ultraschallgeber (Gabel) Sampeln. Und in ein verwendbares Siganl zu ansteuerung eines Servos. Das soll eine Bahnkantenregelung für Wickelmaschienen sein. Laufgeschwindigkeit bis 1000m/min.

Das die SPS ein spezieller Microcontoller ist weiss ich. Aber SPSen arbeiten meisten mit einem Prozesssablid oder per Intterupt steuerung. Also sind da die Zykluszeiten relevant da Arbeitsweise. Abbild der E/A erstellen und dann das Programm abarbeiten und dann wierder zurückschreiben der Ausgänge und dann wieder alles von vorne.

Hallo,

also wir sind ja hier im Arduino Forum und deswegen mal ein Hinweis: der Arduino ist keine SPS. Aber es ist sehr einfach, alle Aufgaben, die Du mit einer SPS realisieren kannst auch mit der einfachen Arduino Programmiersprache umzusetzen.

Der Arduino verwendet einen ATMega Mikrocontroller und für diesen kann Du Dir sogar eine Software SPS runter laden, google weiss da mehr als ich gerade.

Der Prozessor taktet in der Regel mit 16MHz, was ausreichen dürfte für Deine Anwendung, denn 2ms sind eine Ewigkeit bei 16MHz.

Guck Dir mal die Beispiele auf www.arduino.cc an und vor allem analogRead() und digitalWrite() in der Reference. Es gibt sogar eine Servo Library, die es erlaubt, Servos ganz easy mit dem Arduino zu steuern. Ich glaube, dass Du das Projekt wirklich einfach mit dem Arduino umsetzen kannst und wenn Du ein Systembild oder ähnliches hier vorstellst findest Du sicher auch eine Menge Hilfe.

Danke erstmal für dei weiteren Infos. Ich habe ja schon einige kleinere Sachen geamacht mit dem Arduino. Mir geht es um eine günstige Basis für diese Projekt da es eine eigene entwicklung auf Basis ATMega sein soll. Dies ist hier eine günstige Basis da fertige Lösungen >600? kosten.

Die frage der Arbeitsweide habe ich nur gestellt da ich verstehen wollte wie der µC intern arbeitet und ich aus der Industrie-Automatisierung komme.