Hallo zusammen, ich suchen einen speziellen Microcontroller. Der Microcontroller sollte 3 Ausgänge haben und möglichst positive und negative Taktflanken ausgeben. Die Angabe welche Flanke an welchem Ausgang ausgegeben wird, sollte mit einem Drehschalter festgelegt werden. Je nachdem auf welcher Position der Drehschalter steht, sollen 2 der 3 Ausgänge jeweils eine positive bzw eine negative Taktflanke ausgeben sodass insgesammt 12 unterschiedliche kombinationen möglich sind. Ich möchte mit diesem Microcontroller ein Programm steuern welches bei Flankenwechseln eine bestimmte aktion ausführt. Hat hier jemand eine Idee wie ich das realisieren könnte?? Ich kenne mich leider nicht wirklich gut mit Microcontrollern aus :-( Mfg Chris
Ich würde mal frech behaupten, dass Deine Aufgabe mit jedem beliebigen Mikrocontroller realisierbar ist. Vorgehensweise: 1. Aufschreiben, wie Du das in etwa mit Deinen konventionellen, bekannten Mitteln (Logikgattern etc.) realisieren würdest. 2. Die Programmiersprache C erlernen. 3. Als Übung Deine Aufgabe in einem Mikrocontroller realisieren.
Also einfach eine "wenn dann" funktion (if-schleife) in C programmieren und dann auf den Microcontroller spielen?!? Wie bekomme ich dann aber den flankenwechsel?? dafür müsst ich ja sagen dass das erste signal auf "low" muss und das zweite auf "high" bleiben soll um danach beide gleichzeitig zu schalten!?! Ist meiner Meinung nach extrem umständlich.... Da gibt's doch bestimmt schon vorprogrammierte Ccontroller oder nicht? Mfg
Mist! Kann mir dann wenigstens jemand sagen welche Art von Microcontroller sich am besten dafür eignet?? Der Microcontroller sollte natürlich recht billig sein und sich dann auch einfach beschreiben lassen. Mfg
Chris wrote: > Mist! > Kann mir dann wenigstens jemand sagen welche Art von Microcontroller > sich am besten dafür eignet?? > Der Microcontroller sollte natürlich recht billig sein und sich dann > auch einfach beschreiben lassen. Fuer Dein Vorhaben reicht ein ATtiny. Auswahl: http://www.atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=part_no&Direction=ASC#760 Programmierung: AVR-Tutorial Olli EDIT: Wenn Du keine Zeit/Ahnung hast und das Ganze programmieren lassen willst, kann ich Dir gerne ein Angebot schreiben.
Realisieren kannst Du das konkret mit Interrupts, denen kann man bei den meisten Mikrocontrollern sagen kann, ob sie bei steigender oder fallender Flanke des Signals ausgelöst werden sollen. Es ist auch mit einem normalen Eingang zu lösen, indem der Zustand periodisch abgefragt wird. Dabei wird der vorangegangene Zustand auch in einer Variablen Zwischengespeichert. Nun braucht man nach dem Einlesen des Eingangszustands nur noch zu schauen, wie der Zustand vorher war und mit dem aktuellen zu vergleichen und schon weiss man, ob sich das Signal verändert hat und in welche Richtung es sich verändert hat. Also etwa so (Pseudocode, extra ausführlich): Zustand = PortX.Bit0 // Aktuellen Zustand einlesen if (AlterZustand == Zustand) { // Signal unverändert } if (Zustand > AlterZustand) { // Steigende Flanke } if (Zustand < AlterZustand) { // Fallende Flanke } AlterZustand = Zustand // Aktuellen Zustand zwischenspeichern
Chris wrote: > Der Microcontroller sollte 3 Ausgänge haben und möglichst positive und > negative Taktflanken ausgeben. Man kann keine positive oder negative Flanke allein ausgeben, dann müsste die Spannung ja permanent immer höher oder immer niedriger werden... Vielleicht malst du mal ein Impulsdiagramm auf, wie du dir das vorstellst.
@Johnny: ich glaub er meinte das genau andersrum. Also nicht die Flanken detektieren, sondern sie ausgeben. Stell mir das aber auch schwierig vor, da binäre Signale ja nur 2 Zustände haben. Somit kann ein Ausgang nicht immer nur ne fallende Flanke ausgeben. Impulsdiagramm wäre da echt mal ne schicke Sache ;-)
okay, hab mich schei...e ausgedrückt =) im Endeffekt Brauch ich beispielsweise eine "positive"-ansteuerung am Ausgang 1 und eine "negative"am Ausgang 3 Mein Kasten an den ich diesen schalter mit dem microcontroller anschließen will erkennt beim Spannungswechsel (also Spannung da / Spannung weg) die Flankenwechsel selbstständig (die dazugehörige Software erkennt "rising edge" und "faling edge"). Heißt: Spannung geht weg -> positive Flanke (die Signale sind 0-aktiv, kommt kein Signal steht der Eingang an dem Kasten auf 1) Spannung kommt -> negative Flanke Um jetzt aber die Positive Taktflanke zu bekommen müsste ich in diesem Beispiel das Signal am Ausgang 1 erst ansteuern (also eine negative Flanke aufschlaten) damit ich es wieder zurücksetzen kann um die positive Flanke zu bekommen. Hoff das ist jetzt nicht zu verwirrend geschrieben xD
Brauch ich da eigentlich auch einen speziellen Microcontroller damit ich ein in C geschriebenes Programm darauf speichern kann?? und was für ein speicher wäre denn empfehlenswert??
Chris wrote: > Brauch ich da eigentlich auch einen speziellen Microcontroller damit ich > ein in C geschriebenes Programm darauf speichern kann?? > und was für ein speicher wäre denn empfehlenswert?? Du musst erst einmal verstehen, was ein Mikrocontroller ist, insbesondere wie man ihn programmiert. Man kann da kein C-Programm drauf speichern. Das muss erst einmal durch einen Compiler. Das daraus resultierende hex-File kannst du dann mit einem speziellen Programmierkabel auf den uC laden. Siehe AVR-Tutorial.
Gut, soweit verstanden.. Hab mich da gerade eingelesen. Ich schnapp mir also beispielsweise Notepad und schreibe meine Anweisungen im c-code, compaliere das dann in ein hexfile und kann es dann aufspielen oder?? Suche jetzt gerade nach einem passenden uC Was meint ihr, würden sich die 2 für meine Zwecke eignen und welcher wäre dann besser?? ATTINY48-PU: http://www.mouser.com/Search/ProductDetail.aspx?qs=K8BHR703ZXgLoO6oMgQ7Jg%3d%3d bzw.: ATTINY461-20PU: http://www.mouser.com/Search/ProductDetail.aspx?qs=2mdvTlUeTfCRIVPoYr1Vsw%3d%3d Ich hoff doch mal dass ich langsam der Sache näher komme =)
Chris wrote: > Gut, soweit verstanden.. Hab mich da gerade eingelesen. > Ich schnapp mir also beispielsweise Notepad und schreibe meine > Anweisungen im c-code, compaliere das dann in ein hexfile und kann es > dann aufspielen oder?? Genau. hast Du denn schon ein Board, auf dem der uC nachher laufen soll? Die programmierung kann ueber die ISP-Schnittstelle erfolgen. Dazu sieht man auf der Platine einen 10-polige Wannenstecker vor und bastelt sich einen STK200-kompatiblem Programmieradapter auf einem Stueck Lochraster, siehe http://www.myplace.nu/avr/yaap/index.htm - oder Du kaufts einen Adapter fertigen. > Suche jetzt gerade nach einem passenden uC > Was meint ihr, würden sich die 2 für meine Zwecke eignen und welcher > wäre dann besser?? Der muss ja nichts koennen, kein ADC, kein PWM, du brauchst ja nur ein paar Port-Pins. > ATTINY48-PU: Oder noch kleiner, Attiny26 oder ein 2313. So in der Art. Du brauchst ja mind. 3 I/O-Pins fuer die Ausgabe und 2-3 fuer den Drehencoder zur Eingabe. Plus eben die Leitungen fuers ISP. Das Datenblatt dazu hilft Dir dann sicher noch ein wenig weiter. Olli
so, Habe im Geschäft einen Mikroprozessor in die Hand gedrückt bekommen Das Ding ist im Endeffekt eine kleine PLatine (Größe wie ein PID50 und passt auch auf das socket)mit einem Phillips Microcontroller und einem Spannungswandler (5V auf 3V) Ich weiß jetzt dummerweiße nicht mehr wie das Bauteil genau heißt. Hab bei google, Conrad oder mouser auch nicht wirklich was passendes gefunden. Es hat einen 265KB Flash speicher und ist ein AMR-Bauteil (zumindest muss ich mein c-file später mit einem dazugehörigen AMR-Compiler compalieren) Bei meinem c-file habe ich zumindest die Anweisung was es machen soll soweit fertig (if-schleifen mit sleep und Logikverknüpfungen), weiß aber nicht genau wie ich die Pins meinen Eingängen bzw Ausgängen zuordne. Kann mir evtl jemand weiterhelfen?? Ich möchte einem I/O-Pin sagen dass er ein Eingang sein soll und beispielsweise E0 heißen soll, bzw ein Ausgang und A0 heißen soll Danke schonmal im Vorraus =)
Chris wrote: > Es hat einen 265KB Flash speicher und ist ein AMR-Bauteil (zumindest > muss ich mein c-file später mit einem dazugehörigen AMR-Compiler > compalieren) Oh Gott, nen 32Bit-Boliden für nen blutigen Anfänger, das kann nur schief gehen. > Kann mir evtl jemand weiterhelfen?? Nö. 32Bit-Entwicklungsumgebungen gehen davon aus, daß der Benutzer schon fundierte Kenntnisse in Toolchains, Installationen, Microcontrollern und C hat. Datasheets und User-Manuals sollte er auch einigermaßen flüssig lesen und verstehen können. Du könntest genau so gut fragen, ob Dir jemand schnell mal beim Fliegen eines Airbus 380 hilft. Peter
Chris wrote: > so, > Habe im Geschäft einen Mikroprozessor in die Hand gedrückt bekommen > Das Ding ist im Endeffekt eine kleine PLatine (Größe wie ein PID50 und > passt auch auf das socket)mit einem Phillips Microcontroller und einem > Spannungswandler (5V auf 3V) Ich weiß jetzt dummerweiße nicht mehr wie > das Bauteil genau heißt. Hab bei google, Conrad oder mouser auch nicht > wirklich was passendes gefunden. > Es hat einen 265KB Flash speicher und ist ein AMR-Bauteil (zumindest > muss ich mein c-file später mit einem dazugehörigen AMR-Compiler > compalieren) Klingt wie ein ARM-Controller (nicht AMR) von Phillips aus der LPC-Serie. Die genaue Bezeichnung steht drauf. > Bei meinem c-file habe ich zumindest die Anweisung was es machen soll > soweit fertig (if-schleifen mit sleep und Logikverknüpfungen), weiß aber > nicht genau wie ich die Pins meinen Eingängen bzw Ausgängen zuordne. Wenn es so ein Controller ist, gibt es dafür das WinARM-Paket. Beispiele sind auch dabei. > Kann mir evtl jemand weiterhelfen?? Nichts für ungut, aber du fängst mit einem recht komplexen Controller an, obwohl dir hier viel einfachere Controller empfohlen wurden. > Ich möchte einem I/O-Pin sagen dass er ein Eingang sein soll und > beispielsweise E0 heißen soll, bzw ein Ausgang und A0 heißen soll Versuche mal die Demo-Programme laufen zu lassen.
Na deshalb bin ich hier du genie ;) Ich brauch niemand der mir sagt dass ich keine ahnung von dem zeug hab, das weiß ich selbst. (bin auch maschinenbauer und kein elektro bzw nachrichtentechniker) Sollte ja aber jetzt nicht soooo ein rießen Problem sein im c-code den Pins zu sagen was ich von denen will oder^^ zur not bestell ich mir halt nen anderen Prozessor, aber das dauert bei uns mal locker 2 wochen bis da was da ist Das wichtigste is ja mal das c-file für den Anfang würd ich meinen
@Christoph Deine nachricht kam leider als ich noch am schreiben war =) jep, das LPC könnte hinkommen (hab mich vorhin vertippert beim AMR :-/) Wie gesagt, den habe ich im Geschäft von einem in die Händegedrückt bekommen nachdem ich dem genau erklärt habe was ich vorhabe :-/ Dachte zumindest der kerl der mir das gegeben hat hätte ne Ahnung.... Heißt wir steigen hier mal auf nen kleinen AVR mit 16 I/O pins um =) (werd ich mir dann wohl oder übel bestellen) Wie würde die zuweisung dann ungefähr aussehen?? (ich kenn mich leider mit E-technik und Programmierung nur ein kleines bisschen aus)
>Sollte ja aber jetzt nicht soooo ein rießen Problem sein im c-code den >Pins zu sagen was ich von denen will oder^^ Immer wieder nett hier zu lesen. Lieber Chris weißt Du eigentlich, was Du willst? Es gibt so viele hier im Forum, die behaupten, sie haben von der ganzen Materie keine Ahnung, wollen nette Sachen machen. Hast Du einen C-Compiler ? Hast Du anflugweise Ahnung, was ein Controller ist ? Ich sprech Dir keine Fähigkeiten ab, das Du was fertig bringst oder bringen wirst, aber es klingt reichlich unbedarft was Du im Augenblick von Dir gibst. Oder machst Du Dir einen Spaß hier?
Chris wrote: > Heißt wir steigen hier mal auf nen kleinen AVR mit 16 I/O pins um =) Wer ist denn "wir"? Was ist das denn nun eigentlich fuer ein Projekt? > Wie würde die zuweisung dann ungefähr aussehen?? > (ich kenn mich leider mit E-technik und Programmierung nur ein kleines > bisschen aus) Sorry, aber warum tust Du Dir das denn dann an? Olli
Chris wrote: > @Christoph > > Deine nachricht kam leider als ich noch am schreiben war =) > jep, das LPC könnte hinkommen (hab mich vorhin vertippert beim AMR :-/) > Wie gesagt, den habe ich im Geschäft von einem in die Händegedrückt > bekommen nachdem ich dem genau erklärt habe was ich vorhabe :-/ > Dachte zumindest der kerl der mir das gegeben hat hätte ne Ahnung.... Naja, du kannst das mit einem ARM7 machen, nur ist das halt mit Kanonen auf Spatzen geschossen. > Heißt wir steigen hier mal auf nen kleinen AVR mit 16 I/O pins um =) > (werd ich mir dann wohl oder übel bestellen) Würde ich dir dringend raten. Peter hat schon irgendwie recht, es kann dir keiner helfen, mit einem ARM7 zu arbeiten, wenn du keinerlei Vorkenntnisse hast. > Wie würde die zuweisung dann ungefähr aussehen?? > (ich kenn mich leider mit E-technik und Programmierung nur ein kleines > bisschen aus) Arbeite am besten mal das AVR-Tutorial oben links auf der Seite durch. Ob du eine LED ansteuerst oder deine Hardware, ist eigentlich egal. Bevor du an deinem Projekt arbeitest, bringe erst mal eine LED zum Leuchten. Hierfür findest du auch diverse Beispiele.
Das ist lustig, wie bei Versteckte Kamera hier. Für jemand, der gar keinen Plan von MC oder C hat ist das Projekt genauso anspruchsvoll wie für viele hier ein Werkstück zu fräsen. An Deiner Stelle würd' ich entweder mehr Infos raus geben, dann bekommst Du bessere Ratschläge, obwohl die Ratschläge, die Du bekamst gar nicht schlecht waren - Du hast sie nur ignoriert, oder mir hier jemand suchen, der's für Geld macht. Und nein, nicht mich. Das ist nicht mein Job. Für Deine Aufgabe würde ein kleiner MC von Atmel reichen, wenn's nicht der Drehschalter wäre, könnte es sogar ein ATiny13 oder ähnlich sein. Für Eingabe per Drehschalter brauchst Du mehr Pins, ATiny2313 z.B. Mit so kleinen (8Bit) MCs wie der von Atmel, die Deinem Anspruch höchstwahrscheinlich bereits genügen würden, findest Du leichter jemand der Dir hilft und solltest Du dennoch so wagemutig sein, das immer noch selbst machen zu wollen, wird Dein Frusterlebnis auch deutlich geringer ausfallen.
MWS wrote: > Für Deine Aufgabe würde ein kleiner MC von Atmel reichen, wenn's nicht > der Drehschalter wäre, könnte es sogar ein ATiny13 oder ähnlich sein. > Für Eingabe per Drehschalter brauchst Du mehr Pins, ATiny2313 z.B. Mit > so kleinen (8Bit) MCs wie der von Atmel Soweit waren wir mit ihm schon vor drei Tagen, daraufhin ist er sich einen ARM kaufen gegangen. ATiny2313 wurde ihm hier woertlich empfohlen. Wenn ich als Baecker eine Backofensteuerung brauche, dann versuch ich das doch nicht selber, sondern lass das einen Profi machen. Olli
die zwei Wochen die ein Atmel zu dir benötigt, kannst du leicht überbrücken. Installiere dir das AVR-Studio und programmiere in Assembler. Die Beispiele aus dem AVR-Tutorial kannst du auch ohne MC auf dem Rechner simulieren. Nebenbei das Datenbaltt lesen und schauen was der Controller so macht beim ababeiten deiner Befehle. der Vorteil am Atmel ist übrigens, dass er unter Anfängern sehr weit verbreitet zu sein scheint und es viel zu lesen im Internet gibt. Um auch noch mal die Frage zu stellen: Warum tust du dir das an? Ich glaube deine Freizeit kannst du sinnvoller verbringen, denn 2 Wochen werden nicht reichen um dein Projekt zu beenden
Chris wrote: > Wie gesagt, den habe ich im Geschäft von einem in die Händegedrückt > bekommen nachdem ich dem genau erklärt habe was ich vorhabe :-/ > Dachte zumindest der kerl der mir das gegeben hat hätte ne Ahnung.... Er hat entweder höchstens soviel Ahnung wie Du oder er wollte nur Umsatz machen. Was aber hilfreich wäre, wenn Du endlich mal erklären würdest, was Du eigentlich willst. Das hat nämlich immer noch keiner verstanden. Wie Jörg schon sagte, man kann keine einzelnen Flanken erzeugen. Man kann nur ne Flanke auf einem Signal in zeitlichem Bezug zu ner anderen Flanke erzeugen. Dazwischen müssen die Signale wieder wechseln, um die gleiche Reihenfolge erneut zu erzeugen. Bzw. soll die Folge überhaupt unendlich oft erzeugt werden oder nur auf Tastendruck? Die andere Sache ist, wie groß sind die Zeitabstände zwischen den Flanken, Du kannst Flanken mit Abständen von 50ns erzeugen oder 50 Jahren. Ein Signalablauf läßt sich schwer in Worte fassen, Du mußt es aufmalen. Dann verstehst auch Du besser, was Du programmieren mußt. Und dann erst kann Dir auch jemand Tips geben, wie man sowas programmieren könnte. Ohne Zeichnung und Zeitangaben kommen also weder Du noch wir weiter. Peter
hi Chris schreib mal genau was du machen willst, das ´hinterm berg halten´ ist nicht das ware wenn du hilfe willst vlg Charly ps. und tuh dir ein gefallen und fang nicht mit C an, ich mache solche bzw. aehnliche anwendungen seit jahren
Charly B. wrote: > ps. und tuh dir ein gefallen und fang nicht mit C an, ich mache solche > bzw. aehnliche anwendungen seit jahren Du sprichst in Raetseln. Olli
@Chris Lieber Chris, habe hier ein bischen gelesen. Sehr lustig. Ist ja noch Fasching, oder soll das jetzt so weitergehen bis 1.April ? Wenn das alles ernst gemeint ist von Dir, very sorry. Google doch mal nach einer Kleinsteuerung wie "Logo" von Siemens oder "easy" von Moeller. Da ist Dir geholfen, denke ich. Alternativ die Aufgabe vergeben. Dazu exakt aufmalen, auf karriertem Papier mit Kästchen, wie die einzelnen Signalabläufe sein sollen (Zeiten) sowie als "state diagram" die Funktionsabläufe (hierzu Google Bildersuche einsetzen). Anders wird das nix. Gruss Klaus
pacer wrote:
> die zwei Wochen die ein Atmel zu dir benötigt, [...]
Also Reichelt braucht zu mir zwei Tage ab Bestellung...
Also ich stimmer zu, ein "bisschen" mehr Information, was Chris genau machen will, waere schon gut. Zwecks Mikrokontroller haette ich aber einen anderen Vorschlag: Chris, schau Dir mal die Picaxe-Serie an (http://www.picaxe.com). Die sind nicht besonders schnell (ca. 2000 - 10000 Befehle pro Sekunde), aber je nachdem wie oft Du schalten willst, koennte das mehr als genug sein (mehr Info waere gut :-) Von den sonstigen Faehigkeiten mehr als ausreichend. Der Vorteil der Picaxes - superbilliger Einstieg (bloss ein paar Euros), Programmierung in Basic, Programmier-Software ist gratis und simpel, keine spezielle Programmierhardware notwenig (bloss ein serielles Kabel und zwei Widerstaende), und ein echt nettes und hilfreiches Benutzerforum (allerdings Englisch), wo auch blutige Anfaenger wie Du im Gegensatz zu hier sehr freundlich behandelt werden. Programmierung ist denkbar einfach - Programm im Programmier-Editor schreiben, Picaxe mit Computer verbinden (serielles Kabel oder USB), Programm auf den Mikrokontroller laden, fertig! Ich wuerde empfehlen, mit dem 08M- oder 14M-Starterpack anzufangen, das reicht fuer Deine Zwecke leicht. Wenn Du mit dem dann gut zurechtkommst, ist - wenn ueberhaupt notwendig - der Umstieg auf "echte" Mikrokontroller (Mikrochip, Atmel etc.) auch nicht mehr sehr schwer. Wolfgang
So Männer, da ja einige denken ich verarsche sie: Hier nochmal in DEUTSCH und recht deutlich: Ich meine es ernst: ICH HABE LEIDER KEINE AHNUNG VON DER MATERIE!!!!! es gibt zumindest den einen oder anderen der mir wirklich weitergeholfen hat (und dafür DANKE) aber auch einige die sich ihre Kommentare echt hätten sparen können oder zumindest teilweise!!! Ich könnt jetzt auch mal anfangen was ihr im Maschinenbau alles NICHT WISST Woher soll ich das alles wissen??? Wie oben geschrieben ich Maschinenbauer (im 7ten Semester). Deshalb wollte ich mich am Anfang erst mal informieren, dann hab ich das Tutorial auf das mich Olli verwiesen hatte ehrlich gesagt leider nur zu oberflächlich überflogen und mich danach an einem c-file probiert. Jetzt mal nur so am Rande: woher soll ein Leihe das alles wissen??? Ich bin als Werksstudent eingestellt und auf einmal hieß es zu mir das hast du was, so und so soll das funktionierne: MACH MAL WAS. -> Meine erste Idee war dann halt: schau mal ob dir das web helfen kann.... und so bin ich hier gelandet (vieleicht macht das der eine oder andere ja auch so "wenn sein Auto so ein komisches Geräusch macht") Also bitte, wenn die Komentare nichts mit dem Thema zu tun haben sondern nur "oh mein Gott ein Anfänger" dann spart euch den Teil bitte
Chris wrote: > Jetzt mal nur so am Rande: woher soll ein Leihe das alles wissen??? > Ich bin als Werksstudent eingestellt und auf einmal hieß es zu mir das > hast du was, so und so soll das funktionierne: MACH MAL WAS. > > -> Meine erste Idee war dann halt: schau mal ob dir das web helfen > kann.... Du haettest von Vornherein gleich exakt beschreiben sollen, was Du machen sollst/willst, anstatt hier eine schwammige Frage wie "ich suchen einen speziellen Microcontroller" zu stellen. Dann haette man Dir gezielt helfen koennen. Aber dem bist Du ja trotz mehrfachen Nachfragens immer gekonnt ausgewichen. Die Leute hier im Forum sind i.d.R. erstaunlich hilfbereit, und wenn Du die richtigen Fragen stellst, gehst Du hier mit etwas Glueck mit einer funktionierenden Komplettloesung raus. Wenn Du aber auf Nachfragen nicht reagierst (Impulsdiagramm, genaue Beschreibung, was eigentlich gemacht werden soll), dann kann man Dir nicht helfen. Du hast jetzt immer noch nicht speziifiert, was Du genau machen willst. Wenn du spaeter als Maschinenbauer mit Deinen Kollegen so kommunizierst wie mit den Leuten hier, dann wirst Du keine Probezeit ueberstehen. Olli
Chris wrote: > > Ich meine es ernst: ICH HABE LEIDER KEINE AHNUNG VON DER MATERIE!!!!! > es gibt zumindest den einen oder anderen der mir wirklich weitergeholfen > hat (und dafür DANKE) aber auch einige die sich ihre Kommentare echt > hätten sparen können oder zumindest teilweise!!! Ich könnt jetzt auch > mal anfangen was ihr im Maschinenbau alles NICHT WISST im Moment kommt es aber etwa so rüber: Ein blutiger L_ai_e in Maschinenbau & Co möchte einen Haufen Erde von einer Ecke seines Gartens in die andere bringen und will von dir einen Rat. Du sagst ihm, er soll sich eine einfache Schubkarre holen und kurze Zeit später ist er wieder da, hat einen Bausatz für einen 40-Tonnen-Kipplaster dabei und will von dir wissen, wie er den jetzt aufbauen muss...wie er die Erde dann auf den Laster bekommt, weiß er schon, dafüer hat er sich schon eine Schaufel gekauft...
Die Beschreibung von meinem Problem hab ich für meine Begiffe deutlich erklärt sorry =( Also hier mal so deutlich wie möglich =) Also: ich versuche es nochmal zu erklären (bitte zitiert die Stelle an der ich undeutlich bin oder Mist schreibe): Ich bin soweit dass ich 12 Eingangssignale will 11 werden über einen Drehschalter angesteuert und eins über einen Taster. Das Signal am Taster soll nur dann durchgeleitet werden wenn dieser gedrückt ist. erste Logik: wenn Taster gedrückt (beispielsweise E0=1) & Drehschalter auf Schalterstellung 1, dann Ausgang 1 = 1 & Ausgang 2 = 1 Was die Flanken angeht hatte ich mich ja zwischenzeitlich verbessert : Ich brauch nur die Wechsel zwischen High und Low (von high nach low erkennt meine Software in der Kiste die ich ansteuern will eien "negative Flanke" und umgekehrt) Wenn ich aber beispielsweise als Ausgangssignal Ausgang1=0 und Ausgang3=1 brauche und meine software in der Kiste aber nur Wechsel zwischen "high" ubd "low" erkennt muss ich erst das Ausgangssignal 1 auf high setzen, damit ich im 2ten Schritt beide auf die gewünschten Werte setzen kann. das habe ich bisher einigermaßen hinbekommen mein aktuell größtes Problem ist der Anfang von meinem c-file Hoffe das war deutlicher
@ justus das hat der Mschinenbauer ja kapiert und hat den 40tonner - Bausatz wieder weggebracht :) Er hat jetzt nen Bausatz für ne Schubkarre und nen Spaten :D
Chris wrote: > Was die Flanken angeht hatte ich mich ja zwischenzeitlich verbessert : Noe. > Ich brauch nur die Wechsel zwischen High und Low > (von high nach low erkennt meine Software in der Kiste die ich ansteuern > will eien "negative Flanke" und umgekehrt) Das ist immer noch nicht klar. Wenn Du einen Uebergang high->low erzeugst, muss es ja wieder einen low->high geben, damit spaeter wieder ein high->low erfolgen kann. Wann soll das Ereignis low->high stattfinden? > Hoffe das war deutlicher Kein bischen. Poste ENDLICH mal ein Logik- und ein Impulsdiagramm, das wurde hier schon x-mal nachgefragt. So etwas aufzustellen musst Du doch gelernt haben. So etwas muss man doch nicht versuchen, in Prosa zu erklaeren. BTW: Jeder Maschinenbauer hat im Grundstudium jeweils mind. 4 SWS Physik, Informatik und Elektrotechnik. Muss man halt auch hingehen. Olli
Chris wrote: > erste Logik: wenn Taster gedrückt (beispielsweise E0=1) & Drehschalter > auf Schalterstellung 1, dann Ausgang 1 = 1 & Ausgang 2 = 1 > Wenn ich aber beispielsweise als Ausgangssignal Ausgang1=0 und > Ausgang3=1 brauche und meine software in der Kiste aber nur Wechsel > zwischen "high" ubd "low" erkennt muss ich erst das Ausgangssignal 1 auf > high setzen, damit ich im 2ten Schritt beide auf die gewünschten Werte > setzen kann. Wenn ich das richtig verstehe, reicht fuer Dein Vorhaben ein einfacher Drehschalter und ein Taster, und zwei, drei TTL-Bausteine. mach doch einfach ein kleines TTL-Grab auf (ich meine das ernst!), aber geh Dir jetzt bitte einen CPLD oder FPGA kaufen. Olli
Sorry Olli, ich hab von Impulsdiagrammen keine Ahnung sonst hätt ich das nach dem ersten Post in dem ich das gelesen hab reingestellt. ich versuch mal die Logik von meinem Möchtegern-Programm zu beschreiben: Kurze erklärung: E0 bis E11 sollen die verschidenen Eingangssignale sein A0 bis A4 die Ausgangssignale (wobei eines der 4 Signale nicht gebraucht wird--> sagen wir A0) E0 ist hier dann mein Taster: Hier mal nur mal die Idee für die Logik im c-file: /* schalter 1 */ wenn E0=1 und E1=1 dann A1 =1 & A2=1 /* hier erkennt meine Software dass sich 2 Signale gleichzeitig ändern --> es wird von der Software ein Unterprogramm ausgeführt das von diesen Signalwechseln aufgerufen wird (das ist dann vorprogrammiert und hat nichts mit meinem Programm zu tun) */ Danach setze ich die signale einzeln und nacheinander wieder in den Ursprung zurück: sleep 10ms A1=0 sleep 10ms A2=0 sleep 10ms A3=0 sleep 10ms /* die Kiste die ich ansteuern will reagiert nur auf 2 gleichzeitige Signalwechsel*/ /*Schalter 2*/ oder wenn E0=1 & E2=1 dann A2=1 sleep 10ms A1=1 & A2=0 sleep 10ms A1=0 sleep 10ms A2=0 sleep 10ms A3=0 sleep 10ms und so weiter
Olli R. wrote: > mach doch > einfach ein kleines TTL-Grab auf (ich meine das ernst!), aber geh Dir > jetzt bitte einen CPLD oder FPGA kaufen. keinen meinst du hoffentlich doch, oder? ;-)
Welchen Compiler nimmst du denn? AVR STudio oder Codevision würde ich vorschlagen. Zum Programmieren eine Tiny oder AVR (z.B. ATMega8, it ausreichend I/O PIN'S) nimmt man am besten PONYPROG und eine ISP Adapter, üblicher weise einen STK200+/300. Der Anfang deines C Files ist ein bißchen vom Compiler abhängig.
Christoph Budelmann wrote: > Olli R. wrote: >> einfach ein kleines TTL-Grab auf (ich meine das ernst!), aber geh Dir >> jetzt bitte einen CPLD oder FPGA kaufen. > > keinen meinst du hoffentlich doch, oder? ;-) KEINEN, ja, Tippfehler! Bei einem Thread in diesem Stadium verkneife ich mir jede evtl. missverstaendliche Ironie. @Chris: Kauf Dir erstmal nix! Stell ein Logikdiagramm auf, setz das in Gatter um, such dir dann die passenden Logik-ICs raus und loete das auf einem Lochraster zusammen, fertig. Olli
@ Stefan Was den Compiler angeht hab ich mich noch nicht festgelegt Ich nehme aber gerne deinen Vorschlag an mit AVR Studio
@ olli das ding ist ein Handschalter der während der Autofahrt bedient werden muss (der muss so klein und so handlich wie möglich sein) Mit der Idee über die gatter wir die Platine dann relativ groß oder??
Chris wrote: > @ olli > das ding ist ein Handschalter der während der Autofahrt bedient werden > muss > (der muss so klein und so handlich wie möglich sein) > Mit der Idee über die gatter wir die Platine dann relativ groß oder?? Halbe Eurokarte (8*10cm)? Mal sehen: > A0 bis A4 die Ausgangssignale (wobei eines der 4 Signale nicht gebraucht > wird--> sagen wir A0) 0 bis 4, das sind 5 Signale. Im Eingangsposting waren es uebrigens noch 3. Also, du hast einen Drehschalter mit 12 Positionen und einen Taster oder was? Stell doch bitte mal ein Logikdiagramm auf, welche Zustaende Du brauchst, so in der Art - 0=low, 1=high. Einfach mal die Tabelle fuer die Ausgaenge A1-A3, etc ergaenzen mit 0 bzw 1: Schalterps. | Taster | A1 | A2 | A3 1 | 0 | | | 2 | 0 | | | 3 | 0 | | | 4 | 0 | | | 5 | 0 | | | 6 | 0 | | | 7 | 0 | | | 8 | 0 | | | 9 | 0 | | | 10 | 0 | | | 11 | 0 | | | 12 | 0 | | | 1 | 1 | | | 2 | 1 | | | 3 | 1 | | | 4 | 1 | | | 5 | 1 | | | 6 | 1 | | | 7 | 1 | | | 8 | 1 | | | 9 | 1 | | | 10 | 1 | | | 11 | 1 | | | 12 | 1 | | | Das ist zwar noch kein Logikdiagramm, sollte aber das Verstaendnis foerdern.
> die Ausgaenge A1-A3 ergaenzen mit 0 bzw 1:
... oder 'X', wenn der Zustand egal ist ...
Ein richtiges Logikdiagramm saehe eher so aus - nun fuell mal die Zustandsmatrix fuer die Ausgange mit Nullen und Einsen aus (eine 0 entspricht dann dem Uebergang low-high am Ausgang wie von Dir gefordert): =========================================================== | Drehschalterpositionen |Taster| Ausgaenge | =========================================================== |E1|E2|E3|E4|E5|E6|E7|E8|E9|E10|E11|E12| E0 |A1|A2|A3|A4| =========================================================== | 1| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 | | | | | | 0| 1| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 | | | | | | 0| 0| 1| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 | | | | | | 0| 0| 0| 1| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 | | | | | | 0| 0| 0| 0| 1| 0| 0| 0| 0| 0 | 0 | 0 | 0 | | | | | | 0| 0| 0| 0| 0| 1| 0| 0| 0| 0 | 0 | 0 | 0 | | | | | | 0| 0| 0| 0| 0| 0| 1| 0| 0| 0 | 0 | 0 | 0 | | | | | | 0| 0| 0| 0| 0| 0| 0| 1| 0| 0 | 0 | 0 | 0 | | | | | | 0| 0| 0| 0| 0| 0| 0| 0| 1| 0 | 0 | 0 | 0 | | | | | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 1 | 0 | 0 | 0 | | | | | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 1 | 0 | 0 | | | | | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 1 | 0 | | | | | | 1| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 | | | | | | 0| 1| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 | | | | | | 0| 0| 1| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 | | | | | | 0| 0| 0| 1| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 | | | | | | 0| 0| 0| 0| 1| 0| 0| 0| 0| 0 | 0 | 0 | 1 | | | | | | 0| 0| 0| 0| 0| 1| 0| 0| 0| 0 | 0 | 0 | 1 | | | | | | 0| 0| 0| 0| 0| 0| 1| 0| 0| 0 | 0 | 0 | 1 | | | | | | 0| 0| 0| 0| 0| 0| 0| 1| 0| 0 | 0 | 0 | 1 | | | | | | 0| 0| 0| 0| 0| 0| 0| 0| 1| 0 | 0 | 0 | 1 | | | | | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 1 | 0 | 0 | 1 | | | | | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 1 | 0 | 1 | | | | | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 1 | 1 | | | | | =========================================================== Das kann man dann auf TTL-_ogik runterkochen - oder von mir aus auf ein C-Programm fuer die Zustaende - runterkochen. Olli
Chris wrote:
> das ding ist ein Handschalter der während der Autofahrt bedient werden
Autofahrt? Siehste, das passiert, wenn man nur stueckweise mit
Informationen rueberkommt.
Ein Mikrocontroller im Auto stellt Dich noch vor ganz andere
Herausforderungen als die Umsetzung Deiner Mimik.
So ein KFZ-Bordnetz ist eine aeusserst garstige Umgebung. Oder werden
Dir schon sauber gefilterte 5V vorgegeben? Kann die an die
Kontrollschaltung angeschlossene Maschine irgendwelche Stoerungen an die
Kontrollschaltung einkopplen?
Das wuerde ich wirklich so einfach wie moeglich halten, wenn es
kurzfristig laufen soll - in diesem Fall eben mit ein paar Logik-ICs und
ansonsten mechanischen Schaltern.
Olli
@Chris Lieber Chris, es wird ja immer toller bei Deinem Projekt. Plötzlich soll alles in ein KFZ eingebaut werden. Ich versuch's Dir jetzt mal anders zu erklären: Ich bin Ing. der Elektrotechnik (ja, wirlich). Davon habe ich einigermaßen Ahnung. Und ein ganz klein bischen hörte man damals bei der Ausbildung auch was von Konstruktion und technischem Zeichen (ohne CAD damals, Bleistift, Tusche, Rasierklingen). Wenn ich jetzt auf die Idee käme, plötzlich ein 7-Gang-DSG-Getriebe bauen zu wollen, was meinst Du dazu ? Bitte denke mal darüber nach. Du brauchst kompetente Hilfe von einem Fachmann vorort. Dieses Forum wird die nicht hinreichend helfen können, hier weiterzukommen. Gruss Klaus
Klaus wrote: > Ich bin Ing. der Elektrotechnik (ja, wirlich). > Davon habe ich einigermaßen Ahnung. > Du brauchst kompetente Hilfe von einem Fachmann vorort. > Dieses Forum wird die nicht hinreichend helfen können, hier > weiterzukommen. Armutszeugnis fuer Dich, lieber Klaus? Das kann man so nicht stehen lassen. Helfen koennen sicher, hier hat es Ingenieure, Naturwissenschaftler, Techniker, Hobbyelektroniker mit jahrzehntelanger Erfahrung. Man muss nur die richtigen Fragen stellen und "kooperieren", dann kann auch geholfen werden. Olli EDIT: Klaus, bist Du das mit dem Ingenieurbuero mit 15 Jahren Erfahrung am Markt bzgl. Mitarbeitersuche aus einem anderen Thread?
=========================================================== | Drehschalterpositionen |Taster| Ausgaenge | =========================================================== |E1|E2|E3|E4|E5|E6|E7|E8|E9|E10|E11|E12| E0 |A1|A2|A3|A4| =========================================================== | 1| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 1| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 1| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 1| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 1| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 1| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 1| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 1| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 1| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 1 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 1 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 1 | 0 |x |x |x |x | | 1| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |1 |1 |x |x | | 0| 1| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |1 |0 |x |x | | 0| 0| 1| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |1 |x |1 |x | | 0| 0| 0| 1| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |1 |x |0 |x | | 0| 0| 0| 0| 1| 0| 0| 0| 0| 0 | 0 | 0 | 1 |0 |1 |x |x | | 0| 0| 0| 0| 0| 1| 0| 0| 0| 0 | 0 | 0 | 1 |0 |0 |x |x | | 0| 0| 0| 0| 0| 0| 1| 0| 0| 0 | 0 | 0 | 1 |0 |x |1 |x | | 0| 0| 0| 0| 0| 0| 0| 1| 0| 0 | 0 | 0 | 1 |0 |x |0 |x | | 0| 0| 0| 0| 0| 0| 0| 0| 1| 0 | 0 | 0 | 1 |x |1 |1 |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 1 | 0 | 0 | 1 |x |1 |0 |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 1 | 0 | 1 |x |0 |1 |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 1 | 1 |x |0 |0 |x | =========================================================== Also bei den "x" sollte dann einfach nichts mit dem Signal passieren. Shit, an das Problem mit dem Boardnetz (schwankungen usw) habe ich leider auch noch nicht gedacht..... Hilft mir da aber ein DC-DC Wandler nicht weiter der einen Inputbereich bis ca. 14 Volt (ich glaube genau waren 13,8V) und als Output 5 V liefert???
Chris wrote:
> Also bei den "x" sollte dann einfach nichts mit dem Signal passieren.
Nichts gibt es nicht. Entweder egal, 0 oder 1. Wenn du meinst "Zustand
soll sich nicht aendern", hast du ein ganz anderes Problem...
@ Perte genau, Zustand soll gleich bleiben also am einfachsten auf low > Nichts gibt es nicht. Entweder egal, 0 oder 1. Wenn du meinst "Zustand > soll sich nicht aendern", hast du ein ganz anderes Problem... Welchen Problem kommt dann noch auf mich zu??
Chris wrote: > @ Perte > genau, Zustand soll gleich bleiben also am einfachsten auf low Was denn nun, gleich oder low?
okay, der Zustand soll immer gleich bleiben (so wie er halt am einfachsten zu realisieren ist)
Aus http://de.wikipedia.org/wiki/Fuzzy_logic: "Fuzzylogik (engl. fuzzy ‚verschwommen‘, fuzzy logic, fuzzy theory ‚verschwommene Logik‘ bzw. ‚verschwommene Theorie‘) ist eine Theorie, welche vor allem für die Modellierung von Unsicherheiten und Unschärfen von umgangssprachlichen Beschreibungen entwickelt wurde.". Sowas lässt sich nur mit dem DWIMNWIS-Gatter realisieren (Do What I Mean Not What I Say).
A. K. wrote: > Sowas lässt sich nur mit dem DWIMNWIS-Gatter realisieren (Do What I Mean > Not What I Say). Jetzt lasst ihn doch mal und habt ein Herz für Maschbauern... ;-) chris wrote: > okay, der Zustand soll immer gleich bleiben (so wie er halt am > einfachsten zu realisieren ist) Deine Aussagen lassen leider keine wirklichen Schlussfolgerungen zu, so leid es mir tut. Der Ausgang kann nach meiner Interpretation deiner Aussage a) immer auf einen bestimmten Pegel (low oder high) zurückgehen (was aber unter Umständen einen Flankenwechsel bezogen auf den vorherigen Zustand bedeutet). b) auf dem vorherigen Pegel bleiben. Unabhängig ob wir hier von Elektrotechnik oder Maschbau reden: Ein wenig systematischere Herangehensweise zeichnet einen Ingenieur aus. Bevor du mit irgendeinem Controller anfängst, sammel alle Anforderungen und notiere sie. Dazu gehört nicht nur die Aufgabe des Gerätes, sondern auch die Stromversorgung, die Abmessungen, Termine, preisliche Rahmenbedingungen, etc. Das ganze bildet dann ein Lasten- oder Pflichtenheft. Das gilt für jedes Projekt und ist wirklich nicht böse gemeint, sondern nur als Hilfe.
Hallo, ich sehe noch ein grundsätzliches Problem bei deiner Tabelle: =========================================================== | Drehschalterpositionen |Taster| Ausgaenge | =========================================================== |E1|E2|E3|E4|E5|E6|E7|E8|E9|E10|E11|E12| E0 |A1|A2|A3|A4| =========================================================== | 1| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 1| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 1| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 1| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 1| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 1| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 1| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 1| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 1| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 1 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 1 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 1 | 0 |x |x |x |x | | 1| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |1 |1 |x |x | | 0| 1| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |1 |0 |x |x | | 0| 0| 1| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |1 |x |1 |x | | 0| 0| 0| 1| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |1 |x |0 |x | | 0| 0| 0| 0| 1| 0| 0| 0| 0| 0 | 0 | 0 | 1 |0 |1 |x |x | | 0| 0| 0| 0| 0| 1| 0| 0| 0| 0 | 0 | 0 | 1 |0 |0 |x |x | | 0| 0| 0| 0| 0| 0| 1| 0| 0| 0 | 0 | 0 | 1 |0 |x |1 |x | | 0| 0| 0| 0| 0| 0| 0| 1| 0| 0 | 0 | 0 | 1 |0 |x |0 |x | | 0| 0| 0| 0| 0| 0| 0| 0| 1| 0 | 0 | 0 | 1 |x |1 |1 |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 1 | 0 | 0 | 1 |x |1 |0 |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 1 | 0 | 1 |x |0 |1 |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 1 | 1 |x |0 |0 |x | =========================================================== An den Ausgängen sehen wir nur statische Zustände, also feste Logik Pegel. Wenn ich deinen Post aber richtig verstanden habe geht es dir vorallem um Flanken, oder? Also ändere deine Tabelle bitte so ab: F - Falling Edge, bei dieser Tasten Kombination soll eine fallende Flanke ausgegeben werden (High -> Low) R - Rising Edgem bei dieser Tastenkombination soll eine steigende Flanke ausgegeben werden (Low -> High) H - Signal soll High sein. L - Signal soll Low sein X - Don't care: der Zustand dieses Pegels spielt hier gerade keine Rolle! Dann kommt noch das Timing: Welche High/Low Zeit brauchst du um eine flanke zu detektieren? Z.B. T_High_min = 1 ms T_Low_min = 0.5 ms. Wenn du diese Infos einträgt, kann man dir bei deinem Problem viel besser helfen. Cheers
Gerade fällt mir noch etwas anderes ein was du bedenken musst: Realisierst du wirklich alles mit Logik Gattern reagiert er "sofort" drehst du also von schalter position 1 nach 6 dann werden allen Zwischenausgaben auch ausgegeben. Das kann unter Umständen unerwünscht sein. Die Frage ist also WANN sollen deine Eingänge ausgewertet werden? a) immer? b) was ist immer? in welcher periode? jede Millisekunde? c) Soll nur ausgegeben werden, wenn Zustand für min. 1. Sekunde konstant d) Soll nur ausgegeben werden, wenn sich ein Eingang ändert? e) Soll nur ausgegeben werden, wenn ein Extra "Ausgabe" Taster gedrückt wird? Ich würde eine Ruhestellung empfehlen, bei der gestartet wird. Dann sollte nur etwas passieren, wenn sich etwas ändert. Und als letztes sollte nur was passieren, wenn der Schalter für mindestens 500 ms konstant ist. Das hat den Vorteil, dass beim Drehen nicht alle Zwischenzustände ausgegeben werden. Dies erfordert wieder aber etwas Programmierlogik, die für einen Anfänger auch nicht ohne ist. Cheers
Pedro wrote: > Gerade fällt mir noch etwas anderes ein was du bedenken musst: > > Realisierst du wirklich alles mit Logik Gattern reagiert er "sofort" > drehst du also von schalter position 1 nach 6 dann werden allen > Zwischenausgaben auch ausgegeben. Das kann unter Umständen unerwünscht > sein. Das stimmt so nicht. Da kann man das output enable verzoegern, wenn man einen Buffer ans Ende haengt. Olli
>Jetzt lasst ihn doch mal und habt ein Herz für Maschbauern... ;-) Danke Christoph xD > Deine Aussagen lassen leider keine wirklichen Schlussfolgerungen zu, so > leid es mir tut. Der Ausgang kann nach meiner Interpretation deiner > Aussage > a) immer auf einen bestimmten Pegel (low oder high) zurückgehen (was > aber unter Umständen einen Flankenwechsel bezogen auf den vorherigen > Zustand bedeutet). > b) auf dem vorherigen Pegel bleiben. @ Christoph Das war auf die "x" bezogen. Die könne stehen auf was sie wollen, sollten sich aber nicht unbedingt ändern (ie sollen einfach statisch bleiben) Das Ausgangssignal kann nach den Flankenwechseln auf dem Wert den es angenommen hat stehen bleiben. > Realisierst du wirklich alles mit Logik Gattern reagiert er "sofort" > drehst du also von schalter position 1 nach 6 dann werden allen > Zwischenausgaben auch ausgegeben. Das kann unter Umständen unerwünscht > sein. Wenn ich eine und-Verknüpfung habe dann kann ich doch drehen ohne dass etwas passiert oder?? Es muss ja zusätzlich der Taster gedrückt sein damit ich eine Ausgabe bekomme?!? > Die Frage ist also WANN sollen deine Eingänge ausgewertet werden? > a) immer? > b) was ist immer? in welcher periode? jede Millisekunde? > c) Soll nur ausgegeben werden, wenn Zustand für min. 1. Sekunde konstant > d) Soll nur ausgegeben werden, wenn sich ein Eingang ändert? > e) Soll nur ausgegeben werden, wenn ein Extra "Ausgabe" Taster gedrückt > wird? zu a und b: Die Eingänge sollen immer alle 10ms ausgewertet werden und die Ausgabe soll nur erfolgen wenn der Taster gedrückt wird. =========================================================== | Drehschalterpositionen |Taster| Ausgaenge | =========================================================== |E1|E2|E3|E4|E5|E6|E7|E8|E9|E10|E11|E12| E0 |A1|A2|A3|A4| =========================================================== | 1| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 1| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 1| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 1| 0| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 1| 0| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 1| 0| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 1| 0| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 1| 0| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 1| 0 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 1 | 0 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 1 | 0 | 0 |x |x |x |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 1 | 0 |x |x |x |x | | 1| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |R |R |x |x | | 0| 1| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |R |F |x |x | | 0| 0| 1| 0| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |R |x |R |x | | 0| 0| 0| 1| 0| 0| 0| 0| 0| 0 | 0 | 0 | 1 |R |x |F |x | | 0| 0| 0| 0| 1| 0| 0| 0| 0| 0 | 0 | 0 | 1 |F |R |x |x | | 0| 0| 0| 0| 0| 1| 0| 0| 0| 0 | 0 | 0 | 1 |F |F |x |x | | 0| 0| 0| 0| 0| 0| 1| 0| 0| 0 | 0 | 0 | 1 |F |x |R |x | | 0| 0| 0| 0| 0| 0| 0| 1| 0| 0 | 0 | 0 | 1 |F |x |F |x | | 0| 0| 0| 0| 0| 0| 0| 0| 1| 0 | 0 | 0 | 1 |x |R |R |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 1 | 0 | 0 | 1 |x |R |F |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 1 | 0 | 1 |x |F |R |x | | 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 | 0 | 1 | 1 |x |F |F |x | =========================================================== Mfg
@Chris: Wie wäre es, wenn Du einfach mal herausrückst, was für ein geheimnisvolles Gerät in einem Auto derartige Signale benötigt. Evtl. tut sich dann eine völlig andere Alternative auf.
> Wie wäre es, wenn Du einfach mal herausrückst, was für ein > geheimnisvolles Gerät in einem Auto derartige Signale benötigt Die Kiste ist ein "TTTech Connexion"-box Die älter Version von diesem Kasten: http://www.tttech-automotive.com/products/flexray/testing/network-testing/ Diese Box dient zur Signalmanipulation (CAN und Flexray)
Jetzt bin ich aber auch mal interessiert, wie man so eine blöde Flankengeschichte realisieren kann, wenn man nicht so etwas wie ein enable-Signal oder Ahnliches hat, wodurch der Empfänger eben weiß, wann er etwas auswerten darf und wann nicht.
Ich hab' den Verdacht, "Flanke" ist bloss ein ungluecklich gewaehlter Ausdruck und das hat eine Menge Verwirrung erzeugt. Sieht mir eher aus, als sollte man einfach einen Clock-Impuls erzeugen, also Ausgang geht von Low auf High und nach kurzer Zeit wieder zurueck auf Low, und der Empfaenger triggert dann eben auf die steigende Flanke. Im Zustandsdiagramm wird eine steigende Flanke mit einem senkrechten Pfeil nach oben angezeigt (und eine fallende mit einem Pfeil nach unten). Auswertung der Eingaenge alle 10ms ist einfach und braucht keine schnelle Logik. Das kann selbst der von mir empfohlene Picaxe-Mikrokontroller spielend. Wolfgang
> Sieht mir eher aus, als sollte man einfach einen Clock-Impuls erzeugen, > also Ausgang geht von Low auf High und nach kurzer Zeit wieder zurueck auf > Low, und der Empfaenger triggert dann eben auf die steigende Flanke. @ wolfgang: genau, ich brauche nur den Wechsel zwischen High und Low bzw umgekehrt. Den Rest erkennt die Software in der TTTech Box > also Ausgang geht von Low auf High und nach kurzer Zeit wieder zurueck Naja, er soll sich eigentlich erst wieder ändern wenn ein neuer Input kommt. Wenn die signale wieder gleichzeitig zurückgehen erkennt das meine software in der TTTech-Box und führt wieder eine andere Manipulation aus
um auf deinen ursprünglichen Betreff zurück zu kommen: du suchst eher einen allgemeinen Mikrocontroller (die paar technischen Anforderungen an I/O und Leistung sind unspektakulär) und ein spezielles Programm. Die Kunst ist hier nicht, einen Befehl zu finden, welcher an einem MC Eingangs-Leitungen einliest oder Ausgangsleitungen auf 1 oder 0 setzt. Das Programm "dazwischen" ist der spannende Teil. Den Algorithms dazu zu formulieren (was soll wann wie gemacht werden) ist das Wesentliche. Und diesen Algorithmus kannst du in jeder beliebigen Sprache formulieren (je hochsprachlicher desto einfacher) Versuch das mal zu strukturieren, was wann passieren soll. Wenn du es dann "Hardcore" magst, schreibst du dann diesen Algorithmus später direkt in Assembler, ansonsten in C. Zuvorderst solltest du dich aber vertraut machen mit der Abfolge: Wie bekomme ich ein Programm welches in C geschrieben ist "in den MC hinein", sprich du mußt die "Toolchain" kennen lernen. ein einfachens Programm, welches eine TAste einliest und 1:1 auf einer Ausgangsleitung den Tastenwert ausgibt wäre schon mal eine schöne Anfangsübung. Danach programmierst du dir ein FlipFlop, und wirst merken daß Tasten prellen und daß man sie softwaremäßig entprellen muß. Und wenn du soweit bist daß du das alles verstehst und behrrrscht, kannst du dich an deinen Algorithmus deines was-auch-immer-Dingsbums dran geben. Was möglicherweise für dich verwendbar wäre: Kauf dir ein AVR Butterfly (hat alles was du brauchst, incl. Display, und kostet fast nix.). Damit kannst du alles lernen was du brauchst, und später dann in ein hübsches kleines Gehäuse einbauen und für deinen "endgültigen" Zweck nutzen
Dein Problem lässt sich doch mit wenigen Zeilen Code lösen: Zum Start des Programms stellst du deine Ausgänge auf die Ausgangwerte ein. Dann lässt du einen Timer laufen, der alle 10ms oder so nach dem Taster schaut. Wenn du einen tastendruck detektierst, schaust du als nächstes nach der Stellung des Drehschalters. Und je nach Stellung startest du dann eines der beiden Unterprogramme: RisingEdge(char x) FallingEdge(char x) wobei du in x dem Programm den Ausgang übergibst, den du schalten möchtest. Innerhalb der Programme musst du nur den Port-Pin an der entsprechenden Stelle umschalten. Fertig ist der Lack. Aber bau erst mal das Board, bzw. lass es bauen. Die Anforderungen für einen zuverlässigen Betrieb im Auto sind nicht ganz trivial. Oder sag Bosch, die sollen sich einen E-Techniker für sowas holen, und mach du, was du gelernt hast :)
Chris, also bezogen auf einen Atmel: Ein Pin als Interrupt Eingang, das ist Dein Taster, die Ausgänge laut obiger Tabelle als Bytes in ein Array, das Byte in den Arrays teilen in 2 x 4 Bit, erste 4 Bit enthalten den Flankenwert, zweite 4 Bit enthält die Maske, welche Ausgänge verändert werden sollen. Im Interrupt den letzten Zustand des Ports mit Maske und Wert verknüpfen und ausgeben. Für die Eingabe einen Binär codierten Drehschalter verwenden, GIDF, die 4 Ausgänge des Drehschalters auf 4 Eingangspins des Atmel und fertig. Der Eingangsport, an dem der Drehschalter dranhängt kann direkt als Variable für die Adressierung des Arrays verwendet werden. Ein Atmel ATiny2313 hat genügend Ein/Ausgänge, wurde Dir ja bereits mehrfach empfohlen. Der begeht eher Suizid, weil er sich mit Deinem Programm so fürchterlich langweilt. Rest des Jobs ist die Elektronik/den Atmel für den Einsatz im Fahrzeug zu härten und die Signale für diese TTBox anzupassen, wenn die 5V Signale entgegennimmt, ist auch das kein Problem mehr, ansonsten passender Treiber dafür an den Atmel ranhängen. Die oben beschrieben Maskierung kannst Du dir auch sparen, mit Maske wär's aber exakt Deiner Anforderung entsprechend. Der 2313 würde Dir sogar noch reichen, wenn Du keinen Codierschalter, sondern ein 12 x 1 Kontakt Schalter hättest, dann müsstest Du fast alle Portpins benutzen, wär' aber egal. Ist nur eine unschöne Lösung. Da ich Dir jetzt gesagt habe, wie's geht, würdest Du mir sagen, wie Du als Maschinenbauer zu diesem Job kamst ? Rangeschmissen, oder zu langsam den Raum verlassen, als es noch ging ?
> Da ich Dir jetzt gesagt habe, wie's geht, würdest Du mir sagen, wie Du > als Maschinenbauer zu diesem Job kamst ? Rangeschmissen, oder zu langsam > den Raum verlassen, als es noch ging ? Im Normall bin ich da Testfahrer (also ich manipuliere Signale währrend der Fahrt). Demnächst starten bei uns Fahrzeuge die anstatt eines CAN bus Flexray nutzen. Deshalb geht unsere "alte" ausrüstung nicht mehr. Bin quasi der erste der sich bei uns in der Abteilung mit dem Manipulationstool recht ausführlich beschäftigt hat. Nachdem ich dann soweit war und erklärt hab wie's tut usw. hieß es, dass ich mir was überlegen soll wie man das ohne zusätzlichen PC lösen kann (im Normalfall können die Manipulationen auch mit einem zusätzlichen PC gestartet/gestoppt werden). Also kam mir die idee die 3 Eingänge an der Box zu nutzen und nen Schalter dafür zu bauen. Nachdem ich nen Logiktabelle (ähnlich wie die oben nur mit Pfeilen) hatte, hat mein Kollege gemeint dass das mit nem uC funktionieren sollte und so bin ich dann hier gelandet.
Hey Chris, das kann ja net so weiter gehen ;-) Hab dir mal ein Blockdiagramm deines Programms gezeichnet. Vielleicht hilft es dir! MFG EDIT: Kurz zur Erklärung: Also jeder Block ist ein Modul (C-Datei). Ein Pfeil der auf einen Block zeigt (z.B.: Rising Edge (Channel)) ist ein Funktionsaufruf des Moduls auf das gezeigt wird.
Chris, na, schon aufgegeben ? Hätt' ich aber jetzt nicht erwartet, bis jetzt hat mich Deine Hartnäckigkeit wirklich beeindruckt. ;-)
e-mail is: jimbo2406@gmx.net hab natürlich nicht aufgegeben, aber ich war auf fasching und bin gerade erst heimgekommen ;D (und muss in ner sunde wieder weg xD)
Chris wrote: > hab natürlich nicht aufgegeben, aber ich war auf fasching und bin gerade > erst heimgekommen ;D > (und muss in ner sunde wieder weg xD) Aha, ein "Jäck" ;-) Du kommst wohl aus dem Rheinland. ;-) EDIT: Ich meinte natürlich Jeck ;-)
> Aha, ein "Jäck" ;-) Du kommst wohl aus dem Rheinland. ;-)
nicht so ganz, "etwas" südlicher ^^
Aber Fasching wird bei uns auch groß gefeiert ;)
Morgen noch, dann ist's ja endlich vorbei... wenn ich kein Kind hätte, hätte ich mir irgendwo karnevalsfreies Asyl erbeten.
> Aber da heisst es doch nicht Jäck/Jeck. ne, eigentlich nicht =) Da gibts keinen speziellen begiff ^^ > Morgen noch, dann ist's ja endlich vorbei... wenn ich kein Kind hätte, > hätte ich mir irgendwo karnevalsfreies Asyl erbeten. Naja, is doch lustig ^^ Aber ich bin auch froh wenns dann vorbei ist ;D in 5 Tagen nur insgesammt 8h daheim is schon übel xD
Chris wrote: >> Aha, ein "Jäck" ;-) Du kommst wohl aus dem Rheinland. ;-) > > nicht so ganz, "etwas" südlicher ^^ > Aber Fasching wird bei uns auch groß gefeiert ;) Aha, südlicher? Ich wohne auch "etwas" südlicher vom Rheinland ;-) ich sag mal so: süd-westen ;)
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.