- Labornetzteil AliExpress         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 31

Thema: Anfänger/AVR mega32/Multiplexer 4051

  1. #21
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Anzeige

    E-Bike
    Du meinst 2 OP je Kanal, d.h. ein LM324 für zwei Kanäle.
    Einer ist VorVerstärker und einer ist ein Komperator, der ab dem Minimalpegel ein volles 5V Signal setzt.
    Ereignisgesteuert: Wenn du einen Controller mit 32 getrennten Pin-Interrupts findest, sagst du's.
    Um welche Ecke herum (4051 oder 4067) du schaltest, is egal, der ADC selber (der einzige, wie wir jetzt ja wissen) braucht beim Multiplexen seine acquisition Time, und Vitis hat es dir ja vorgerechnet.
    Schleife: Menu, Tasten, Midi-IN, etc : das IST die Schleife.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  2. #22
    Benutzer Stammmitglied
    Registriert seit
    03.12.2005
    Alter
    58
    Beiträge
    31
    Hallo PicNick,

    das mit der Schleife ist schon klar soweit.
    Nur ich wollte wissen, ob ich Menüabfragen (Taster, Eingabe),
    Midi IN/OUT UND die Abfrage der ANI-Ports in ein und derselben
    Schleife machen muss.

    Das wäre ja nicht gerade Zeitgemäß…

    Ich habe mir gedacht das man die Ports z.B. per Interrupt
    überwachen kann und den REST in einer Schleife… und Schleife wird
    bei Interrupt-Ereignis unterbrochen usw.
    So käme wenigstens halbwegs Ereignissteuerung in die ganze Musi!

    Also heißt das, dass ich von „natur“ aus keinerlei Info bekomme wenn
    am externen MUX irgendein Signal ansteht???

    Hm, dann ist Deine Lösung wohl der einzig gangbare Weg um die
    Verarbeitungszeit beim Schleifen in Grenzen zu halten, oder!?

    Bäh, das ist ja zum heulen…!

    Warum ist das alles Schleifen und Abfrageorientiert?

    Mir wäre es ja egal, aber die Verarbeitungszeit (und die daraus
    resultierende Latenz) ist wohl das Problem dabei.

    Grüße
    Codejoker

  3. #23
    Benutzer Stammmitglied
    Registriert seit
    03.12.2005
    Alter
    58
    Beiträge
    31
    Hallo Zusammen,

    ich habe noch so eine Idee für die ich jetzt wahrscheinlich
    gesteinigt werden, aber trotzdem…

    Wäre es möglich das ich „einfach“ mehrere kleine Controller
    die Analogport Arbeit überlasse und mit diese dann auf den großen
    einen Interrupt auslösen und gleich den kompletten Wert übermitteln?

    So müsste ich nur auf ein Ereignis warten und könnte den übermittelten
    Wert gleich verarbeiten. Angeliefert werden sollten der Port und der
    Wert natürlich

    Ich bräuchte halt dann mehrere davon, z.B. 6 x mega8 oder so etwas…

    Kostenmäßig wäre es doch egal, denn ein mega8 ist für 2,75 Euro
    zu haben. Anstatt also mit Multiplexer bis zum Abwinken, ginge es
    doch auch so, oder?

    Gibt es irgendwelche Einwände gegen so eine Vorgehensweise?

    Dumme Idee????

    Danke für alles Konstruktive!

    Gruß
    Codejoker

    Edit: Noch eine weitere Frage:
    Kann ein Quarz für mehrere Controller gleichzeitig verwendet werden?

    Wenn ja, wie? Einfach parallel schalten?

  4. #24
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    man bräuchte ... hmmm ... trigger ... Monoflop für
    jeden Eingang, der dann auf ne z.B. über dez zu bin-encoder
    auf digitale IO des uC gibt, der dann den Port auslesen kann
    und den Gedrücktstatus daraus erkennt. das geht sehr flott
    vonstatten.
    Ist der Status erkannt kann immernoch der Analogwert ausgelesen
    werden, des entsprechenden Eingangs natürlich nur.
    Das solle so Zeit sparen.

    EDIT: gönn doch jedem Controller seinen Quarz

    EDIT2: Naja, Du kannst natürlich auch 4 Mega8 nehmen und deren ADC
    direkt aufschalten und messen. Die Kommunikation zum "Zentralrechner" muß aber schon flott vonstatten gehen und Kolissionen dürfen halt auch nicht sein. Die Datenmenge ist aber auch nicht zu verachten.
    Du müsstest Dann (ADC=10Bit ergo 2 Datenbyte) 16 Byte je Mega 8
    (16*4) 64 Byte ohne sonstiges Protokoll in 5 ms von den Slaves in den
    Master rüberbeamen. Das wär ne Datenrate von 12800 Byte/Sekunde.
    Das wär machbar. Beispiel I2C wären bis 50000 Byte/Sekunde drinn
    (Rechenfehler könnten aber auch drinne sein) wobei man I2CStart,
    I2CStop Aderssierung nicht vergessen darf, die brauchen auch n bissl was.
    Wären aber ja nur je Zyclus und Slave nur einmal.
    Du könntest aber die Datenrate etwas schonen, indem du nur 8 der 10
    Bit verwendest, sind dann halt nur 256 Abstufungen je Kanal anstatt 1024.
    wär keine große Sache, Shift ADwert right 2 , und schon sinds nur noch 8 Bit, nurnoch den lowbyte extrahieren und versenden.
    Aber vom Timing her bista dann nicht viel besser, die Übertragungszeit
    musste dann in die Samplingrate mit einkalkulieren.
    Klar, du kannst dann mit 4-6 Mega8 gleichzeitig AD-wandeln, die können
    das dann parallel machen, das spart wieder ne Menge Zeit.

    Insgesamt ist die Geschichte schon gut machbar, du brauchst aber n bus.
    du hast auch externe Interrupts, die du für die Fallsteuerung verwenden kannst und die dann nen quasi chipselect ausführen. Die Leiterplatte
    routen wird n mords Spaß!

    Ich würde so an die Sache ran gehen ...
    Was soll das Ding können, wo kann ich Kompromisse machen,
    Das SOftware Grundgerüst entwerfen (von wegen der benötigeten Ports),
    Die Platine layouten und dann das Programm (die Programme)
    verfeinern (Feinschliff).
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  5. #25
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Zitat Zitat von Vitis
    ... hmmm ... dez zu bin-encoder..
    Üble sache, wenn mehr als einer triggert.

    Das ist der Grund, warum Gott und die Welt Tasten mit row & column scanned und nicht so. Aber sonst bist du schon gut unterwegs
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #26
    Benutzer Stammmitglied
    Registriert seit
    03.12.2005
    Alter
    58
    Beiträge
    31
    Hallo zusammen!

    Schon mal Dank für die erneuten Ausführungen!!

    Als totaler Amateur habe ich mir das so gedacht:

    Ich schalte z.B. 6 Stück mega8-16 vor.
    Dabei sind die Ports (z.B. d) parallel geschaltet…
    (nicht Lachen – ich weiß es nicht besser…)
    Diese Teile horchen (jeder für sich) an den Analog Ports.
    Kommt jetzt etwas rein (an einen mega8/Analog), dann wird
    der zugehörige Wert ermittelt und gemäß des Wertes
    die Ports d geschaltet (also eine eigene Codierung).

    Die Ports d der mega8-16 sind mit den Ports (z.B. auch d)
    des mega32 (der „Zentralrechner“) verbunden.

    Nachdem jetzt etwas geschaltet wurde, wird am mega32
    ein Interrupt ausgelöst und ich sehe anhand der Beschaltung
    der Ports d welchen Wert ich zu verarbeiten habe…

    Das würde bedeuten:
    Das analoge Schleifen machen die „kleinen“ für sich, ebenso
    das ermitteln der Werte. Der mega32 nimmt lediglich die
    Information entgegen (wenn ein Interrupt ausgelöst wird) und
    kümmert sich dann um die restliche Verarbeitung.
    Unter anderem auch um das Menü, die MIDI-Geschichte usw…

    Das müsste doch blitz schnell gehen, oder?

    - Kein Protokoll
    - Kein Rumgeschupse über x Ebenen

    Einfach Binär anhand der Port-Codierung übergeben…

    Würde das denn nicht funktionieren?

    Dann bräuchte ich lediglich 8 Leitungen vom mega8 nach
    mega32. Die Analogports am mega32 bräuchte ich in diesem
    Falle dann überhaupt nicht…

    Ohje, ich sehe schon euere Gesichter

  7. #27
    Benutzer Stammmitglied
    Registriert seit
    03.12.2005
    Alter
    58
    Beiträge
    31
    Nachtrag:

    Da ich den gemessenen Wert am mega8-Analog ohnehin auf 127
    Abstufungen auflösen muss (Midi Velocity = max. 127) sind also
    8 Bit nicht das Problem.

    Aber da wirft sich eine andere Frage auf:
    Wie erhalte ich den Information über den Port der den Wert „gesendet“
    hat? Mist!

    Noch eine Frage:
    Kann ich denn an einem 4067 überhaupt nicht feststellen ob etwas
    an den Ins ansteht ohne ewig in einer Schleife zu radeln…?

    Wie funktioniert dieser Multiplexer genau?

    Ist das so, dass der Multiplexer praktisch gar nichts tut und nur auf
    Zuruf die Ports schaltet und liest?
    Will damit sagen: Ich muss an den Adressleitungen alle Adressen
    immer und immer wieder abklappern?

  8. #28
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Also, der Multiplexer ist das elektronsiche äquivalent des guten alten
    EMD-Wählers vonder Deutschen Bundespost Fernmeldedienst:

    http://www.s-storbeck.de/altetelefon...gestelle3.html

    http://de.wikipedia.org/wiki/Edelmet...rehw%C3%A4hler

    er macht nichts anderes als den gewünschten (adressierten) Eingang auf den
    Ausgang zu schalten ... Drehschalter im Prinzip. Nur die Stellung auf der
    er steht ist durchgeschaltet. die anderen sind blind in dem Moment.
    Der Mux kann selbst nicht entscheiden welchen Ausgang er wählen soll ...
    nee kannernich ... definitiv ... er kann nur blöde aus den Eingängen
    einen auswählen und auf den Ausgang schalten, Ende der Fahnenstange.
    Wenn Ihr mit Multiplexern arbeiten wollt müsst ihr in die Tretmühle
    und reihum alle Kanäle abfragen (Zyklisch).
    Ich hab das System für Temperatursensoren verwendet, geht ganz gut
    und auch recht flott. Nur die AD-Wandlung braucht halt Zeit.

    Anderer Ansatz: anstelle des internen ADC externe schnellere verwenden und per I2C oder parallelem Port Daten übertragen? Da könnte sich was an
    Zeit einsparen lassen.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  9. #29
    Benutzer Stammmitglied
    Registriert seit
    03.12.2005
    Alter
    58
    Beiträge
    31
    Hähä, sieht ja grausam aus!

    Aber ok, jetzt habe auch ich verstanden das der Multiplexer rein
    gar nichts tut außer auf Zuruf schalten. Ziemlich blöd!

    Also @Vitis das ist so:
    5ms sind ein absoluter maximal Wert für die Verarbeitung!
    Man sagt eben, dass 5ms schon hörbar sind – und genau das soll
    ja nicht der Fall sein! Es gilt also diesen Wert weit zu unterschreiten…

    Für die gesamte Verarbeitung wohl gemerkt:
    - Analog in
    - Wert feststellen
    - Midi Notenummer basteln (Ton, Velocity…)
    - über Midi absetzen
    ---------------------------
    Gegengerät:
    - Midi emfangen
    - Samples aufbereitung
    - Audio out
    - Mensch hört

    Das muss alles weit unterhalb von 5ms geschehen, denn der Empfänger
    (Sampler, Soundkarte oder was auch immer) hat ja ebenfalls eine
    Latenz in unbekannter Größe.

    Das dumme ist, dass ich wenigstens 32 Kanäle benötige und deshalb
    mit den Multiplexern rumgedacht habe.

    Ich kenne ein ähnliches Projekt auf PIC Basis und die behaupten,
    das gemultiplexte 64 Analog INS mit einer Latenz von nur 1ms abgearbeitet
    werden. In anbetracht der Infos von euch beiden kann ich das aber nicht
    mehr ganz glauben…

    Was hältst Du von oben genannter Lösung (meine Amateur-Vorstellung)?
    Führt da ein Weg hin das so zu machen???

  10. #30
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Wenns der PIC kann kanns der AVR allemal (weil schneller ).
    Kommt halt auf die Aussenbeschaltung, Deinen Bus, Datenmenge,
    Programmablauf usw. usw.
    an. Die Nötigen Infos haste nun allemal bekommen, mach das Beste draus
    und dann bau die Version 2 mit den gewonnenen Erkenntnissen der Version 1.
    Wenn Du magst kann ich mir später mal Dein Routing anschaun ob mir
    noch was brauchbares einfällt bevors zur Platinenfertigung geht.

    Phantasie ist der Schlüssel ... ok, n bissl knoff hoff is auch bei.

    Ich würd mal klein anfangen, einzelne Bausteine besorgen, Punktraster-
    Platine und Testschaltungen. In 2 Tagen ist das Ganze eh nicht realisiert.
    Mal n Mega 8 und n 32 verbrutzeln (Sockel) und schaun was der so alles
    kann in der Praxis.

    Schritt für Schritt
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test