Klassisch wäre die Variante, INT0 für den einen und INT1 für den anderen Motor zu verwenden (type "Help" for help).
Kommt viel darauf an, was der Controller sonst noch zu tun hat.
Hallo,
ich mache mir gerade ein kleines Program zur Ansteuerung von 2 Schrittmotoren. Wenn ein Takt von einem anderen controller kommt soll der jeweilige Motor einen schritt vorwärts bzw. rückwärts machen (wird über ne zweite leitung gesteuert).
Eigentlich will ich mit bitwait im prog warten bis ein takt kommt, aber wenn in der zwischenzeit ein Takt für den anderen Motor käme würde dieser übersehen.
Also will ich das ganze über interrupts laufen lassen.
Ich könnte natürlich den einen Takt mit bitwait lesen und den anderen mit nem interupt, aber das wäre irgenwie unsauber.
Gibt es eine möglichkeit, dass zwei Interrupts gleichzeitig ausgelöst werden dürfen?
Kann man auch irgendwie zwei programme gleichzeitig laufen lassen?
Hat jemand von euch eine andere Idee?
Mit freundlichen Grüßen
Jan
Klassisch wäre die Variante, INT0 für den einen und INT1 für den anderen Motor zu verwenden (type "Help" for help).
Kommt viel darauf an, was der Controller sonst noch zu tun hat.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Gleichzeitig kann man nie in einem uP oder cC zwei Programme
laufen lassen. Höchstens scheinbar, vorausgesetzt der uC unterstützt
das und Du setzt ein Real Time OS ein.
Dies ist nur bei Zeitkritische Nnwendungen notwendig (komerziell).
Aber wieso so kompiziert ?
Wenn dein uC sowieso auf Pulse eines anderen uC reagieren soll,
wieso nicht auf Kommandos reagieren die der andere uC
über IIC, RS-485 oder SPI schickt ?
Wenn Du den seriellen Interrupt benutzt, musst Du in deiner ISR
einfach sofort das Kommando übernehmen. Du Speicherst es in einer
Globale Puffervariable und setzt ein globales Flag dass ein neues Kommando
abrufbar ist.
Danach kannst Du es im Hauptprogramm auswerten und dementsprechend ragieren. Danach setzt du das Flag wieder zurück.
MfG
Ruedi
ich dachte es wäre am einfachsten mit impulsen
Ich habe auch schon überlegt das ganze über ein Netzwerk zu schicken aber da ich eher noch ein Anfäger bin wollte ich erstmal die Figer davon lassen.
Ich denke, dass ich es erstmal mit der unsauberen Methode machen werde; den einen Motor mit nem Interrupt und den anderen mit bitwait.
Ich habe in der Hilfe gelesen, dass wenn während eines Interrupts ein anderes ausgelöst wird, sich der Controller dies merkt. Führt er denn nach beendigung des ersten Int das zweite aus?
MfG
Jan
Das merkt er sich wie ein Elefant. Allerdings, wenn zweimal der selbe interrupt kommt, geht einer verloren
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ok, danke für eure Antworten!
Ich werde das ganze jetzt mit den beiden Interrupts proggen. Die Programme die durch die Interrupts ausgelöst werden dauern ja nicht allzulang und es ist egal, wann die Schritte ausgeführt werden sodern dass sie ausgeführt werden.
Danke für eure super Hilfe; Hoffentlich kann ich euch auch mal helfen!
MfG
Jan
Lesezeichen