Forum: Mikrocontroller und Digitale Elektronik AVR Timer während HW-int weiterlaufen lassen?


von ein-azubi (Gast)


Lesenswert?

Hallo zusammen,

bei einem Projekt (Fertigungsstraße) in der Ausbildung wurde einen 
Roboterarm (Arexx RA2 V3) verwendet. Dieser hebt einen kleinen 
Alu-Zylinder von einem Förderband und stellt ihn auf ein Lagerplatz.

Diejenigen die das Projekt angefangen haben, sind schon seid längerem 
nicht mehr da und mein Ausbilder hätte jetzt gerne, dass man aus dem 
NOT-AUS ein NOT-Halt realisiert, so dass der Alu-Zylinder den der 
Roboter hat, nicht ständig rausfliegt wenn der Not-Aus gedrückt wird.

Jetzt wäre meine Idee gewesen, ein Hardware Interrupt zu realisieren. 
Aber da stellt sich mir die Frag:

laufen die Timer von dem µC (ATMEGA 64A) noch weiter während des 
HW-Interrupts oder bleiben die auch stehen? Gäbe es eine elgantere 
Lösung?

Vielen Dank schonmal im vorraus.
ein-azubi

von spess53 (Gast)


Lesenswert?

Hi

>laufen die Timer von dem µC (ATMEGA 64A) noch weiter während des
>HW-Interrupts oder bleiben die auch stehen?

Sie laufen weiter.

MfG Spess

von ein-azubi (Gast)


Lesenswert?

Vielen Dank für die Antwort :D

von Ulrich H. (lurchi)


Lesenswert?

Natürlich laufen die Timer bei einem Interrupt weiter. Die einzige 
Ausnahme ist der Reset, wenn man den als eine spezielle Art Interrupt 
interpretiert.

Den Not-Halt als ein externer Interrupt ist ggf. möglich, halt aber ein 
Problem, wenn für längere Zeit Interrupts gesperrt sind. Da müsste man 
dann ggf. zusätzlich den Watchdog aktiv werden lassen.
Die andere Möglichkeit wäre verzögert zusätzliche unabhängig vom µC den 
Not-aus zu aktivieren, wenn der µC nicht prompt reagiert.
Möglich wäre ggf. auch den Reset als Not-halt zu nutzen, weil sich der 
nicht per Software blockieren lässt. Da laufen dann aber ggf. die Timer 
nicht weiter.

von Amateur (Gast)


Lesenswert?

Pass' aber auf, dass Du den NOT-Aus nicht überbrückst.

Frage an Radio Eriwan:
Was ist wenn, wegen eines Fehlers an Deinem Roboterarm, der NOT-Aus 
ausgelöst wird/wurde? Nobody ist perfect!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

ein-azubi schrieb:
> Gäbe es eine elgantere Lösung?
Ja sehr wahrscheinlich, aber dazu müsste man vermutlich die ganze 
Software umschreiben...

Denn wie gesagt: der Controller läuft eigentlich weiter, auch wenn ein 
Interrupt alles "blockiert". Und dann nach dem Not-Halt wieder 
reinkommen in den korrekten Ablauf, ist sicher arg lustig. Sowas 
realisiert man dann besser über einen Zustandsautomaten in der 
Hauptschleife.

: Bearbeitet durch Moderator
von Thomas (kosmos)


Lesenswert?

Not-aus auf den höchsten Interrupt meist Ext Int. und dort dann die 
Timer usw stoppen oder einen Sleepmode wählen bei dem keine Timer mehr 
laufen.

von Walter (Gast)


Lesenswert?

Thomas O. schrieb:
> Not-aus auf den höchsten Interrupt

beim AVR?

von Tulsa (Gast)


Lesenswert?

ein-azubi schrieb:
> laufen die Timer von dem µC (ATMEGA 64A) noch weiter während des
> HW-Interrupts oder bleiben die auch stehen?

Wie schon beschrieben:

spess53 schrieb:
> Sie laufen weiter.

Du solltest aber für die Handlungen im Notfall weiter recherchieren!
Es gibt NOT-AUS, NOT-HALT.
Dafür kann eine STOPP-Kategorie von 0 bis 2 verwendet werden.

Und dann gibt es auch noch NOT-START (z.B. Feuerlöschanlage).

Wenn Du das komplett verstanden hast, kannst Du bei Deinem Ausbilder 
punkten.

