Forum: Mikrocontroller und Digitale Elektronik IC für Interrupt Vervielfachung gesucht.


von John S. (student)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich möchte die Flankenwechsel eines Trackballs (4 Eingänge am AVR werden 
zur Richtungsabfrage benötigt) interruptmässig auf einen 
interrupt-fähigen 5. PIN am AVR legen, da ich nicht genügend externe 
Interrupt fähige Pins frei habe.

Dazu würde ich ein IC oder eine Schaltung benötigen, dessen 
Sprungfunktion wie im beigefügten PDF die 4 Eingänge in einen Ausgang 
umsetzt.

Kann mir bitte jemand einen Hinweis geben, wie man so etwas einfachst 
realisiert, bzw. welches IC diese Anforderung erfüllt ???

Ein NE555 kann man sicher prinzipiell dafür verwenden, aber der hat 
keine 4 Eingänge - oder ?

Vielen Dank im voraus.

von Falk B. (falk)


Lesenswert?

@  John Schmitz (student)

>Ich möchte die Flankenwechsel eines Trackballs (4 Eingänge am AVR werden
>zur Richtungsabfrage benötigt) interruptmässig auf einen
>interrupt-fähigen 5. PIN am AVR legen, da ich nicht genügend externe
>Interrupt fähige Pins frei habe.

Ich kenn mich mit Trackballs zwar nicht so aus, aber ich tippe mal, dass 
dort auch zwei Defakto Drehgeber drin sind. Und die wertet man 
anders aus. Warum das so ist steht im Artikel ;-)

MFG
Falk

von John S. (student)


Lesenswert?

Hallo Falk,

danke für den Hinweis. Ich nutze den Blackberry Trackball. Dieser funzt 
aber anders - wenn auch recht tricky.

Der Trackball treibt über eine Freilaufvorrichtung 4 unabhängige 
Magneträdchen an, jedes für eine Richtung (x, -x, y, -y).

Und den Polwechsel der Rädchen frage ich über 4 zugehörige Hallgeber ab. 
Deren Ausgänge (Flankenwechsel) möchte auf EINEN Interruptfähigen PIN 
legen.

Danke trotzdem.

Grüsse

von Fabian B. (fabs)


Lesenswert?

Dann schalte die doch über Dioden an einen Interrupt. Dann musste an den 
eigentlichen Pins im Int nur noch abfragen, welcher es nun war, der den 
Int auslöste.

Gruß
Fabian

von Mikki M. (mmerten)


Lesenswert?

Oder passenden AVR mit PCINT Eingängen verwenden, der hat dann genügend 
interruptfähige Eingänge.

von was-willst-du (Gast)


Lesenswert?

Hi,

die Antwort von Falk fand ich gar nicht so schlecht.

Wie sieht denn Deine Anforderung aus? Im Allgemeinen reicht es aus, wenn 
solche Eingänge gepollt werden, entweder durch die HP-Schleife oder über 
einen Timer-Interrupt.

Ich würd noch etwas Zeit investieren, um die Aufgabe zu analysieren. Die 
Eingänge mußt Du eh alle einzel (durch diesen Sammelinterrupt bedingt) 
abfragen. Da ist ein flottes Pollen nicht ungeschickt und mehr als nur 
eine flüchtige Überlegung wert.

Nix für ungut.

von Jean P. (fubu1000)


Lesenswert?

Hi,
OR-Gatter oder NOR-Gatter, je nach Interrupt Auslösung (High oder Low 
Level Interrupt).

von was-willst-du (Gast)


Lesenswert?

Nee,nee

or-Gatter erzeugen keine kurzen Impulse aus Pegelwechseln. Die erzeugen 
nur wieder Pegelwechsel, die anstehen, bis das Signal abfällt.

von Ralf (Gast)


Lesenswert?

> OR-Gatter
Bringt nix (die Dioden auch nicht(?)), wenn ich die Anforderung richtig 
verstanden hab (was um die Uhrzeit nicht unbedingt gegeben sein muss :)

Wie wärs mit 74HC123? Da sind zwei monostabile Kippstufen drin, jede mit 
einem High- und Low-Flanken-getriggerten Eingang, also das Signal 
jeweils auf beide Eingänge geben. Was allerdings passiert, wenn bei 
Eingänge die Flanke wechseln, ist nicht beschrieben. Obwohl, wenn man 
A1/B2 und A2/B1 verbindet, könnts klappen. Die Ausgänge musst du halt 
wiederum über Dioden entkoppeln und auf deinen Eingang geben.

Ralf

von John S. (student)


Lesenswert?

