PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einfach nur Microcontroller ansprechen



quaxxi
22.01.2006, 10:53
Hallo,
ich bin noch ganz neu auf diesem Gebiet und mein aktuelles Projekt was ich mache hat eigentlich gar nichts mit Robotern zu tun. Naja gar nichts ist übertrieben.

Ich möchte mit dem PC mit einer Schnittstelle (am besten USB) eine Platine ansteuern. Auf der Platine musste glaub ich ein Controller drauf sein. Dieser Controller aktiviert dann einzelne Schaltkreise.

Könnte mir da jemand helfen was für einen Prozesser auf der Platine sein muss und so?

HannoHupmann
22.01.2006, 12:20
da hast du viele Möglichkeiten, je nach dem mit was du Programmieren willst.
Der Chip nennt sich dann Controler ich kenn mich aber nur mit Controllern aus die nach der Programmierung nimmer am PC hängen.

Du suchst ja eher was, mit dem du dauernd ansteuern kannst. Schau mal bei Conrad ich glaub der hat so Zeug.

mfg Hanno

xanadu
22.01.2006, 12:35
Hallo quaxxi,

erklär uns mal, was du vor hast, dann findet sich sicherlich auch mehr Resonanz auf deine Frage.

Möchtest Du selber eine Schaltung entwerfen und programmieren oder soll es eher etwas fertiges sein?

Gruß,
Xanadu

Vitis
22.01.2006, 12:48
stellt sich die frage, ob der pc dauernd laufen soll oder nicht,
weil danach richtet sich der bedarf an Hirnschmalz
auf der Platine. willste nur funktionsparameter
an die leiterplatte senden und die soll dann
selbständig ihre funktionen ausführen oder
sollen permanent daten an den pc laufen und der gibt dann
an was zu passieren hat?
beschreibe deine aufgabe etwass genauer, dann kann man dir
auch konkreter helfen. günstig wär auch ne kleine darstellung
deiner eigenen fertigkeiten, damit man ne maßgeschneiderte
lösung empfehlen kann.

chris_gast
28.01.2006, 23:15
Bin auch Anfaenger und will ein aehnliches Projekt realisieren, hier eine genauere Beschreibung:

Ein ATmega 16 soll als i/o geraet zum pc dienen, 16 ports als input und 16 als output. Die Schnittstelle zum PC ist dabei im Grunde egal, solange die ports am controller min. jede ms aktualisiert werden koennen.
Die 16 input ports sollten so in irgendeine Art Treiber verfuegbar sein, dass man ein Gamepad/joystick mit 16 buttons hat, sodass man diese inputs problemlos in Spielen ansprechen kann.
Die 16 Outputs dienen als Ansteuerung fuer LEDs. Im Endeffekt sollen sie in das opensource projekt Stepmania (www.stepmania.com) integriert werden. Stepmania hat 16 LEDs fuer bestimmte Aktionen. Stepmania unterstuetzt auch schon den LPT Port als Ausgabe, aber um alle 16 Lichter ansteuern zu koennen, braucht man 2 lpt ports.
Das Ganze sollte unter Windows und unter Linux funktionieren.
Allerdings ist Linux wichtiger.

Ich les mir jetzt schon seit 2 Tagen alles durch, was ich fuer wichtig halte, weiss aber auch nicht so richtig, wonach ich suchen soll. Hoffe vielleicht auch auf ein aehnliches Projekt zu stossen, sodass ich nicht am Punkt null anfangen muss.

Hab da noch eine Frage zu USB: low speed devices unterstuetzen 1.5mbit/s, richtig? Dh, dass ich wenn ich 32 i/o bits + x(sagen wir mal 8) control bits vom usb protokoll habe und den Status aller bits jede ms haben will, brauche ich eine Bandbreite von 40.000b/s. Dh ich koennte den Status von diesen 32 i/os sogar alle ca. 0.03ms abfragen, aber USB's Polling ist auf 125Hz getaktet, was den Status eines Geraetes nur alle 8ms abfragt.
Sind diese 1.5 mbit/s nur fuer Datentransfer vorgesehen?

danke
chris

Vitis
29.01.2006, 15:14
also es gibt da fertige IO PCI-Karten, die würden sich für sowas
anbieten.

29.01.2006, 21:37
Diese PC i/o karten sind leider verdammt teuer..
Ein Atmel kostet nur 7 Euros ^^

