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.
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