Hi MC Forum, ich habe mich bereit erklärt ein Spiel für eine Hochzeit umzusetzen. Ich bin nun am planen, Material bestellen, Platinen designen usw. Ich hab nunja Kenntnisse auf Anfänger ebene, etwa 20 Programme auf einem AVR geschrieben, gut ein duzend Platinen hergestellt. Also diese Baugruppen muss ich verwursten: - Ein Schrittmotor mit L297/L298 (Clock und Direction) dazu Gabellichtschranke als Referenznocken für den Motor - Ein Display (wahrscheinlich IC2, dazu ein Drehimpulsgeber -> Menüsteuerung) - "Das Poti" Drehimpulsgeber mit 12 Leds als Rückmeldung 8x Handbedienungen a - Zwei RGB LEDs (6x PWM) - Drei status LEDs - Zwei Standart-Taster - Eine Lichtschranke mit Modulation (37Khz?) --> etwa 36 Eingänge, 100 Ausgänge. Bisheriger Lösungsansatz: ATMega 128 als übergeordneter Controller. -> Motorsteuerung + "Poti": HW angebunden Display + Encoder ATmega 32 -> Kommunikation 4bit unidirektional (hier wird nur der Mode übertragen). Protokoll in Software. 8x ATtiny für die Handbedienung. -> Kommunikation über I2C. Dort 6 Kanal Soft-PWM und 37Khz Signal über HW-PWM. Jede Bedienung sollte < 10ms einmal daten gelesen und geschrieben haben. Jede Bedienung wird über etwa 1,5m Leitung an das Hauptboard angeschlossen Bislang hab ich noch mit 3 Dingen bedenken: - I2C Anbindung von 8 µC - I2C Anbindung des Displays - So ein großes Programm schreiben ohne das noch schnell genug arbeitet. Aber eventuell bin ich ja auch schon mal wieder zu weit und das ganze lässt sich noch mit nem Sack voll Schieberegistern bewältigen.. aber 16 SoftPWMs.. naja Danke schonmal!
Deltal schrieb: > Aber eventuell bin ich ja auch schon mal wieder zu weit und das ganze > lässt sich noch mit nem Sack voll Schieberegistern bewältigen.. Schau mal ob du einen µC mit genügend IOs findest, dann kannst du dir die Schieberegister sparen. >aber 16 > SoftPWMs.. naja Schau dir mal WS2812 LEDs an.
:
Bearbeitet durch User
Deltal schrieb: > aber 16 SoftPWMs.. naja Für PWM gibt es auch fertige IC, die seriell angebunden werden können, z.B. über I²C die ganze Ecke um PCA9530 .. 33, PCA9632 ..35, PCA9685 oder via SPI die TLC5916, TLC5917 oder TLC5940, um nur einige zu nennen.
In wieviel Jahren soll denn die Hochzeit sein? Eine Multiprozessorkomunikation ist für einen Anfänger ein richtig harter Brocken. Du mußt erstmal ein Protokoll entwickeln, was Fehler erkennt und wieder selber aus dem Fehlerzustand rauskommt. Wenn es nicht geheim ist, beschreib dochmal ausführlich das Spiel. Dann kann man sicher weit besser Tipps geben. Und wenn es geheim ist, dann tue das nur für Dich. Das ist dann quasi Dein Pflichtenheft, ohne das Du mit Sicherheit Schiffbruch erleiden wirst.
Hi, danke für die Antworten. PWM ICs sind wohl praktisch, sind jedoch a) nicht so leicht erhältlich (oder teuer) und b) fehlt mir die Erfahrung damit. Mein Hintergedanke war "bleib erstmal bei dem, was du schoneinmal gemacht hast". Die Idee hinter dem Multi-µC kram ist: ich kann es leicht testen und entwickeln. Timings und Speicher sind erstmal kein Problem und ich verteile den code etwas um. Ob ein serieller Bus da die beste Wahl für ein Anfänger ist.. nun ja denke da mache ich mir mal über alternativen gedanken. Das Spiel wird wohl eine Mischung aus Reaktion und Wissensquiz. Dazu eben Funktionen wie ein Buzzer, countdown usw. Die Spieler sollen über bestimme Farben zugeordnet werden können, daher die RGB Geschichte. Der Schrittmotor wird für den "Flaschendrehen" Modus benötigt. Da diese natürlich nicht zufällig ablaufen soll, muss halt auch eine bestimmte Position angefahren werden können. Der genaue Ablauf wird noch ausgearbeitet, die Hardware ist jedoch verbindlich festgelegt worden. Bedeutet ich sehe besser nochmal 10 I/O reserve vor ;)
> Die Spieler sollen über > bestimme Farben zugeordnet werden können, daher die RGB Geschichte. Dazu brauchst da aber nicht notwendigerweise PWM. Mit einer RGB Led, deren 3 Farbanschluesse an 3 Pins haengen, kannst du aus dem Stand heraus 8 Farben erzeugen: Rot, Gelb, Gruen, Cyan, Blau, Magenta, Weiss und ähm 'Nichts'. Wuerde ich mir durch den Kopf gehen lassen und liebrr die I2C Sache durch Schieberegister ersetzen, wenn ich mit den Pins nicht auskomme. Vereinfacht die Programmierung enorm, wenn alles auf einem uC lauft. Speedmaessig ist es anscheinend auf einem einzelnen AVR sowieso kein Problem.
:
Bearbeitet durch User
Deltal schrieb: > Die Idee hinter dem Multi-µC kram ist: ich kann es leicht testen und > entwickeln. Na dann frag mal einen, der schon länger programmiert, der wird Dir genau das Gegenteil sagen. Kann man vom AVRStudio überhaupt mehrere Instanzen parallel ausführen oder benutzt Du mehrere PCs? Ich würde da wahnsinnig werden, mehrere Programme gleichzeitig entwickeln zu müssen. Wir haben auch einige Geräte mit mehreren MCs. Bevor überhaupt das Programmieren anfängt, wird erstmal das Protokoll entwickelt und dokumentiert. Dann hat einer den Bus-Treiber (CAN) und die Protokollschicht entwickelt und getestet und ne Lib draus gemacht. Und dann hat jeder die Software für seinen MC programmiert.
Das bekommst in 2 Jahren nicht fertig. Wie lange hast du Zeit?
cyblord ---- schrieb: > Das bekommst in 2 Jahren nicht fertig. Wie lange hast du Zeit? Ganz grobe Schätzung: Software: 300 Mannstunden Hardware: 300 Mannstunden Kosten: 800 Euro mit Gehäuse und Kabel
Zum Thema I2C kommunikation: Für ein Projekt benötige ich ebenfalls ATTinys als Slave. Als Grundlage hat dieser Code auf anhieb funktioniert: http://www.jtronics.de/avr-projekte/library-i2c-twi-slave.html Die Routinen für den Master habe ich von Peter Dannegger, hier aus dem Forum, genommen. Da ich ebenfalls über 1-3m übertragen muss habe ich einen Bustreiber (PCA9600) eingesetzt.
Das klassische Verfahren ... 1 Master pollt 8 Slaves über Serielle Schnittstelle mit dem 9 Bit Protokoll, das fast alle MC beherrschen. Master sendet Adresse (n) Slave (n) wird aktiv Master Sendet Daten (x Byte) Slave (n) empfängt (x Byte) Master wartet x ms auf Daten vom Slave Slave aktiviert senden und schickt (y byte) über den Bus. Slave(n deaktiviert sich und gibt den Bus wieder frei) Nächster Slave ... Im Fehlerfalle reicht es wahrscheinlich aus die Daten zu verwerfen und auf den nächsten Zyklus zu warten ...
Deltal schrieb: > PWM ICs sind wohl praktisch, sind jedoch a) nicht so leicht erhältlich wie Butter oder wie ein µc > (oder teuer) Deine Zeit ist umsonst b) fehlt mir die Erfahrung damit. Sann mach Sie doch. Das ist immer noch einfacher als alles selber zu entwickeln. Für RGB leds gibt es auch fertige ICs. Mein Hintergedanke > war "bleib erstmal bei dem, was du schoneinmal gemacht hast". Das genze hast du schon mal gebaut?
Für so ein Projekt würde ich zu einem STM32 mit 144 Pins raten. Der hat alles drin, bis zu 32 PWM's, jede Menge IOs und Pheriperie. Es braucht somit nur 1 ųC. Schaue Dir mal die Artikel zum STM32 an.
Hi, danke für die rege Beteiligung ;) @Karl Heinz Daran hatte ich schon mal gedacht, jedoch mit schaltbaren Widerständen. Denke aber, dass wird so nix. Und "keine" Farbe ist wohl nicht so pralle. Würde ja alles mit Schieberegistern machen, habe aber bedenken mit der PWM. @Peter Ja.. I2C war auch nur meine erste Idee. Ich .. wünsche.. mir ein System, welches einmal programmiert und getestet wird, dann einfach acht mal kopieren. Das ganze muss natürlich so simpel sein, dass man es mit nem Analyser noch loggen und debuggen kann. Im Moment grübel ich darüber nach die Kommunikation wie mit einem Schieberegister zu machen. Der Master gibt ein Taktsignal. Der Slave speichert auf jeder Flanke 2 oder 4 oder 8 Bit weg. Nach x Takten eine lange Pause, dann wieder von vorne. Die drei Eingangsbits möglicherweise einfach direkt zum Master übertragen. Selbst ein Takt von etwa 500Hz wäre ja noch schnell genug. @cyblord und Urps Im Herbst, ich hoffe aber mal, dass die Entwicklungszeit sich reduzieren lässt, wenigstens hab ich Unterstützung beim bau der nicht-elektronischen Hardware. Wenn, dann müssen später Abstriche bei der Software gemacht werden.. im Moment geht es mir mehr um die Hardware und die Auslegung. @John Doe sieht ja ziemlich gut aus. Wie viele µC hattest du als Slave angeschlossen und welche Übertragungszeiten konntest du erreichen? @Hans-Georg Ja, OK ist die alternative zum I2C @X4U Im Grunde kosten sie etwas soviel wie ein Tiny + Treiber. Dazu kommt halt mein Problem, dass ich mich ausführlich mit Protokollen beschäftigen muss. Habe halt ein schlechtes Gefühl dabei, etwas zu designen, wo ich später nicht weiss ob es so funktioniert. Das sind halt schon komplexe Bauteile wo man erstmal Erfahrungen mit sammeln muss. Ist halt ne alterative zum µC, dafür müsste ich wieder weitere Funktionen woanders unterbringen. Nein, gebaut habe ich soetwas noch nicht, sonst würde ich ja auch nicht eure Zeit in Anspruch nehmen. Aber das Grundprinzip, µC, Bitschubsen, PWM erzeugen und Treiber basteln. Das hab ich alles irgendwo schon mal gemacht, hab code-fragmente verfügbar usw. @Markus Müller würdest du echt jemand raten, welcher mit einem etwas anspruchsvollerem AVR Projekt schon überfordert ist, sich noch "mal eben" in einen neuen Controller einzuarbeiten?
In dem Artikel: STM32 CooCox Installation Wird gezeigt wie man einen STM32 zum ersten mal programmiert und ein paar LED's ansteuert. Hier ein STM32 Tutorial: http://diller-technologies.de/stm32_wide.html Ob Du jetzt lieber ein Multiprozessor-Projekt startest oder Dich ein wenig mit einem STM32 auseinandersetzen und alles doch lieber mit nur einem Prozessor erledigen willst kann ich nicht für Dich entscheiden. Mit der CooCox Umgebung könntest Du nicht nur einen STM32 programmieren, sondern auch ein LPC17xx oder einen anderen Atmel mit Cortex-Mx Kern. Für umfangreiche Projekte gibt es nun mal auch entsprechend passende Prozessoren von vielen Herstellern. Siehe hier: http://coocox.org/CooCox_CoIDE.htm >> "Supported Device:" Auch würde ein STM32 (oder LPC1xxx) eine Multiprozessor-Umgebung besser unterstützen, da man die mit CAN-Bus vernetzen könnte. (CAN = Controller Area Network). Bei AVR ist der CAN leider nur in wenigen Chips enthalten. Ginge zwar auch seriell oder mit SPI, ist jedoch immer mehr Programmier-Aufwand. Viel Spaß mit Deinem Projekt.
Deltal schrieb: > PWM ICs sind wohl praktisch, sind jedoch a) nicht so leicht erhältlich > (oder teuer) und Wenn du Reichelt und Preise um 1..2€ schon als schwierig empfindest ... > b) fehlt mir die Erfahrung damit. Mein Hintergedanke > war "bleib erstmal bei dem, was du schoneinmal gemacht hast". An Multiprozessorkommunikation und Soft-PWM wirst du mehr zu knacken haben, als ein paar Register über I²C zu setzen, zumal du I²C sowieso als Basisschnittstelle einsetzen möchtest.
Hans-Georg Lehnard schrieb: > 1 Master pollt 8 Slaves über Serielle Schnittstelle mit dem 9 Bit > Protokoll, das fast alle MC beherrschen. Und wozu jetzt das 9bit-Protokoll?
Hallo Kaj, ich denke Hans-Georg Lehnard denkt dabei an das Parity Bit. Also so etwas 9600Baud, 8 Datenbit, "E"ven Parity, 1 Stoppbit
Hi
>Und wozu jetzt das 9bit-Protokoll?
Master-Slave-Mode mit Adressierung.
MfG Spess
Deltal schrieb: > Der genaue Ablauf wird noch ausgearbeitet Davor hat es eh keinen Sinn, schon mit der Hardware anzufangen. Glaub es mir, ohne eine konkrete Beschreibung (= Pflichtenheft) wird das nie was. Es wird wie jeder andere Versuch, die EiWoMiSa zu erschaffen, kläglich scheitern.
@spess53 (Gast) >>Und wozu jetzt das 9bit-Protokoll? >Master-Slave-Mode mit Adressierung. Womit wir wieder beim Thema Hochzeit wären ;-9 Duckundwech
Aber das Thema ist hier mal wieder typisch. Viel High Tec Aufwand wegen fast nichts. Gerade so, also ob es in erster Linie darum geht, sich zu profilieren, anstatt mit einer gesunden Portion Pragmatismus das Problem zu lösen. http://de.wikipedia.org/wiki/Pragmatismus
Falk Brunner schrieb: >>>Und wozu jetzt das 9bit-Protokoll? > >>Master-Slave-Mode mit Adressierung. > > Womit wir wieder beim Thema Hochzeit wären ;-9 :D :D :D
Deltal schrieb: > sieht ja ziemlich gut aus. Wie viele µC hattest du als Slave > angeschlossen und welche Übertragungszeiten konntest du erreichen? Bisher habe ich es nur experimentell auf dem Steckboard aufgebaut. Ich hatte zwei Slaves (2x ATtiny861) angeschlossen und den BUS auf Fast Mode (400kHz) betrieben. Weiter bin ich leider noch nicht gekommen. Beruf + Studium = 0 Freizeit ;-)
> ich habe mich bereit erklärt ein Spiel für eine Hochzeit umzusetzen. Ich > bin nun am planen, Material bestellen, Platinen designen usw. Für eine Hochzeit würde ich auf keinen Fall soviel Mühe und Arbeit investieren. Es lohnt sich einfach nicht. Mittlerweile wird ja fast jede dritte Ehe in Deutschland geschieden. Realistischer wäre es doch, dem Brautpaar zwei Beratungsgutscheine für einen Scheidungsanwalt zu schenken! ;-) PS Vor Jahren fungierte ich als Trauzeuge bei einem Bekannten (Wirtschaftsinformatiker). Die Heirat erfolgte aus rein steuerlichen Gründen und wurde vom Brautpaar als eher lästiger Termin wahrgenommen. Dementsprechend erschienen wir allesamt im lässigen Freizeitlook im Standesamt. So grinste der Standesbeamte dann auch freundlich, als ich ihn fragte, wie hoch die Scheidungsrate aktuell in der Stadt sei. :-)
Deltal schrieb: > Hi, > > danke für die rege Beteiligung ;) > > @Karl Heinz > Daran hatte ich schon mal gedacht, jedoch mit schaltbaren Widerständen. > Denke aber, dass wird so nix. Und "keine" Farbe ist wohl nicht so > pralle. > Würde ja alles mit Schieberegistern machen, habe aber bedenken mit der > PWM. Kann ich verstehen. Aber wenn wir mal genauer darüber nachdenken, dann ist der Begriff PWM da schon recht hoch gegriffen. Denn dir geht es nicht darum, dass du jede beliebige Farbe durch Mischung von vielen Farbabstufungen erzeugen kannst. Alles was du brauchst, sind 8 unterscheidbare Farben. 7 kriegst du gratis und eine 8-te kannst du dir zb erzeugen, indem du nicht irgendeine 'PWM' nimmmst, sondern eine 2 Bit PWM. d.h. anstelle von 7 Farben 'out of the Box' hast du dann 14 Farben und das mit moderat anspruchsvollem Code. Eine derartige 'PWM' ist von der Ausgabefrequenz auf den Schieberegistern moderat und noch problemlos so machbar, dass für den Rest des Programmes genügend Rechenzeit übrig bleibt. Man könnte sich zb auch überlegen, ob man eine LED nicht als ein Bauteil mit 3 Beinen ansieht, sondern als eines mit 4, wobei dann 1 Farbpin der LED über 2 unterschiedliche Widerstände an jeweils 2 Pins vom Schieberegister hängt. Aber ist ok. Wenn du dir unbedingt durch den Mehr-µC Aufbau zusätzlichen Ärger einholen willst, dann tu das. Ich weiß ja nicht, wie gut du programmieren kannst. Aber wenn es für ein paar popelige LED an ein paar Schieberegistern, die timergesteuert 100 mal in der Sekunde ihre neuen Farbwerte kriegen nicht reicht, dann denk ich mir meinen Teil, wie gut du ein Kommunikationsprotokoll implementieren kannst.
:
Bearbeitet durch User
Falk Brunner schrieb: > Aber das Thema ist hier mal wieder typisch. Viel High Tec Aufwand wegen > fast nichts. Genau so siehts aus. Interessant, dass dieser Aufwand gerne von Leuten getrieben wird, die sich selbst 'Anfänger' nennen, oder noch schlimmer "eigentlich hab ich keine Ahnung", während die alten Hasen zur Einfach-Lösung greifen. Ich frage mich warum das wohl so ist. Das sollte einem Anfänger ja eigentlich zu denken geben, wenn das Bauchgefühl der alten Hasen von etwas abrät. :-)
Karl Heinz schrieb: > Interessant, dass dieser Aufwand gerne von Leuten getrieben wird, die > sich selbst 'Anfänger' nennen, oder noch schlimmer "eigentlich hab ich > keine Ahnung", während die alten Hasen zur Einfach-Lösung greifen. Ne, Karl Heinz. Das ist einfach die Angst, dass nachher etwas "verpennt" wurde und es darum nicht geht. Mit zunehmender Erfahrung hat man da einfach mehr Überblick was geht und wo es schwierig wird. /regards Andreas
Pragmatiker schrieb: > So grinste der Standesbeamte dann auch freundlich, als ich > ihn fragte, wie hoch die Scheidungsrate aktuell in der Stadt sei. :-) Wie geistreich eine solche Frage während einer Trauung....
Hallo, erstmal kurz Update nach dem wir uns am WE mal wieder zusammengesetzt haben. Das ganze ist wie schon vorhergesehen, noch einmal zusammengestrichen worden. Hauptsächlich wollte ich die Farben und Lampen weghaben, weil diese am meisten Arbeit machen. Außerdem wurden Display und Menu auf drei Schalter reduziert. Beschreibung der drei Modi wurde erstellt. Im Prinzip ein "Quizzer", ein Zufallsgenerator mit dem Schrittmotor und eine Geschicklichkeitsübung mit Reedschalter und Pendel. Durch den Wegfall der meisten Ausgänge reicht nun ein µC mit ein paar Schieberegistern. Die Platine(n) sind etwa zu 80% fertig, Teile bestellt. Mal schauen ob ich mich weiter motivieren kann :) >Für eine Hochzeit würde ich auf keinen Fall soviel Mühe und Arbeit >investieren. Tjo, hier ist das halt schon gang und gebe, dass man eben nicht versucht immer die selben 0815 Spiele durchzuzieren. Außerdem ist das ganze dann ja auch noch Geschenk und wird wohl noch den einen oder anderen Abend mal genutzt werden. So und nun.. warum muss es eigentlich immer so negativ zugehen? Ich komme hier herein und frage (betont als Anfänger) wie man so etwas lösen kann und wie ihr so etwas lösen würdet. Dazu habe ich meine Ideen geschrieben. > Aber das Thema ist hier mal wieder typisch. Viel High Tec Aufwand wegen > fast nichts. Ich hab nichts gegen einfache low-tec Lösungen. Die RGBs wollte ich z.B. über 2x3 Bit mit je einem Select Bit ansteuern. Das wären dann zwar viele Leitungen geworden, aber das Protokoll und die Umsetzung einfach. Nur wie bitte soll jemand, der sich als Anfänger outet da den Überblick habe? Genau in dem er andere Leute mit mehr Ahnung fragt. Habe ja auch gute Ideen bekommen und bin dafür dankbar. Aber warum dann noch gemeckert werden?
Manche verwechseln Mikrocontroller.net mit MeckerconTroller.net
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.