-         

Ergebnis 1 bis 6 von 6

Thema: 2 Interrupts gleichzeitig???

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56

    2 Interrupts gleichzeitig???

    Anzeige

    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

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.12.2005
    Ort
    Tann / ZH
    Alter
    61
    Beiträge
    264
    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

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56
    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

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    19.11.2005
    Beiträge
    56
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •