moin
löte bald nen microcontroller zusammen und wollte mal insprirationen sammeln was ich mit meinem 8051 dann nettes machen kann..
Ich meine mit nem 8bit ein/ausgang kann man ja schon was anstellen.
Hat jemand erfahrung ?
moin
löte bald nen microcontroller zusammen und wollte mal insprirationen sammeln was ich mit meinem 8051 dann nettes machen kann..
Ich meine mit nem 8bit ein/ausgang kann man ja schon was anstellen.
Hat jemand erfahrung ?
Ich kenn mich nur mit AVRs aus... Aber PIC und 8051 sind quasi das Gleiche in Grün... können auch das selbe meist...
Bei http://www.mcselec.com/ gibts nen Basic-Compiler dafür...
Stefan Z
jain das mein ich nicht.
dachte eher so an anwendungsgebiete was ich damit machen kann. Is mir klar dass ich dann 8Leds als lichtorgel spielen kann etc... und da suche ich noch dinge die ich damit programmieren kann.
Zitat von "Stefan_Z"Aber PIC und 8051 sind quasi das Gleiche in Grün...
Das stimmt nicht so ganz. Da ich mit PICs noch nicht gearbeitet habe kann ich dazu nichts sagen. Aber der Unterschied AVR <-> 8051 ist schon recht groß. Zum einen ist ein AVR ein RISC-"Prozessor" und ein 8051 ein CISC-"Prozessor". Der Unterschied ist, dass ein RISC in der Mächtigkeit reduzierte Befehle hat, die aber dafür nur wenige (AVR meist einen) Takte benötigen. Ein CISC hingegen hat recht komplexe Befehle zur Verfügung, benötigt allerdings mehr als einen Takt dafür.
Ein weiterer großer Unterschied ist die maximale Anzahl an Instruktionen. Ein AVR kann theoretisch entsprechend der Taktrate viele Instruktionen pro Sekunde ausführen. Beim (originalen) 8051 wurde der Takt durch 12 geteilt, wodurch der maximla Durchsatz dann halt 1/12 des Taktes war. Heutige überarbeitete schaffen das alles sogar ohne die Teilung.
Dennoch bleibt der Unterschied in der Architektur. Während ein AVR nur den Code aus dem Flash ausführen kann, ist der 8051 in der Lage dies von jeder Quelle aus zu tun.
Ach und dann wäre da noch der Punkt, dass viele 8051er nicht direkt ne Led treiben können, und wenn dann nur im "sinking" Betrieb. D.h. es muss also eigentlich immer ne Treiberschaltung eingesetzt werden.
Achja, es gibt im Übrigen auch keine gemeinsame Programmierschnittstelle. Manche haben nen Bootloader, manche ne ISP-Schnittstelle und manche etwas ähnliches, nur inkompatibel zu der AVR-Geschichte.....
Ich will die 8051er keinesfalls schlecht reden, aber es sind halt im Vorfeld diverse Sachen zu klären bevor man loslegen kann.
Edit:
Die Möglichkeiten sind fast unbegrenzt. Aber mit nem µC ist man doch eigentlich recht flexibel und kann damit mehr als ne Blinkschaltung machen. Ich würde für den Anfang die Projekte eh nicht zu hoch hängen.
achso , vielen dank erstmal für die antwort
und die gedanken welchen ich nehme etc muss ich mir nicht machen, wir basteln das ding in der schule sowieso , geht mir nur darum was ich damit dann zuhause anstellen kann.
und "nur lauflicht" naja kann das ding ja eben über com-port neu programmieren.
Ach na dann...
Ok, also den Knight-Rider haste schon gemacht...also wenn du weiterhin mit Leds was machen möchtest, dann wäre entweder ne Matrix ein interessantes Projekt oder aber ein RGB-Fader. Ich denke aber mal, dass der Controller eh nur maximal 2 PWM Einheiten hat, also müsste man das per Software machen. Das ist dann doch schon ne kleine Herausforderung
achso,
na programmieren das geht bei mir wohl , is mehr die die hardware die mir probleme macht
Man kann nen AD Wandler anschließern und dann z.B. nen Thermometer anschließen.
Man kann nen LCD anschließen.
Man kann externen Speicher anschließen.
IIC Anwendungen sind auch kein akt.
Wenn ich das jetzt alles zusammenwürfel, hab ich schon nen Datenlogger!
könnt ich dann auch RGB LED benutzen und mit thermometer die farbe ändern ? kalt = blau warm = rot etc ?
ja,das geht
wenn man einen DA wandler anschließt, sich 'nen kleinen darlington-verstöärker baut und 'nen lautsprecher anschließt, klönnte man damit sogar melodien spiele lassen
basic kennt ja die befehle play und sound die sind zwar für den ibm speaker, aber vielleicht gibts für das µC basic da auch 'ne library, die play und sound für einen da-wandler implementieren. ansonsten schreibt man sich die funktionen halt selber
oder man besorgt sich 'nen timer-baustein, dann hat man quasi sowas ähnliches wie beim ibm pc speaker und könnte den dann über die port[] anweisung von basic mit den entsprechenden bitfolgen (frequenzteiler (für gewünschten ton) speaker ein-/ausschalten, wellenform (sinus, rechteck, dreieck) den quasi so ansteuern wie das früher beim ibm speaker ging.
bei soundausgabe über da-wandler muß man dagegen in einer schleife mit sin() die werte ausrechnen, die man an den da-wandler schickt. für z.b. einen ton von 1 khz bei 8 bit aflösung mit voller amplitude müßte man 1000 * 256 mal einen wert an den da-wandler ausgeben, um den sinusto zu erzeugen.
das könnte die rechenleistung des µC unter umständen deutlich sprengen
drum ist der timerbaustein (mit so einem arbeitete der ibm speaker früher) wohl sinnvoller, weil resourcenschonend
btw: einen d/a wandler kann man für 8 bit aus 8 widerständen bauen.
D0 kriegt R
D1 R/2
D2 R/4
u.s.w. die enden der widerstände werden mitnander verbunden und gehen dann an den verstärker, die rückleitung vom verstärker geht an GND
8051 werden in der Regel in C und Assembler programmiert.
Also die Dinger können im Prinzip ALLES.
Klar, mit 2k Speicher ist man dann teilw. schon etwas beengt, aber im Prinzip geht halt schon alles. Und die AVRs haben ja auch bis 20MHz Takt und mehr, je nach Modell.
Displays, Funkuhren, Datenschnittstellen, Sensoren, usw... kann damit alles gesteuert werden.
Zitat von "Kanwas"8051 werden in der Regel in C und Assembler programmiert.
Genau.
Zitat von "djtechno"
einen ton von 1 khz bei 8 bit aflösung mit voller amplitude müßte man 1000 * 256 mal einen wert an den da-wandler ausgeben, um den sinusto zu erzeugen.
Nicht direkt. Für einen Ton mit einer Frequenz von 1kHz reicht es 1000 mal den Wert 1 und 0 in einen Port zu schreiben. Anders ausgedrückt 1000 mal am Pin wackeln, also 2000 Zustände. Damit es ein wenig "runder" klingt, kann man dann ne Kette von 2-3 Tiefpassfiltern nachschalten.
Für die Sache mit dem Sinus reicht eine Tabelle mit 8, 16, 32..oder auch meinetwegen 256 Einträgen. Die müssen dann wie djtechno sagt entweder über ein R2R-Netzwerk an den Ports ausgegeben werden oder an nen D/A-Wandler. Ne andere Variante wäre noch, das ganze üner ne PWM zu machen. D.h. man lässt ne PWM mit z.b. 30kHz laufen und schreibt als Pulslänge immer den aktuellen Wert der Tabelle rein. In diesem Fall benötigt man allerdings auch nen Tiefpass.
D/A-Wandler mit R2R-Netz:
http://www.avr-asm-tutorial.net/avr_de/avr_dac.html
Sinus über PWM(Achtung PDF):
http://www.avr-asm-tutorial.ne…on/Teil_8_Beispiel_11.pdf
Edit: Ich glaube wir schweifen ab...
Bloody:
Gibt es denn irgendwas bestimmtes, das du bauen möchtest?
Zitat von "Kanwas"8051 werden in der Regel in C und Assembler programmiert.
ja, aber wie oben egschrieben gibts auch einen basic-"compiler"
allerdings habe ich früher selber viel in assembler programmiert, allerdings in 8086-assember aufm pc unter ms-dos. ein paar 80286 und 80386-befehle (protected mode, control- und debugregister) kenne ich auch, im wesentlichen wars aber 8086-assembler
Hmm, wirklich ein "Compiler"??
Basic ist ja eher ein Interpreter und von daher eher langsam. Wenn ich mal so auf die Basic-Stamps oder die C-Control aufmerksam machen darf: Die schaffen kaum mehr als 10000 Befehle die Sekunde. Wobei hier ein Befehl deutlich mächtiger ist als eine Instruktion des Controllers. Dennoch würde man sich bei Anwendungen wie Sounderzeugung doch eher einen Stein ans Bein binden.
eben deshalb "compiler" in anführungszeichen.
basic wird normalerweise nicht compiliert, sondern von einem interpreter ausgeführt.
auch visual basic programme werden NICHT inn maschinencode übersetzt, sondern in eine art bytecode ähnlich wie bei java und von einer dll ( VBRUNx00.DLL ) interpretiert.
allerdings wird bei mikrocontroller-basic-entwicklungsumgebungen der code i.d.r. doch "compiliert", sprich in maschinencode umgesetzt,da in den speichernd er controller wenig platz ist, will man da nicht schon den größten teil mit einem basic-interpreter vollknallen.
wie gut oder mieserabel optimiert der code damit dann ist, und ob so ein basic-"compiler" die unzähligen möglichkeiten des controllers überhaupt ausreizen kann (basic hat nur einen beschränktes repertoire an hardwarespezifischen "low-level"-befehlen, und die KOMPLETTE basic hochsprache wird man aus platzgründen und wegen der technischen limits bzw unetrschiede zum pc wohl eher nicht implementieren)
sprich diese basic-"compiler" sind vermutlich kein vollwertiges basic, sondern "nur" eine untermenge davon
Also Bascom Basic ist schon ziemlich komplett... Wüsste nicht, was da noch groß fehlt...
wenns so ist, ist das natürlich eine gute sache
Zitat von "bademeister"
Edit: Ich glaube wir schweifen ab...
Bloody:
Gibt es denn irgendwas bestimmtes, das du bauen möchtest?
nein gibt es nicht. Wir bauen das ding in der schule und sollten a) vorschläge machen was die klasse damit bauen kann und b) kann ich das ding zuhause ja ganz anders verwenden
und da ich mich in leds verliebt habe dachte ich kann man da vielleicht was nettes basteln weil komplexe schaltungen mechanisch zu steuern bisschen aufwändig ist.
ich meine bei 8bit bau ich paar logische bausteine dran und dann gibts ne menge (led)schaltbilder die ich ansteuern kann.
wär natürlich auch ganz nett wenn man lichteffekte zu ner musik hinbekommt...
Ahh, da isser wieder der Musik-Controller....
Also wenn du quasi ne µC gestützte Lichtorgel bauen willst dann wirst du mit nem 8051 oder auch AVR oder PIC.. nicht glücklich. Die einzigen wirklich effektiven Möglichkeiten auf Musik zu reagieren besteht in einer FFT oder der Nutzung von Bandpassfiltern (z.b. IIR). Es gibt aus der Seite von Elm Chan (oder so ähnlich) ein Projekt bei dem er ne quasi Echtzeit-FFT auf nem AVR hinbekommen hat. Ist aber recht schwer zu verstehen.
Ne einfache Reaktion auf nen Ton könntest du mit nem Komparator erreichen. Irgendwo im Netz kursiert ein Stimmgerät, aufgebaut mit nem AT90S2313, welches die Tonhöhe mit dem Komparator anhand der Nulldurchgänge bestimmt.
Ansonsten würde ne diskret aufgebaute Lichtorgel schneller zum Ergebnis führen.