Leider kenne bin ich nur Maschinenbauer, insofern here Autodidakt, was 
ICs und Logik angeht ...!

Problem ist: Bleibt ein Pol des Magneträdchens auf dem Hallgeber stehen, 
so zieht der Hallgeber auf 0 oder 1. Nur wenn das Rädchen in Bewegung 
ist, wird die Flanke erzeugt - ist ja auch logisch.

Aber heisst auch Dioden helfen mir eher nicht.

von John S. (student)


Lesenswert?

Mikki Merten wrote:
> Oder passenden AVR mit PCINT Eingängen verwenden, der hat dann genügend
> interruptfähige Eingänge.

...PCINTs sind leider auch schon alle vergeben ...

von was-willst-du (Gast)


Lesenswert?

Hallo lieber John Schmitz,

gibts ein Argument, daß gegen das Pollen spricht? Das ist doch die 
Lösung ohne viel Bastelkram.

von John S. (student)


Lesenswert?

was-willst-du wrote:
> Hallo lieber John Schmitz,
>
> gibts ein Argument, daß gegen das Pollen spricht? Das ist doch die
> Lösung ohne viel Bastelkram.

Ja, leider, denn ich steuere mit dem Trackball einen Cursor.

Die Geschwindigkeit (Beschleunigung) mit der ich den Trackball bewege, 
soll den Cursor eine kürzere oder weitere Entfernung über den Bildschirm 
bewegen.

Das lässt sich natürlich ideal über die längeren oder kürzeren 
Delta-Zeiten zwischen zwei Interrupts steuern ...!

von was-willst-du (Gast)


Lesenswert?

Wie wird denn die Zeit zwischen den Interrupts gemessen?

Das geht doch sicher genauso mit Polling. Einfach die Zeit zwischen den 
Zustandsänderungen messen.

von John S. (student)


Lesenswert?

was-willst-du wrote:
> Wie wird denn die Zeit zwischen den Interrupts gemessen?
>
> Das geht doch sicher genauso mit Polling. Einfach die Zeit zwischen den
> Zustandsänderungen messen.

Der AVR (2561) des dispay3000 (www.display3000.com) muss noch viele 
andere Funktionen steuern (Grafik Output, WLAN Kommunikation über 
Avisaro, SD-card etc.) Darum würde ich lieber auf Polling verzichten um 
seine Prozessorzeit auf diese Dinge zu konzentrieren. Ausserdem bewege 
ich mich bei Polling in einem diskreten Zeitraster, das nie so fein 
gerastert ist wie ein Trackball, der eevents auslöst und der so 
beliebige Zeitspannen triggern kann.

So abnorm kann meine Anforderung doch gar nicht sein, da gibt's doch 
bestimmt irgendein ein IC. In welcher Familie müsste ich Eurer Meinung 
nach denn suchen ???

Danke!

von Falk B. (falk)


Lesenswert?

@John Schmitz (student)

>ich mich bei Polling in einem diskreten Zeitraster, das nie so fein
>gerastert ist wie ein Trackball, der eevents auslöst und der so
>beliebige Zeitspannen triggern kann.

Und du glaubst ernsthaft, mit deinem naiven Ansatz kannst du die Zeiten 
genau erfassen. . . ?!?

von Guido Körber (Gast)


Lesenswert?

Also als jemand der Mauscontroller baut kann ich Dir sagen, dass der 
Ansatz mit dem Interrupt nicht funktionieren wird. Und das alleine schon 
desshalb weil bei einer schnellen Bewegung des Trackballs so viele 
Interrupts kommen, dass der Prozessor nichts anderes mehr machen wird 
als Interrupts bearbeiten.

Pollen, nicht basteln.

von Peter D. (peda)


Lesenswert?

John Schmitz wrote:

> So abnorm kann meine Anforderung doch gar nicht sein, da gibt's doch
> bestimmt irgendein ein IC. In welcher Familie müsste ich Eurer Meinung
> nach denn suchen ???

Der ATmega2561 hat 18 Interrupteingänge, wo ist das Problem?

Die Zeiten sind vorbei, wo man irgendwelche Spezial-ICs entwickelt.
Wenn Du so einen IC brauchst, mußt Du ihn Dir selber programmieren, z.B. 
in einen ATtiny13.


Peter

von Skua (Gast)


Lesenswert?

>bestimmt irgendein ein IC.
Achbeiniger Tiny.

von was-willst-du (Gast)


Lesenswert?

Eigentlich sollten wir ihn in Ruhe basteln lassen. Wenn er ein Spezial 
IC wünscht soll er es besorgen, programmieren, aus Holz schnitzen oder 
sich einfach denken.

