Kann mir denn wirklich niemand helfen ???
Ich müsste lediglich wissen wie ich eine (oder mehrere) 4051 an einen
ATmega32 schalte und die Ports dann Abfrage.
Kleiner Tipp vielleicht?
Gruß
codejoker
Hallo Leute,
tolles Forum hier! Bin begeistert über so viel Information in deutscher Sprache...ist halt doch leichter zu lesen und zu verstehen...![]()
Ich möchte mir einen mega32 Programmieren und dabei ein bestehendes Projekt auf Basis eines PIC umstricken.
Bevor ich jedoch Geld in Board, Controller und Bascom stecke, läst mich eine Frage nicht los die ich gerne vorher geklärt hätte.
Würde mich sehr freuen wenn mir jemand von Euch weiter helfen könnten!
Problem:
8 analoge Inputs auf 32 aufbohren.
(geht ganz offensichtlich über den o.g. Multiplexer 4051 (4 Stück davon)).
Ich habe so eine Musterplatine und auch die Pin-Belegung für einem PIC18F452.
Meine Frage:
Kann ich die Port (analog) des mega32 ebefalls multiplexen?
Wenn ja, wie frage ich die 32 Ports dann in Bascom ab?
Wo müssen Adress-Leitungen usw. hin?
Ein kleines Muster wäre sehr hilfreich.
Es muss kein komplettes Konzept sein - um Himmels Willen!
Ich freue mich auch schon über ein paar kleine Schnipel die mich auf den richtigen Weg bringen!
Viele Dank an alle und sorry für so eine (Anfänger)-Frage!
Bin mit Sicherheit ab sofort öfter hier und hoffe auch einmal etwas zum Erfahrungsschatz hier beitragen zu können...![]()
Codejoker
Edit: korrektur
Kann mir denn wirklich niemand helfen ???
Ich müsste lediglich wissen wie ich eine (oder mehrere) 4051 an einen
ATmega32 schalte und die Ports dann Abfrage.
Kleiner Tipp vielleicht?
Gruß
codejoker
Hi, ich bin derzeit am Basteln für einen "Hackbrett"(sei eine Art Musikinstrument mit 64 Saiten)-auf MIDI Converter mit Mega32.
Dabei muß ich flottest 64 Piezosensoren (+ Vorverstärker) mit ADC einlesen.
D.h. ich habe auf jeden ADC-Input so einen 4051 hängen, die Select-Pins dieser Chips sind parallel auf drei Digital-Pins des Mega's. Auswahl dann eben durch die Select Leitungen + ADC-Channel.
Ist im Detail dann noch etwas komplizierter, da ich nicht einfach nach der Reihe alle 64 abfragen kann, aber bis dahin ist es offenbar recht ähnlich zu dir.
Wo steckt bei dir die Ungewißheit ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo PicNick,
das ist ja klasse, danke für die Antwort!
Ich kenne Hackbretter und es trifft ganz und gar auf meine Anwendung zu!
Ich möchte eine "Tastatur" mit Piezos ausstatten und per Midi einen Sampler ansteuern.
Habe also genau das selbe "Projekt" wie Du.
Mensch, könntest Du mir da (gerne auch per Mail wenn zu umfangreich)
Deine bissherigen "Schaltungen" zukommen lassen.
Details zum Programmablauf wären auch sehr interessant...
Ich würde mich wirklich freuen über Deine Hilfe - noch dazu weil die
beiden Projekte praktisch identisch sind.
Danke im Voraus für jegliche Unterstützung!
Gruß
Codejoker
warum 1:8 multiplexer?
nehmt doch den 4067 1:16 oder 4097 2x 1:8 ?
ist im prinzip doch ganz einfach, der ATMega braucht zum Laufen nur Saft
an den Vcc und GND, dann läuft der schon mit 1MHz im Auslieferungszustand.
Per Fuses könnt ihr den intern mit 8MHz laufen lassen.
Ok, für viel Rechenpower brauchts halt n Quarz an XTal1 und XTal2 mit 220nF
gegen GND.
Dann braucht ihr 1 - 2 Ports vom Port A, die gehen als ADCin.
Zum Verwenden des ADC braucht ihr noch die ARef als vergleichsspannung.
für die auswahl des Muxports braucht Ihr noch 3-4 Datenleitungen um die
Multiplexer mit Adressen zu versorgen. Hier würde sich dann der Port B
anbieten, je nach dem was der Mega halt noch können muss 3-4 der verpleibenden Ports.
Schon kanns losgehen mit der Programmierung
Vor den Erfolg haben die Götter den Schweiß gesetzt
Hallo Vitis,
vielen Dank! Der Tipp mit der Alternative 4067 ist gut!
Ok, die Beschaltung scheint also nicht DAS große Thema zu sein...
Aber wie sieht es mit der Verarbeitung in Bascom aus?
Wie komme ich möglichst schnell an alle 16/32/oder mehr Eingänge ran,
bzw. wie werden diese abgefragt oder besser signalisiert?
Hast Du da vielleicht einen Code-Schnipel auf dem ich aufbauen könnte?
Vielen Dank für Deine Info - hat mich wieder ein Stück voran gebracht!
Gruß
Codejoker
Beispiel Port B 0 bis 2 zur Ansteuerung:
DDRB=00000111
PortB= 00000000
PortB= 00000001
PortB= 00000010 etc.
bis
PortB= 00000111
danach jeweils GetAdc
so in etwa läufts, schau mal in die Bascom Hilfe für die exakte
Syntax ... ach so, Config für den ADC nicht vergessen.
Du kannst auch einfach ne for - next - Schleife verwenden und
den Port einfach hochzählen und bei jedem Schritt fragste den
ADC ab, thats it
Vor den Erfolg haben die Götter den Schweiß gesetzt
Meine Auswahl für 4051 und nicht auf 1:16 oder mehr ist, daß die Sache mit den 64 ADC-Pins auf irgendeinem Stecker ja nicht getan ist.
Ich brauch für jeden Piezo einen Vorverstärker und Gleichrichter.
Dann mußte ich das Problem lösen, daß ich ja nicht gemütlich die 64 Kanäle gemütlich nacheinander abfragen kann, das würde zu lange dauern. Ich kriege ja Peaks, die recht schnell abfallen. der gemessene Pegel würde zu sehr davon abhängen, WANN ich zu dem Channel hinkomme.
Ich mach das mit Komperatoren bei jedem Piezo, der mir ein Triggersignal über Row & Column liefert, wie eine Tastatur. Ich meß dann nur den oder die Kanäle mit ADC, die auch getriggert haben.
Das ergibt ne Menge Leitungen, die bei einer 1:16 Muxerei einfach nicht mehr sinnvoll zu verkabeln und layouten sind
(Weil ich mir eine SMD Fummlerei einfach nicht antue)
Außerdem, wenn ich im Mega bereits 8 ADC habe, nehm ich die auch.
BTW: AN sich macht man das bei tatsächlichen Keyboards (Tasten) eigentlich NICHT mit Piezos, sondern mit Doppeltasten für die Anschlagsgeschwindigkeit. Ist dadurch viiiiel einfacher
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Zum Gucken stell' ich mal Teile der Schaltungen rein. Einiges davon ginge wahrscheinlich einfacher und eleganter (was die Vorverstärker betrifft) aber da ich keine Fehlschläge brauchen kann (muß beim ersten Mal gleich funzen), bin ich sehr konventionell und brav geblieben.
Beim Board sind Tasten und display wegen der Einbau-Art nicht erwünscht, also hab' ich aber doch (obwohl nicht verlangt) eine MIDI Input Schnittstelle vorgesehen, um über Sequencer und Komputer und Sysex oder so Kontrollmöglichkeiten zu haben.
Und nur zum Entwickeln und Testen hab ich auch einen MAX für ein RS232 Interface drinnen (Jumper MIDI od. RS2323), weil das einfach praktischer ist.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo Vitis und PicNick,
vielen Dank für die Infos!
@Vitis, soweit so klar.
Aber wie PicNick schon erwähnt hat sielt die Abfragezeit eine wichtige Rolle.
Auch in meinem Fall sind es Spitzen die ohne „verzögerung“ gemessen und
ausgewertet werden müssen.
Die Abfrage in einer Schleife ist da vermutlich zu langsam…
Aber danke trotzdem – es ist in jedem Fall eine Anregung zum weitermachen!
@PicNick: Deine Schaltung ist sehr interessant!
Ist mir aber leider viel zu hoch, da steig ich im Moment noch nicht durch…
Der Vorverstärker ist ja noch klar…aber dann…
Ich dachte dass ich das „relative einfach“ über die 4051 bzw. 4067 lösen
könnte. Puh, das ist deftig!
Wir bekommst Du das Programmtechnisch unter Kontrolle?
Wie viel Zeit ginge Dir verloren bei einer „seriellen Abfrage“ in einer Schleife?
Geht da gar kein Weg hin? Ich bräuchte wie gesagt so an die 32-40 Kanäle.
Grüße
Codejoker
Lesezeichen