BTW: Die Beschreibung läuft auf eine Stopp-Kategorie 2 hinaus. Die ist 
z.Z. für Handlungen im Notfall nicht vorgesehen. Also: Konzept für 
Kategorie 1 erarbeiten.

von Peter D. (peda)


Lesenswert?

Lothar Miller schrieb:
> Sowas
> realisiert man dann besser über einen Zustandsautomaten in der
> Hauptschleife.

Genau.
Ein Mensch benötigt viele 100ms Reaktionszeit, das sind aus MC-Sicht 
Ewigkeiten.
Eine Statemaschine hat typisch wenige 1ms Durchlaufzeit.

Auch ist ein Interrupt empfindlich gegen Störungen.
Z.B. hat man sich früher gewundert, warum die ersten Computer verrückt 
spielten, wenn Frauen sie bedienten. Ursache waren die elektrostatisch 
geladenen Nylonstrümpfe der Damen.

von npn (Gast)


Lesenswert?

Walter schrieb:
> Thomas O. schrieb:
>> Not-aus auf den höchsten Interrupt
>
> beim AVR?

Ja.

von Peter D. (peda)


Lesenswert?

Thomas O. schrieb:
> Not-aus auf den höchsten Interrupt meist Ext Int. und dort dann die
> Timer usw stoppen oder einen Sleepmode wählen bei dem keine Timer mehr
> laufen.

Welche Handlungen bei einem Notaus zu programmieren sind, mußt Du schon 
dem Pflichtenheft überlassen. Es gibt keine generelle Lösung.

Die Timer zu stoppen, ist meist gefährlich.
Z.B. eine PWM kann dann auf 100% stehen bleiben, d.h. der Motor tourt 
auf volle Kraft hoch, fragt keine Endlagenschalter mehr ab und Deine 
Anlage ist nur noch Schrott oder ne Person tot.

von Pandur S. (jetztnicht)


Lesenswert?

Einen Timer zu stoppen ist natuerlich Quatsch. Man muss ein Notabschalt- 
Szenario definieren, was dann geschehen muss.

Nicht einfach nichts. Ein Notabschalt- Szenario ist im Wesentlichen :

Die Maschine, resp der Prozess, muss in einen sicheren Zustand gehen.

Was das bedeutet kann nur der Betreiber der Maschine, des Systems, 
definieren. Allenfalls muessen dazu erst Sensoren abgefragt werden.

Moechte man den Roboterarm einfach einfrieren, oder auf eine sichere 
Position fahren ?

Einfrieren bedeutet nicht einfach Strom abschalten. Das waere so, wenn 
alles mit Schneckengetrieben laufen wuerde. Wenn der Roboter 
quasistatisch arbeitet. tut er aber nicht. Sondern das bedeutet, dass 
auf einen feste Position geregelt wird. Diese feste Position ist nicht 
die beim Druecken des Halt Knopfes, sondern die, die bei maximaler 
Bremsleistung angefahren werden kann.

alles klar ?

von Martin V. (oldmax)


Lesenswert?

Hi
Also, ich hab hier meine Zweifel, ob der Ausbilder da in die richtige 
Richtung geht. Einen Not-Halt über einen Atmega64, ob mit Interrupt oder 
im Polling der IO ist dabei völlig wurscht, zu realisieren, halte ich 
nicht für Sicher.  Not_Aus bedeutet ja, das Ding wird komplett ohne 
Rücksicht auf Verluste vom Netz getrennt. Bei einem Not Halt wird in der 
Regel gezielt angehalten und dann das Netz gekappt. Dabei muss aber auch 
dieses Vorgehen sicher sein,d. H. ist aus irgendwelchen Gründen eine 
entsprechende Rückmeldung, das ein sicherer Status erreicht ist, nicht 
gegeben, muss auch ier nach einer zu definierenden Zeit ein Abschalten 
der Maschine erfolgen. Nun, Ein Timer-Interrupt kann auch einen IO 
Interrupt kurzzeitig blockieren. Damit ist das sichere Erkennen schon 
mal nicht gegeben. Auch Programmtechnisch muss ja einiges angeleiert 
werden. Sind die Programme für die erforderlichen Bewegungen auch 
sicher? Hier einfach mal so eine Frage in den Raum zu stellen, ob 
weitere Interrupts auch abgearbeitet werden ist in diesem Fall gar nicht 
so wichtig. Die Frage, wie man einen sicheren Zustand vor dem Abschalten 
erreichen kann, sollte da mehr Beachtung fnden.
Gruß oldmax

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
Noch kein Account? Hier anmelden.