PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom und Asm gibt es da Unterschiede im Programm



Bqube
04.01.2009, 20:22
Hey leute ich hab da mal eine kleine Frage wenn ich mal ganz einfach Led's am Port B leuchten lassen will sagen wir Port B Pin0. Das ganze in Asm dauert es ich glaube 3,4 us im Simulator und wenn ich das ganze Peer Bascom schreibe dauert dies bald 1500 us warum ??

Mfg P.Gnauck

Besserwessi
04.01.2009, 20:44
Ich weiß nicht genau ab wo die Zeit gemessen wurde. Am anfang des Programms macht BASCOM noch ein paar initialiseirungen. Die werden wohl einen Großteil der Zeit brauchen. Es ist auch normal das man in ASM schneller sein kann als ein Compiler, gerade wenn man einfache Aufgaben hat. Wenn das Programm länger wird, wird es aber zunehmend schwerer den Überblick in ASM zu behalten. BASCOM wird vermutlich auch für das Kurze Programm die dAten im RAM ablegen, in ASM kann man bei kleinen Programmen oft vieles in den Registern lassen.

Bei längeren Programmen kann man auch damit rechenen das BASCOM langsamer als ASM sein wird, aber der unterschied sollte im allgemeinen nicht so groß werden. Ein Faktor 2-3 ist aber öfter schon mal drin, das hängt aber auch vom Können des ASM Programmierers ab.

guenter1604
04.01.2009, 23:26
Hallo Bqube,

der große Vorteil bei ASM ist nun mal die Geschwindigkeit,
der große Vorteil bei Basic ist der lesbare Code.

Ich finde, das Optimum ist eine Mischung aus beidem.

Den Großteil des Programms in Basic, an zeitkritischen Stellen ein paar ASM-Zeilen.

Die Microcontroller werden immer grösser und schneller, auch die Programme die realisiert werden, werden immer komplexer. Da wird es zunehmend schwieriger mit ASM den Überblick zu behalten.

Günter

Bqube
05.01.2009, 09:33
Ja schön und gut aber was ist nun mehr von vorteil für mich wenn ich z.b Mit einem betriebssystem das ich selbst schreiben will arbeiten möchte ist es da besser es in Bascom oder eher doch in Asm zu schreiben ??

Besserwessi
05.01.2009, 10:00
In dr Regel braucht man bei den µC gar kein Betreibssystem, schon gar nicht im klassischen sinn. In der Regel wird man da das Ganze Programm zusammen übersetzen und statt eines Betreibssstems eine Sammlung von nützlichen Routinen nutzen, die bei Bedarf genutzt werden oder nicht.

Wenns wirklich ein Beteibssystem werden sollte wäre C wohl eher die Sprache der Wahl. Ist von Geschwindigkeit in der Regel besser als Bascom und besser für elemetare Tasks wie ISRs geeignet. Ob Basic oder C übersichtlicher sind ist vor allem ein Geschmacksfrage.

Bqube
05.01.2009, 13:12
Es soll ein Betriebssystem mit Graphischer ebene werden wo ich Programm peer selbstgebauter speicherkarte also so wie bei windoof ne cd einlegen starten und sogar installieren kann

MeckPommER
05.01.2009, 13:34
Es soll ein Betriebssystem mit Graphischer ebene werden wo ich Programm peer selbstgebauter speicherkarte also so wie bei windoof ne cd einlegen starten und sogar installieren kann

Bei deinen Überlegungen bitte nicht vergessen, das ein PC und ein µC den markanten Unterschied vorweisen, das beim µC Programme nicht im RAM liegen sondern in einem Flash.

Und ein µC mit graphischer Oberfläche ... bedeutet zumeist, 80% der µC-Power dafür aufzuwenden damits hübsch wird und die eigentliche Anwendung bekommt nur krümelweise Power.

Per SD Pseudocode zu laden und dann vom µC interpretieren zu lassen ... das würde ich nur bei Anwendungen machen, bei denen Zeit und Geschwindigkeit keine Rolle spielen.

Gruß MeckPommER

Besserwessi
05.01.2009, 13:50
Für so ein System mit Prgrammen von der Speicherkarte sind die AVR Controller ziehmlich ungeeigent, denn die können nur Code aus den Flash laufen lassen. Es gibt aber z.B. ARM Controller die auch Code aus dem RAM laufen lassen können. Der Aufbau wird dann aber eteas schwieriger.
Wärde dann von der Hardware ziehmlich dicht dran an so einem mobilen Navigationsgerät.

Bqube
05.01.2009, 13:52
Also ist für meine idee ein AVR nicht so die richtige adresse kann man nicht einfach sagen wir meinen atmega8 als grundgerüstlaufen lassen und alles aus externen speichern nutzen wie Betriebssystem in einem externen flash usw ?

MeckPommER
05.01.2009, 14:17
Dafür sind die AVRs nicht gedacht. Sinn der µC ist ja grade, das so viel wie möglich mit so wenig wie möglich externer Hardware funktioniert.
Du kannst auf externes Flash zugreifen, aber eben kein dort befindliches Programm ausführen.
Was für ein Grafik-Display wolltest du auch an einem Atmega8 betreiben? Schon mal überlegt, wieviel RAM so ein Atmega hat und was ein ordentliches Display so an Speicher fressen kann?
Wenn du (nur um es zu verdeutlichen) ein normales Bild eines PC-Monitors (1280*1024 - 24Bit) im RAM eines Atmega8 unterbringen wolltest ... nun ... *kopfkratz* ... bräuchtest du 3840 Atmega8 ... nette Platine :)

Wenn du etwas brauchst, was so in etwa wie ein PC funktioniert, warum nimmst du kein PC? Es gibt Motherboards mit CPU, Grafik, Festplattenanschluss, 512MB RAM, etc. schon für unter 100 Euro.

Gruß MeckPommER

P.S.: Wennu proggst wiede schreibst wird e nüschtz ... sorry, den konnte ich mir jetzt nicht verkneifen ;-)

Bqube
05.01.2009, 15:21
Ja aber ich will es selber machen und ich will ja auch nicht so ne große auflösung haben es soll was kleines handliches sein. Mal von AVR weg gibt es eigentlich noch reine CPU's wo der rest exstern ist also nicht sowas wie nen 8086 sondern was moderneres??

MeckPommER
05.01.2009, 15:32
Es muss keine reine CPU sein, es gibt auch erheblich leistungsfähigere µC wie z.B. ARM7 und aufwärts.
Ob es noch reine CPUs gibt? Was moderneres als 8086? Die Frage meinst du nicht ernst, oder? ^^

Bqube
05.01.2009, 15:52
Das mit den modernen CPU's war so gemeint die jemand wie ich ansteuern kann wenn ich an so nen Intel P4 denke ich glaub da würde ich drann kaputt gehen. Aber der ARM7 hatt doch auch alles intern oder ? Weil ich weiß glaub ich das war beim z80 so das man halt alles einzeln hatte seine CPU dann die Pio Sio usw. Ich will halt nen grund System haben wo ich einfach wie schon mal gesagt ne SD oder mmc karte reinsteck und dann ein zusatzprogramm drauf hab oder so in der art.

Ach noch was wie siehts denn mit diesem Propeller chip aus .
Mfg P.Gnauck

Neutro
05.01.2009, 15:58
Ich weiss ja nicht so ganz genau aber die SAK 164 Chips von infineon
sind auch sehr Leistungsstark. Die lassen sich auch noch mit weiteren RAM´s für Graphische Anwendungen erweitern.
In wie weit die jetzt aber für dich geeignet sind kann ich aber auch nicht sagen, da müsste man mal in das "Datenbuch" schauen.

Besserwessi
05.01.2009, 16:05
Die AMR 7 Chips haben zwar auch fast alles schon dirn, aber da sollte es einige von geben, die auch Code aus dem RAM Ausführen können und wo man ggf. auch externes RAM anschließen kann.
Mit einer renen CPU wie der alten Z80 wird das ganze ziehmlich aufwendig, denn da braucht man vieles Extern. Vor allem ein externes RAM ist nicht unbedingt erstrebenswert: entweder man braucht eine wirklich gut designete Platine um das RAM schnell ansprechen zu können, oder ganz läuft sehr langsam, etwa so wie bein Z80. Wenn man da deutlich mehr als die Leistung eines Z80 haben will, wird man auch nicht um SMD Teile herumkommen. Außerdem macht so ein 16 oder 32 Bit Bus keinen richtigen Spass beim verdrahten. Da ist man echt froh wenns intern ist.

