Vorab : Bitte seid gnädig mit mir, denn ich habe (bisher) absolut keinen Dunst von der Thematik. Aaaalso : Mein (Fern-)Ziel ist die Steuerung von Programmen (z.B. der Lautstärkeregelung am PC/Notebook unter Windows). Nicht stöhnen wg. Win, die von mir zu verwendende Software macht dies notwendig. Dies muß über das "Auslesen" eines Drehwiederstandes erfolgen. Die einzige Schnittstelle die mir zur Verfügung steht ist USB. So wie ich es bisher verstanden habe, benötige ich wohl ein Entwicklungsboard mit USB Programmer. Das ist wohl das Teil mit dem ich den Programmcode auf den Chip bringe. Aber wie lese ich die Daten aus ?? USB ist die einzige für mich Infrage kommende Möglichkeit! Funktioniert das Auslesen von Daten auch über die Programmer-Schnittstelle? Wenn ich denn einmal einen Prozessor entsprechend programmiert haben sollte, wie bekomme ich diesen auf eine handliche "Arbeitsplatine" bzw. wo bekomme ich selbige dann her und das noch mit den notwendigen Leiterbahnen und notwendiger Anschlussperepherie ? Geliebäugelt habe mit einem Arduino Einsteigerset. Das Buch dazu hat sehr gute Rezensionen gehabt. Das Board selber ist im unteren Preissegment angesiedelt. Ein paar (auch für mich verständliche) Anregungen/Ideen Euererseits wären sehr nett. Vielen Dank im Voraus Thomas
Ich verstehe ja, dass du ambitioniert bist. Aber im Moment habe ich das Gefühl, dass du, bildlich gesprochen, vor hast über den Atlantik zu schwimmen, und deine erste Sorge ist es, ob sie dich in der Badehose auf die Freiheitsstatue lassen. Bis dein selbst gestecktes Ziel auch nur annähernd in Reichweite gelangt, hast du noch viel vor dir. AVR-Tutorial
Hm. Du möchtest: - Hardware entwicklen - Leiterplatten herstellen - (SMD-)Bestücken - Gehäuse bauen - Mikrocontroller programieren - USB-Schnittstelle programmieren - Windows-USB-Treiber programmieren - Windows-Systemfunktionen ansteuern und vermutlich noch ein paar Sachen mehr. Aus deinem Text geht nicht ganz klar hervor, was du davon schon mal gemacht hast, was du kannst, und was nicht. Ich lese den Text so, daß das alles für dich völliges Neuland ist. Wie wärs für den Anfang mal mit einem etwas kleinerem Projekt? Oliver
Hi Oliver ! Danke für die schnelle Antwort ! Ersteinmal kann ich deine Fragen alle mit JA beantworten ;-) Zum Anderen ist mir schon klar, daß ich ersteinmal mit "Blinkdioden" anfangen muß, bevor ich bevor ich ein "BIOs" programmieren kann. Deshalb schrieb ich auch von meinem Fernziel. Ich habe mein Ziel nur erwähnt, weil in den Foren (ja, ich habe mich vorher schon umgesehen ;-) ) immer danach gefragt wird, was man denn nun eigentlich machen will. Wie gesagt, ich will letztendlich Software über die USB-Schnittstelle ansteueren. Wobei ich auch schon gelernt habe, daß man USB nicht als solches programmieren kann, sondern die Daten wohl irgendwie per Interrupt abgreifen muß, da es sich ja nur um eine Art des Datentransports handelt. 'tschuldigung, ich schweife ab. Ansteuern war das Stichwort : Also suche ich eine Umgebung mit der ich lernen kann und nach Möglichkeit mein Fernziel verwirklichen, ohne mich damit in den Ruin zutreiben. *GG CU Thomas
Thomas schrieb: > Wie gesagt, ich will letztendlich Software über die USB-Schnittstelle > ansteueren. Du drückst dich ein bischen vage aus, so dass man nicht sagen kann ob du das richtige meinst. > Wobei ich auch schon gelernt habe, daß man USB nicht als > solches programmieren kann, sondern die Daten wohl irgendwie per > Interrupt abgreifen muß, da es sich ja nur um eine Art des > Datentransports handelt. Genau hier liegt der springende Punkt. Der µC steuert nicht ein Programm am PC an, und der PC steuer nicht ein Programm am µC an. Sondern: * Am PC läuft ein Programm * Am µC läuft ein Programm Beide Programme sind erst mal voneinander unabhängig. Aber: Sie kommunizeren miteinander, indem der eine dem anderen Daten schickt. Was der jeweils andere mit den Daten macht, geht den Sender erst mal nichts an und interessiert ihn auch nicht weiter. > Ansteuern war das Stichwort : Also suche ich eine Umgebung mit der ich > lernen kann und nach Möglichkeit mein Fernziel verwirklichen, ohne mich > damit in den Ruin zutreiben. *GG Denk nicht an dein Fernziel. Du willst in erster Linie lernen, wie man einen µC programmiert und was man mit dem Teil alles machen kann. Irgendwann bist du soweit, dass der µC über eine seiner Standardschnittstellen Daten rausschickt, die am PC zb in einem Terminalprogramm darstellt. Der nächste Schritt ist es dann, vom PC aus mit besagtem Terminalprogramm Kommandos an den µC zu schicken, die dieser dann ausführt. Und dann bist du dann schon dicht drann.
Karl heinz Buchegger schrieb: > Du willst in erster Linie lernen, wie man einen µC programmiert und was > man mit dem Teil alles machen kann. Da bin ich mit nicht so sicher. Das "Fernziel" ist die Laustärkeregelung und ähnliches eines Windows-PC's. Sowas kann man fertig kaufen, im Bereich Soundkarten und Mischpulttechnik gibt es das alles. Kaufen ist da wohl wesentlich schneller und erfolgsverprechender. Oliver
An und für sich hatte ich auch Infos für ein "Einsteigermodell" gehofft, mit dem sich meine (anscheinend extrem hoch gesteckten) Ziele verwirklichen lassen. Aber anscheinend will man mir das ausreden ;-) (nicht so ernst gemeint...) Wie erwähnt, ich weiß das ich bei Blinkdioden anfangen muß (und wenn dies noch zu einem Ergebnis führt auch werde). Die Daten werde ich zwar über USB abrufen, aber die Schnittstelle kann man in einem bestimmten Modus, wie eine RS232 Schnittstelle auslesen. Das sollte nicht allzuschwer sein. Was defizieler wird sind die Programmschnittstellen, aber das ist, wie bereits mehrfach erwähnt, Zukunftsmusik (auch wenn sie sich ziemlich utopisch anhören mag). Wie ich mir das im Groben!!! vorstelle, habe ich mal als Datei angehängt. Ich hoffe damit kann ich ein wenig Verwirrung herausnehmen. CU Thomas
Thomas schrieb: > An und für sich hatte ich auch Infos für ein "Einsteigermodell" gehofft, > mit dem sich meine (anscheinend extrem hoch gesteckten) Ziele > verwirklichen lassen. Aber anscheinend will man mir das ausreden ;-) Nicht wirklich. Keiner will dir das Ausreden. Das Arduino Board ist schon ok. So wie fast jedes andere Board. Du kannst dir auch dein erstes Board selber bauen, wenn du willst. Und für den Rest hab ich dir das Tutorial hier verlinkt. Da findet sich jede Menge Material. Aber löse dich von der Vorstellung, dass du dir jetzt ein Board kaufst, welches 'optimal' für deine Zukunfts-Aufgabenstellung ist. Wenn du soweit bist, diese Aufgabe anzugehen, wirst du wahrscheinlich ohnehin dafür ein massgeschneidertes Board bauen.
Da hast Du nur zum Teil Recht. Zum Einen : Ich will das schon lernen, zum Anderern : Wenn es soetwas zu kaufen gäbe, was/bzw. we ich es haben will, hätte ich es bereits. Hmmm, seid mir nicht böse wenn ich das jetzt mal so sage; denn ich finde es nett, daß sich jmd. meines postings annimmt : Auf meine eigentliche Frage bezüglich Einstiegssystem ist bis jetzt noch niemand direkt eingegangen.
Vergesst mein letztes Posting (mit Gastzugang kann man halt nicht löschen).
Hi Thomas, So unendlich weit weg muss das nicht sein. Frage ist, was Du schon kannst... Der Mikrocontroller ist erst mal fast egal. Den Mikrocontroller musst Du programmieren können. D.h. Du brauchst eine Entwicklungsumgebung auf dem PC für Deinen Mikrocontroller. Das auf dem PC erstellte Programm mußt Du auf den Controller laden können. Je nach Mikrocontroller und Entwicklungsumgebung geht das per RS232/USB/Parallelport wobei die letzten beiden meistens eine serielle Schnittstelle emulieren. Gibt natürlich auch parallele oder andere Verfahren. Du brauchst weiter eine Entwicklungsumgebung auf Deinem PC für Dein PC-Programm. Und Du brauchst eine Schnittstelle zwischen Deinem PC und Deinem programmierten Controller. Im Endeffekt kann das alles sein (RS232, WLAN, Bluethooth, USB, uvm.). Das erfordert mal mehr mal weniger Aufwand. Zu Deinem Projekt würde zum Beispiel foglendes passen, um es einfach zu halten: * Mikrocontroller: beliebiger AVR mit RS232 und ADC (siehe STK500) * Mikrocontroller-Entwicklungsumgebung: AVR Studio (Assembler, bei STK dabei) + WinAVR (C/C++) * AVR Entwicklungsboard STK500 (beinhaltet schon einen ATMega16, ist Programmiergerät/Entwickungsboard und vereinfacht die Kommunikation über RS232 * PC Entwicklungsumgebung: Wahlweise MinGW (ohne UI) oder QTCreater (mit UI) beides C/C++ * Schnittstelle zwischen PC und Mikrocontroller: RS232 (wenn Du keine RS232 mehr hast, brauchst Du einen USB/RS232 Adapter) Da Deine Hardware (ein Poti) nicht sehr komplex ist, war es das erst mal. Kosten würde es Dich das STK500 und den USB/RS232 Adapter. Den bruachst Du wahrscheinlich sowieso, weil das STK nur über RS232 läuft. Der Rest ist umsonst. Gruß Niels
Das STK 500 ist natürlich die Luxusvariante. Wenn du gut Löten kannst und etwas Frustresistent bist, kannst du dir ein kleines Board selber bauen. Dazu brauchst du: Lochrasterplatine ATmega irgendwas (DIP, es sei denn du magst SMD-Löten; am besten mit integriertem USB) Sockel für ATmega (nicht notwendig, aber verhindert, dass du das teuerste Bauteil beim Löten wegröstest Spannungsregler Widerstände, Kondensatoren, Kabel. Anschlüssbuchsen für die Stromversorgung und USB Wenn du dann außer deinem Poti schonmal was anschließen willst, würde ich noch in 8 LED und 8 Mikrotaster investieren und die entsprechend verschalten (LED gegen VCC mit Widerstand, Taster gegen GND). Dabei dann beachten, dass du den Poti an den A/D-Wandler anschließt. Damit kann man viel Geld sparen. Dann brauchst du noch ein Programmiergerät: ISP über SPI reicht vollkommen, aber JTAG ist schöner. Geschmackssache und Kostenfrage. Als letztes brauchst du noch eine Spannungsversorgung. Dann die Software runterladen (WinAVR + AVRStudio sollten reichen) und du kannst anfangen die LEDs mit den Buttons zu steuern. Wenn das funktioniert würde ich mir ein einfaches OpenSource USB Programm suchen und versuchen damit Daten auszutauschen. Sobald das klappt kannst du dann hingehen und einen Windowsdienst programmieren, der die Daten deiner maßgeschneiderten Eingabegeräte entsprechend an Windows weiterleitet. Das wird sicherlich einiges an Zeit kosten, aber es ist alles machbar und bei vielen Zwischenstufen hat man auch viele Zwischenerfolge :D Was sich auch gut macht ist ein LCD Display, damit kann man schön Debuggen, wenn man es erstmal am Laufen hat... Wie gesagt, STK 500 ist deutlich komfortabler und spart viel Zeit ein (Löten dauert immer länger als man denkt), aber es kostet halt auch seinen Preis.
Schau dir mal das USB AVR Lab an, du kannst es sowohl als ISP Programmer als auch direkt als Interface für z.b. deine Poti´s u.ä. nehmen. Du kannst dafür eine eigene Firmware für das Gerät schreiben und einfach per klick austauschen. Wenn dir die Schnittstellen nicht mehr reichen und du einen externen controller verwenden magst kannst du das Lab einfach als Programmer, Oszilloskop oder Schnittstellenlogegr für I2C,SpI oder RS232 benutzen. http://wiki.ullihome.de/index.php/USBAVR-ISP/de lg Christian
>Du willst in erster Linie lernen, wie man einen µC programmiert
Das klang im Posting aber anders. Ich hatte das Gefühl, Thomas will
eigentlich nur einen Analogwert über ein Poti einlesen und in Windows
weiterverarbeiten. Aber vielleicht täusche ich mich ja.
Zweitens finde ich es nicht sonderlich nett, dass man Thomas hier gleich
wieder einen riesigen Berg Zeugs vor den Latz knallt. Er kann das Ding
locker auf ner Lochrasterplatine aufbauen, zur Not im Dead Bug
Verfahren.
High Performer schrieb: > Zweitens finde ich es nicht sonderlich nett, dass man Thomas hier gleich > wieder einen riesigen Berg Zeugs vor den Latz knallt. Er kann das Ding > locker auf ner Lochrasterplatine aufbauen, zur Not im Dead Bug > Verfahren. Kann er. Das Problem ist ja nicht das Board an sich, sondern der Programmer. Den sollte/muss man als Einsteiger kaufen, sonst hat man (meuistens) ein Henne/Ei Problem. Da erhebt sich dann allerdings die Frage: Warum kauf ich mir nicht gleich ein Board mit integriertem Programmer?
Thomas schrieb: > Vorab : Bitte seid gnädig mit mir, denn ich habe (bisher) absolut keinen > Dunst von der Thematik. Kein Problem, ich werde deine Anfragen nach bestem Wissen und Gewissen beantworten. Jeder fängt klein an, kein Meifter ist jemals vom Himmel gefallen. > Aaaalso : Mein (Fern-)Ziel ist die Steuerung von Programmen (z.B. der > Lautstärkeregelung am PC/Notebook unter Windows). Hmm, hier wird es leider schon etwas schwammig. Windows-Programme kann man am zielführendsten über die Win32-API-Funktion steuer. Das Standardwerk dazu ist der Petzold, sprich: "Windows-Programmierung" von Charles Petzold. > Nicht stöhnen wg. Win, die von mir zu verwendende Software macht dies > notwendig. Kein problem, ich selbst benutze sowohl Windows XP als auch NetBSD und fallweise Debilian oder Fedora. Jedes dieser Betriebssysteme hat seine Berechtigung, IMO. > Dies muß über das "Auslesen" eines Drehwiederstandes erfolgen. OK, nun verstehe ich dein Problem besser. Du willst also die Lautstärkke über eine Hardwareschnittstelle, sprich am Lautstärkepotentiometer, verstellen. Den "Drehwiederstand" könnte man möglicher Weife durch ein digitales Potentiometer ersetzen. Eventuell tut es aber auch ein Servo oder ein Motorpoti. Die Lösung mit dem Digipot erscheint mir am sinnvollsten, auch wenn es der Weg des größten Aufwandes ist. > Die einzige Schnittstelle die mir zur Verfügung steht ist USB. Wieder schwammig. Hier gibt es zwei Möglichkeiten: a) Der uC soll via USB programmiert werden b) Die Laustärkesteuerung soll über USB "bearbytet" werden. ad a): Dies ist inzwischen Standard, die meisten uC-Targetboards und Programmiergeräte verfügen inzwischen über USB. ad b): Das wird schwieriger. Neben dem steuerndem Windows-Programm brauchst du einen Controller nebst USB-Interface-Chip. Ich würde eine "Virtuelle UART-Schnittstelle über USB" empfehlen, das ist einfach und erprobt. Als Interface-ICs eigen sich zum Bleistift der FT232 von FTDI oder der (bessere) CP2102 von SiLabs. > So wie ich es bisher verstanden habe, benötige ich wohl ein > Entwicklungsboard mit USB Programmer. Das ist wohl das Teil mit dem ich > den Programmcode auf den Chip bringe. Genau. > Aber wie lese ich die Daten aus ?? Welche Daten genau meinst Du? Zum Verarbeiten des Werts des potentiometers empfieglt sich ein (eventuell in deinem Controller intern vorhandener) ADC. > Wenn ich denn einmal einen Prozessor entsprechend programmiert haben > sollte, wie bekomme ich diesen auf eine handliche "Arbeitsplatine" bzw. > wo bekomme ich selbige dann her und das noch mit den notwendigen > Leiterbahnen und notwendiger Anschlussperepherie ? Die Platine kannst Du entweder selbst machen (da gibt es viele FREDs dazu hier im Forum) oder Du lässt sie Herstellen. Im hier hauseigenem Wiki sollten Platinenfertiger en masse zu finden sein. Das Layout dazu erzeugst Du mittels einem dafür geeignetm Computerprogramm. Ich selbst verwende dazu gEDA, viele hier bevorzugen jedoch Target oder Eagle. Wie auch bei der Auswahl des Mikrocontrollers solltest Du hier jenes Programm nehmen das Dir selbst am meissten zusagt und mit dem Du am Besten klar kommst. > Geliebäugelt habe mit einem Arduino Einsteigerset. Wenn Dir der AVR von Atmel zusagt, ist dies ein brauchbares Einstiegsset. Zu den Atmel'schen Produkten kann ich nur wenig sagen, ich selbst benutze lieber Mikrocontroller von ST Mikroelectronics. Zum AVR gibt es hier jedoch sehr viele Benutzer, sprich: potentielle Hilfeleifter. > Das Buch dazu hat sehr gute Rezensionen gehabt. Das Board selber ist im > unteren Preissegment angesiedelt. Ich kenne weder das eine noch das Andere, hoffe jedoch trotzdem, dir helfen zu koennen haben. > Ein paar (auch für mich verständliche) Anregungen/Ideen Euererseits > wären sehr nett. Windows-Programmierung + Mikrocontrollerprogrammierung + Platinenlayouting + (eventuell Platinenerstellung) + Elektronik allgemein + ... lernt man nicht in einem Tag. Plane genügend Zeit ein. Viel Erfolg, Iwan
Ich glaube er wollte nicht den Lautstärke Ponti steuern sondern mit dem Ponti Windows steuern, oder? Wenn ja, ist dies "einfach" mit einem ADC, also zur Widerstandsmessung. Die gemessenen Daten sollen wenn ich es richtig verstanden habe dann an den PC übertragen werden, und das per USB. Siehe ADC http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC Wenn du dich ausreichend mit der Programmierung von uCs beschäftigt hat könnte dein Versuchsaufbau ungefähr so aussehen wie im Anhang, also zur Widerstandsmessung, daher USB kommt dann noch dazu. Da empfehle ich dann später V-USB, aber dafür muss man sich schon mit Mikrocontrollern befasst haben und etwas C können. Gruß, Ferdinand
Ein Ansatz mit sehr viel weniger Aufwand wäre die Nutzung eines USB-Gameport-Adapters und der Anschluss des Potis an den Gameport. Der nämlich enthält Hardware, um analoge Joysticks auszuwerten.
Ich denke das größere problem wird wohl die Software auf dem PC sein als die software für den controller. Die controller software kann man sich als Anfänger evtl. noch aus Beispielcodes zusammenschnippeln, aber um einen PC treiber zu programmieren braucht es wohl etwas mehr Know How. Ich denke es wird ein paar jährchen dauern bis man in der lage ist einen Gerätetreiber zu programmieren. Nun, die Frage ist, willst du dich mit Mikrocontrollern beschäftigen oder willst du die Lautstärke deines PC's mit einem Drehknopf steuern? Mit Mikrocontrollern kann man schon eine menge machen, deswegen ist es eigentlich nie falsch dort einzusteigen. Jetzt aber zum Wesentlichen. Wenn es dir wirklich nur darum geht die Lautstärke deines PC's zu steuern, dann würde ich mal gucken ob man das nicht einfach mit einer Multimediatastatur realisieren kann. Diese Multimediatastaturen mit Drehknopf zur lautstärke Steuerung gibt es für ein paar euros zu kaufen. Dann hast du schonmal den Treiber und alles dabei. Vielleicht ist es möglich den Drehknopf mit samt elektronik dann einfach auszubauen und in ein kompaktes gehäuse zu packen. Wenn das so nicht funktionieren sollte, kannst du versuchen mit einem speicheroszi die Signale aufzuzeichnen die über die Leitung geschickt werden wenn du am Lautstärke rädchen der Tastatur drehst. Die signale bzw datenpakete immitierst du dann einfach mit dem Controller, wenn die lautstärke erhöt bzw gesenkt werden soll. So hast du die ganze programmierarbeit für den pc treiber gespart. Übrigens: Es gibt Schnigtstellen adapter für USB zu Rs232 (COM). Damit kannst du dann auch günstigere Entwicklerboards mit rs232 schnitstelle benutzen. z.b. das STK500
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.