mikrocontroller.net

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


Autor: John Schmitz (student)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Fabian B. (fabs)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mikki Merten (mmerten)
Datum:

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

Autor: was-willst-du (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jean Player (fubu1000)
Datum:

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

Autor: was-willst-du (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nee,nee

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

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: was-willst-du (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo lieber John Schmitz,

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

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht 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 ...!

Autor: was-willst-du (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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. . . ?!?

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Skua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>bestimmt irgendein ein IC.
Achbeiniger Tiny.

Autor: was-willst-du (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Skua wrote:
>>bestimmt irgendein ein IC.
> Achbeiniger Tiny.

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

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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_Interrup...

Autor: Hans-jürgen Herbert (hjherbert) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PCA9502

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.