Bqube
05.01.2009, 16:36
Ja da habt ihr schon recht ich kenn mich da nicht so genau aus (noch nicht) aber wenn ich das richtig verstehe hab ich bei 16 bit auch 16 kabel oder leitungen ? und wenn dann kann man das ganze ja peer egal erstellen und die platine dann ätzen. Nochmal zu den 16 bit wenn ich die Ports 0 - 7 hab sind das ja 8 stück insgesamt also 0000 - 0000 das sind dann 8 bit und ein externes ram hätte dann 0000 - 0000 - 0000 - 0000 ist das richtig ?
Und dieser P8X32A-D40 da hab ich sowas gelesen das er es könnte also externen ram für sein programm verwenden und so ein Normal heim pc hat ja auch seine CPU und halt die festplatte und kann ich nicht auch eine mmc oder SD als quasi festplatte verwenden. Ich hab mir mal halt mein atmega8 bascom und nen board gekauft aber wie ich bemerke kann ich wohl mit dem nix anfangen..

Bauteiltöter
05.01.2009, 16:39
also, um nochma zum Thema Grafik zurück zu kommen:
Ich habe hier ein 240x128 gLCD (Schwarzweiß!) mit Touch zur benienung meine "alarmanlage". Das Programm ist im moment 35kB groß und hat noch fast keine Funktion!
Jetzt musst du dir ma ausrechnen, wie groß ein programm wird, das extrem aufwendig ist und eine schöne Oberfläche hat... um einen M2560 komst du dann kaum noch vorbei.

Ich benutze im moment den M644, aber der ist schon 50% voll...

Also, entweder du nutz einen µC wie einen µC oder du benutz einen "echen" PC.

Einen µC als PC zu benutzen ist meinermeinung nach nicht Praktikabel ;)

Bqube
05.01.2009, 17:10
Man das ist echt ne schwere sache ich will ja nicht einfach einen PC kaufen und Programmieren das kann ja jeder ok nicht jeder aber ist einfacher wenn will ich das selber machen und wenn ich es mit µC machen will wäre am besten einer von der seite hier
http://www.shop.display3000.com/
weil da nen Atmega 128 drauf ist und direkt ein Display bei.

mat-sche
05.01.2009, 19:21
Hallo,

nun höre doch darauf was die Profis sagen. Ich möchte Dir das nicht ausreden, vielmehr solltest Du Dir überlegen, ob sich der Aufwand lohnt!
Ich progge auch noch nicht all zulang aber das was ich mache, füllt reichlich meinen µC.
Wenn Du unbedingt etwas wie ein Betriebssystem haben willst, dann nimm ein Industrie PC oder ein Einplatinenrechner nutze Win mobile oder befasse Dich mit Linux => dort kannst Du dann Dir das Betriebssystem selber basteln.

Gruß MAT

Bauteiltöter
05.01.2009, 19:26
Hi,

wenn du ein ganzes OS selber programmieren willst, denk ma daran, wie aufwendig das ist --> alleine die ganzen Register und und und...
Der Programmcode von Windoof ist nicht umsonst >1Milliarden Zeilen!

MfG

guenter1604
05.01.2009, 20:21
Hallo Bqube,

also erstmal:

keine Frage ist zu blöd um gestellt zu werden.

Zum einen ist das schon richtig, die ATMegas sind dafür (noch) nicht geeignet. Sinnvolle Anwendungen wirst du eher mit Einplatinencomputern erziehlen. Jedoch wird der Graben kleiner werden. TCP/IP und Webserver hätte vor Jahren auch keiner für möglich gehalten.
Der Tipp mit Linux ist auch interressant. Denn auch in Routern und NASsen arbeiten (relativ) kleine Prozessoren, jedoch keiner mit Grafik.

-aber könnte man ne alte PCI-Grafikkarte mit men Microcontroller ansteuern?
-wie siehts mit FPGAs aus, dort gibts doch auch div. Emulatoren usw.