Die Lösungsvorschläge waren üppig, technisch sinnvoll, geradlinig.
Was will man mehr?


Wer heute noch mit Hardware bastelt, wenn er die Aufgabenstellung 
elegant durch Software erledigen kann, hat es nicht anders verdient.

Nix für ungut.

von Micha (Gast)


Lesenswert?

@ John Schmitz
Wenn du es unbedingt auf deine Art versuchen willst, könntest du evtl. 3 
XOR-Gatter verwenden: je zwei Eingänge (z.B. E1 und E3) ver-X-odern, die 
beiden Ausgänge ebenfalls ver-X-odern und auf steigende und fallende 
Flanken triggern. Ein Problem bekommst du allerdings wenn sich 2 
Eingänge gleichzeitig ändern...

von John S. (student)


Lesenswert?

Skua wrote:
>>bestimmt irgendein ein IC.
> Achbeiniger Tiny.

Danke für die Empfehlung. Ich denke, damit werde ich es machen.

von John S. (student)


Lesenswert?

Peter Dannegger wrote:

> Der ATmega2561 hat 18 Interrupteingänge, wo ist das Problem?
>
Alle Oins anderweitig belegt - 1 Interrupt Pin ist noch frei ...!

> Die Zeiten sind vorbei, wo man irgendwelche Spezial-ICs entwickelt.
> Wenn Du so einen IC brauchst, mußt Du ihn Dir selber programmieren, z.B.
> in einen ATtiny13.
>
>
> Peter

Ist mir schon klar, dass man nicht für jedes Problem ein entsprechendes 
IC findet. Wollte aber sichergehen, dass es für diese Aufgabenstellung 
KEIN IC gibt, bevor ich mich an die Arbeit mache. Eine solche 
Vorgehensweise halte ich für logisch und sinnvoll. Und so abnorm ist die 
Aufgabenstellung ja wohl nicht ...!

Danke für die Hilfe!
Grüsse

von John S. (student)


Lesenswert?

Guido Körber wrote:
> Also als jemand der Mauscontroller baut kann ich Dir sagen, dass der
> Ansatz mit dem Interrupt nicht funktionieren wird. Und das alleine schon
> desshalb weil bei einer schnellen Bewegung des Trackballs so viele
> Interrupts kommen, dass der Prozessor nichts anderes mehr machen wird
> als Interrupts bearbeiten.
>
> Pollen, nicht basteln.

Ist für mich kein Argument:

Das Oszilloskop zeigt mir Impulsbreiten von ca. 10 ms wenn ich die 
Blackberry Kugel langsam bewege und ca. 1 ms wenn ich die Kugel ganz 
schnell bewege.

Ich sehe nicht, warum hier regelmässiges Polling (in diesem Zeitraster) 
den Prozessor weniger belastet als sporadische Interrupts. Habe auch 
kein Problem, dass während der Trackballbewegung andere Funktionen 
weniger prior behandelt werden.

Aber Du bist der Experte - den Anspruch habe ich nicht.

Wenn ich fertig bin werde ich berichten. Habe auch kein Problem, dir 
Recht zu geben, wenn's mit den Interrupts nicht klappt - versprochen.

Danke und Grüsse

von Uhu U. (uhu)


Lesenswert?

John Schmitz wrote:
> Eine solche
> Vorgehensweise halte ich für logisch und sinnvoll. Und so abnorm ist die
> Aufgabenstellung ja wohl nicht ...!

In der Tat gibt es z.B. für die x86-Line solche Chips. Für die AVRs 
passen die aber sicher nicht...

http://de.wikipedia.org/wiki/Programmable_Interrupt_Controller

von Hans-jürgen H. (hjherbert) Benutzerseite


Lesenswert?

Wenn du eh eine zweiten Prozessor dafür nimmst, kann der auch die Zeiten 
auswerten und krumme Beschleunigungskurven berechnen und dem 
Hauptrechner liefern. (SPI oder TWI seriell oder sonstwie).

von Gast (Gast)


Lesenswert?


von John S. (student)


Lesenswert?

Recht herzlichen Dank Euch allen.

Ich glaub's kaum ... habe mich bislang nur mit den grossen Megas 
auseinandergesetzt ... und habe dabei glatt die ATtinys übersehen.

Die sind ja supereinfach zu gebrauchen - alles drin. Insofern habt ihr 
mir wirklich sehr geholfen, habe gleich 30 bestellt ... Die taugen ja 
für alles und brauchen noch nicht einmal Peripherie ... genial.

Danke noch einmal!

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.