Vitis
30.01.2006, 08:30
das stimmt schon,
aber dann muss man auch was tun, sprich sich mit der Materie
auseinandersetzen, sie Programmierung der Dinger aneignen,
Platinenlayouts designen etc. . stellt sich die Frage ob der Aufwand
für nur eine Anwendung gerechtfertigt ist. Nimm mal n Stundensatz
von 10 Euronen an und nimm das mal der benötigten Einarbeitungszeit.
Da kommste locker auf den Betrag den Du für die Karte
anlegen musst.
Wenn Du aber sagst:"Hey, die Dinger sind cool, ich will noch mehr
damit machen", dann lohnt es sich bestimmt.
Es kann Dir aber niemand abnehmen Dich da von Adam und Eva an
reinzuknien. Alternativ kannste aber auch n Auftrag vergeben,
sprich hier im Forum zu fragen ob die jemand gegen ein Entgeld
ein solches Teil zu entwerfen, nur gelernt haste damit nichts und billig
ists auch nicht.

EDIT: die 7 Eu sind auch nur der Controller, dann brauchts noch n bissl
was aussenrum. Netzteil, Spannungsregler, diverse
Kondensatoren und Widerstände, die Leiterplatte, Anschlussbuchsen,
USB-Controller oder RS-Schnittstellentreiber usw. usw. usw.
+ diverses Werkzeug. UV-Lampe, Lötkolben, Ätzbad etc.

30.01.2006, 23:37
Ich will mir die Zeit nehmen und mich mit der Materie auseinandersetzen, allerdings waeren ein paar Wegweiser sehr hilfreich.
Ich hab das AVR Tutorial auf www.mikrocontroller.net ueberflogen und hab auch so ungefaehr eine Idee wie ich mein Projekt realisieren kann, verstehe aber nicht, wie meine Inputs dann ploetzlich als Joystick in Windows/Linux auftauchen sollen. Ich vermute mal ich wuerds noch soweit schaffen die Daten vom mikrocontroller auszulesen, aber wie krieg ich es hin das als Joystick anzeigen zu lassen? Gibt es irgendwelche Tuts, wie man aus den Daten der seriellen Schnittstelle heraus einen device driver schreiben kann?
Belastet es den Computer weiterhin sehr viel, wenn der Status aller 16 Inputs jede ms uebertragen wird, oder koennte man problemlos auch noch oefter uebertragen?

thx
Christian

31.01.2006, 07:44
hmm ich hab n gerät, das videobilder on the fly in mpeg
digitalisiert und per usb an den rechner schickt, da gehen
einige mb pro minute durch, sollte also möglich sein.
wie du die externe gerätschaft als joy anmeldest im windows ...
keine ahnung. da wirste ne dll proggen müssen denke ich.

31.01.2006, 07:47
ach so, eins noch. aus der schnittstelle heraus kannste im compi
garnix schreiben. dafür brauchts n programm, das die daten aus
der schnittstelle liest und für andere anwendungen zur verfügung stellt.
quasi ne sowftwareschnittstelle ... das wäre dann für gewöhnlich die DLL

31.01.2006, 22:49
Ich finde nichts darueber wie man solche Treiber schreibt.
Hab keine richtige Vorstellung, wie so ein Treiber aussieht. Fragt der das Geraet wirklich in ner Endlosschleife ab? Nimmt das nicht jede Menge CPU Zeit weg?
Wenn man sich den src eines vorhandenen Treiber ansieht, hilft das vielleicht.
Bei Linux muesste man sich Sources von vorhandenen modulen ja ansehen koennen, wenn man den kernel src runterlaed, aber Windows??
Hat jmd irgendwelche Links?

izaseba
31.01.2006, 23:41
Hallo, warum benutzt Du nicht die serielle Schnittstellefür Dein Vorhaben?
Wenn es unbedingt USB sein soll dann gibt es ja USB-RS232 Chips , dann brauchst Du Dich nur noch um die Komunikation zwischen dem Atmel und PC zu kümmern. Denke Dir irgendein Protokol aus, wie Du Deine LED's schalten willst und fertig.

Gruß Sebastian

01.02.2006, 00:08
@izaseba
Schau dir bitte nochmal meinen ersten Beitrag an(chris_gast):
Schnittstelle ist egal (hab also nichts gegen RS232) und es geht um darum, einen Treiber zu schreiben, der 16 Input ports so integriert, dass sie als Joystick buttons im OS auftauchen.

mfg
chris_gast

01.02.2006, 17:42
Ja dann habe ich wohl waas falsch verstanden,
Du willst also das Dein AVR, irgendwo am PC hängend als ein Joystick erkannt
und als solcher angesprochen werden kann?
Da kann ich Dir leider nicht weiter helfen.

Viel Spaß noch beim Programmieren.

Gruß Sebastian

izaseba
02.02.2006, 21:42
Hallo chris,
Ich bin gerade drüber (http://www.mictronics.de/?page=avr_usb_joystick)gestolpert, vielleicht suchst Du sowas ?

Gruß Sebastian