-         

+ Antworten
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Mehrere Signale über einen Interrupt erkennen

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    03.01.2004
    Ort
    Pottenstein
    Alter
    37
    Beiträge
    265

    Mehrere Signale über einen Interrupt erkennen

    Anzeige

    Moin moin,

    Ich will mit einem ATMega8 mehrere PWM-Signale von verschiedenen Quellen einlesen. Neulich hatte jemand in diesem Forum die Idee, jedes Signal auf einen eigenen Eingangspin zu legen und außerdem alle (über Dioden) auf einen gemeinsamen Interrupt zu führen. Der Interrupt merkt dann, daß eins der Signale auf high geht und man kann in der Interruptroutine rauskriegen, welches. Die eigentlich Auswertung des Signals macht man dann an dessen Eingangspin.

    Mein Problem ist jetzt: Wenn eines der Signale auf high steht, ist damit der Interrupt für alle anderen Signale geblockt, weil ja konstant high-Pegel anliegt. Wie kriege ich das weg?

    Ich hab mir überlegt, für jedes Eingangssignal je einen weiteren Pin als Ausgang zu benutzen, um ein Signal, das den Interrupt ausgelöst hat, erstmal vom Interrupt zu trennen, damit die anderen Signale wieder die Chance haben, ihn auszulösen. Allerdings bräuchte ich dazu einen elektronischen Schalter, der Spannungen unterbricht. Ein Transistor ist ja mehr zur Stromregelung da, gibt's sowas auch entsprechend für Spannungen?
    Ich stell mir das so vor, daß ich am Kollektor die Signalquelle habe (Die natürlich weiterhin zu ihrem Eingangspin geht), der "Emitter" geht zum Interrupt, und an der Basis hängt der zu diesem Signal gehörende Ausgangspin, der das Signal vom Interrupt trennen soll (mit high oder low Pegel ist ja erstmal wumpe). Wenn jetzt ein Signal auf high geht, wird erstens über die Interruptroutine festgestellt, welches Signal das ist, dann wird der entsprechende Ausgang gesetzt, um dieses Signal vom Interrupt zu trennen und der Interrupt horcht wieder auf alle anderen Signale.

    Bloß welches Bauteil wirkt wie so ein Schalter?

    Weiß jemand, was ich meine, oder muß ich dochmal versuchen, das in Paint aufzumalen?

    Nils

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.05.2004
    Ort
    Schönaich
    Alter
    40
    Beiträge
    315
    Ich bin zwar kein Elektronik-Spezialist.
    Als Schalter für kann man aber meines wissens, ja Optokoppler oder kleine Relais verwenden. (falls Du das noch nicht in Erwägung gezogen hast!)
    Spinoza sagt (epist.62), daß der durch einen Stoß in die Luft fliegende Stein, wenn er Bewußtseyn hätte, meinen würde, aus seinem eigenen Willen zu fliegen. Schopenhauer

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    15.03.2004
    Ort
    Attnang
    Alter
    39
    Beiträge
    54
    Hallo,
    und auch Transistoren kann man als Schalter benutzen (Schaltplan im Bild).
    Der Kondensator C1 und RB1 sind nicht unbedingt nötig (sind nur da, um schneller zu schalten).
    RB ~ 470 Ohm, RB1 ~ 470 Ohm, C1 ~ 100pF, RL ~ 470 Ohm bei VCC=5V.

    Es gibt da aber noch was anderes: 74HC4066, CD4066
    Das sind Schalter für 4 analoge Spannungen, der Strom und die Spannung sind aber begrenzt - man kann nicht alles schalten!

    schöne Grüße,
    Alex
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken transistor_als_schalter.gif  

  4. #4
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    63
    Beiträge
    12.224

    Re: Mehrere Signale über einen Interrupt erkennen

    Zitat Zitat von Minifriese
    Bloß welches Bauteil wirkt wie so ein Schalter?
    Nils
    Analogschalter nennen die sich

    CD4016, 4066

    und Kollegen. 4stück pro IC. Andere Anaolgschalter wirken als 1 zu n Multiplexer.
    Damit müßte es gehen.

    Es ist aber eine logische Verknüpfung für die man nicht unbedingt einen Schalter braucht. Manchmal sind die logischen Funktionen aber leichter mit Schaltern realisierbar als mit Gattern.
    Manfred

    Doch, die Antwort war schon da (siehe oben)

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    03.01.2004
    Ort
    Pottenstein
    Alter
    37
    Beiträge
    265
    Nabend, besten Dank für die Ideen!
    Die Relais hatte ich auch zuerst im Kopf, aber da ich den Interrupt benutzen will, um PWM-Signale zu messen, sind die Schaltzeiten wohl zu groß. Ich werd mich mal über die Analogschalter schlau machen, hab ich noch nie von gehört.
    Das mit dem Transistor ist zwar bauteilmäßig etwas mehr Aufwand, aber ne gute Rückzugsmöglichkeit. Weil ich da sehen kann, daß es funktionieren muß
    Auch die Idee von Manfred mit den Gattern ist mir noch gar nicht gekommen, mit vier UND-Gattern (ich hab vier PWMs) sollte das sehr elegant gehen... Es gibt glaub ich sogar Chips mit genau vier Gattern, da werd ich mal googeln gehn

    Nils

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2004
    Beiträge
    181
    Hallo!

    Ich versteh das Problem nicht. Interrupts werden doch iA dazu verwendet um dem Prozessor zu sagen, dass ein Gerät von ihm etwas möchte.

    Der Interrupt ist dann so lange anhängig, wie das "Problem" besteht.

    Der einzige Fall wo man Interrupts ausgeschaltet haben möchte ist maximal beim starten. Denn wenn einer ausgeschaltet ist, muss man ja ihn auch wieder explizit anschalten.

    Für sowas verwendet man iA ein Maskenregister, welches mit dem Interrupt Register verundet wird.

    BTW jeder Transistor ist ein Schalter

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    03.01.2004
    Ort
    Pottenstein
    Alter
    37
    Beiträge
    265
    Nee, ich habe ja mehrere Signale auf einem Interrupt. Und wenn einer den Interrupt ausgelöst hat, soll er ihn nicht blockieren, damit die anderen auch ne Chance kriegen, ihn auszulösen. Ich will also nicht den Interrupt ausschalten, sondern eines der Signale vom Interrupt trennen.

  8. #8
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    63
    Beiträge
    12.224
    Ich nehme an, der Kommentar war so gemeint, daß der Prozessor wenn er einen Interrupt erhält, sobald wie möglich seine laufende Arbeit beendet und sucht, welche Interrupts ihn gerufen haben.
    Ein zweiter Interrupt in der Zeit wird nicht getrennt gezählt und auch nicht nach Quelle erfasst.
    Bei der Abarbeitung des Interrupt wird zunächst das spezifische Anforderungssignal der Inerruptquelle zurückgesetzt und dann der Interrupt bearbeitet.
    Die Anforderungen könnten also konstant per Oderverknüpfung anliegen, soweit ich das kenne.
    Manfred

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2004
    Beiträge
    181
    genau.

    Sobald einer oder mehrer anliegen wird der erste (priorisiert) abgearbeitet. Danach sollte er ja nicht mehr vorhanden sein, da der Grund durch Eingreifen des Prozessors beseitigt wurde.

    Das macht der Prozessor solange bis kein Interrupt mehr da ist und macht dann mit seiner Arbeit weiter.

    Die einzelnen Signale werden wie Manf schon meinte Ver"oder"t.

    Wenn man einen Interrupt abschaltet beseitigt man ja nicht das Problem an sich, sondern nur seine Signalisierung. Deshalb ist das imo der falsche Designansatz.

    Damit die anderen auch dran kommen muss der Prozessor schnell genug sein. Sollten die anderen dann immernoch nicht dran kommen, weil das erste Interruptsignal immernoch anliegt dann handelt es sich eigentlich nicht mehr um einen Interrupt, da dann die Ursache nicht beseitigt wurde.

    mfg Shadow

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    03.01.2004
    Ort
    Pottenstein
    Alter
    37
    Beiträge
    265
    Danach sollte er ja nicht mehr vorhanden sein, da der Grund durch Eingreifen des Prozessors beseitigt wurde.
    Schon klar, daß da bei manchen Anwendungen der Grund beseitigt wird. Bei mir aber nicht, denn der Grund ist ja, daß ein PWM-Signal seine High-Phase angefangen hat. Und es bleibt ja dann solange high, wie es seinem aktuellen Meßwert entspricht, unabhängig von meinem Prozessor. Deswegen kann ich nicht die "Ursache" des Interrupts beseitigen, sondern nur das entsprechende Signal vom Interrupt trennen. Das Design paßt schon

    Ich mach das ganze ja nur über einen normalen Interrupt, weil ich keine vier Timer-Capture-Interrupt-Pins habe. Sonst würd ich ja einfach jedes PWM an einen davon klemmen; daß die für PWMs besser geeignet sind, ist mir schon klar. Gibt bloß nicht genug...

    Nils

+ Antworten
Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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