Günter

fidibus
05.01.2009, 20:39
Hi,
wenn du dir ein Betriebssystem komplett selbst schreiben willst, solltest du vll auf eine sehr schlanke Linux Distribution zurückgreifen. DSL ( Damn small Linux) würde mir da auf anhieb einfallen. Ist ca 50mB groß. Dann hast du schonmal ein Grundgerüst und kannst darauf dann alles weitere aufbauen. Ein komplett neues Betriebssystem zu schreiben ist meiner Ansicht nach, wie das Rad 2mal erfinden. Wobei dein Rad mit Sicherheit fast wie das erste ausschaut, du aber horenden Zeitaufwand benötigst um die Speichen zu befestigen.

Bqube
05.01.2009, 23:09
Ja da habt ihr ja recht das Rad sollte man eig nicht nochmal erfinden aber ich hätte da spaß drann. Aber was mir keiner sagen konnte wie sieht es denn mit dem z80 , 8086 , MC68008 gibbit da nicht was neuers von denen auf smd Basis ?

Gento
06.01.2009, 00:02
Welche Vorkenntnisse hast Du @Bqube

C ,Delphi ,VB ,Java oder nur das Einwerfen von CD's ?

Rechne mal grob , je KB Code im kleinen Chip , kostet 1 Tag Arbeit wenn man gut ist.

Gento

Bqube
06.01.2009, 02:03
In VB und C und durch die ausbildung was asm. Ok ich hab das mit dem Betreibssystem in Graphik mal weggelassen. Wenn ich es auf ner Text ebene mache wie joar MS-Dos müsste ja was einfacher sein. Meine abneigung zum Microcontroller ist die das es nicht Fexibel ist wenn ich eine kleine anwendung hab ne uhr Auf dem fernseher anzeigen zu lassen geht das noch super aber was ist wenn ich aufeinmal mir denke ich will Mehrere seiten anzeigen lassen z.b mit uhr dann mit nem taschenrechner usw dann reicht der uc net aus und bei nen CPU wenn da mal das eprom zu klein ist hol ich mir nen größeres wenn die schaltung es erlaubt.

Bqube
06.01.2009, 16:54
So ich hab die Lösung gefunden und zwar hat mit so einem Projekt schonmal jemand angefangen und zwar auf der seite [urlhttp://drohne.piranho.de/[/url]
Und das ganze hat er mit drei Parallax Peopeller Chips und 1 MB ram aufgebaut sieht sogar richtig nice aus und für Diesen Chip hat auch schon jemand mal eine GUI Programiert.
Mfg P.Gnauck

MeckPommER
06.01.2009, 19:13
Viel Spaß dabei, etwas ähnliches selber zu machen :-) Kannst uns ja auf dem Laufenden halten, was deine Fortschritte angeht!

Gruß MeckPommER

guenter1604
06.01.2009, 21:51
Hallo MeckPommER,

Selbstbaucomputer OK, aber es soll Leute geben, die einen Hexabot bauen! Zudem kenne ich jemand der eine Internetseite kennt, welche einen funktionierenden Hexabot in Aktion zeigt! ;-) Respekt! weiter so!!!

Günter

fidibus
07.01.2009, 23:30
Also der Rechner auf der genannten Seite ist schon beeindruckend.

Bqube
08.01.2009, 14:21
Die idee ist meiner Meinung nach schon groß angesetz weil einen eigenen Computer quasi von grund auf Selber zu bauen ist schon eine schwere sache aber die Idee vom Hive und wie das ganze aufgebaut ist mit den drei Propeller chips das jeder sein eigenen bereich hat ist schon genial insgesagt hat der dann 24*32bit Microcontrollern und das ist schon eine menge ich arbeite mit dem entwicker nun zusammen und die ürbelegung geht so wie es im moment steht so weit das es noch mehr werden. Allein wird ein Propeller Chip dann für das Updaten sein quasi zum Programmieren des Host Chips. Ich hab auch mal anbei ein bild reingestellt von einer GUI oberfläche die Jemand für den Propeller Chip geschrieben hat.
Mfg P.Gnauck