Forum: Mikrocontroller und Digitale Elektronik Schon gesehn, Avr Wettbewerb !


von Bastler (Gast)


Lesenswert?

Wer es noch nicht gesehn hat. Auf der Seite 
http://www.shop.robotikhardware.de/shop/catalog/news_zeigen.php?id_news=27 
gibt einen interessanten AVR Wettbewerb. Wer sowieso was in der 
beschriebenen Richtung bastelt, könnte 500 Euro gewinnen.

Da gewöhnlich recht wenige Teilnehmer bei solchen Wettbewerben 
mitmachen, ergibts sich sicherlich eine brauchbare Gewinnchance.

von gast (Gast)


Lesenswert?

Bastler wrote:
> Auf der Seite
> http://www.shop.robotikhardware.de/shop/catalog/news_zeigen.php?id_news=27
> gibt einen interessanten AVR Wettbewerb.

Die Software muss (zumindest teilweise) in BASCOM geschrieben sein, 
somit dürften die wirklich guten Projekte wegfallen. Selbst schuld wer 
solche dummen Regeln aufstellt.

von Peter D. (peda)


Lesenswert?

gast wrote:

> Die Software muss (zumindest teilweise) in BASCOM geschrieben sein,
> somit dürften die wirklich guten Projekte wegfallen. Selbst schuld wer
> solche dummen Regeln aufstellt.

Das ist natürlich ein absolutes KO-Kriterium.

Aber als MC sind alle Atmels zugelassen (8051, AVR, ARM7, AMR9, Cortex 
M3).


Peter

von Dominique G. (dgoersch)


Lesenswert?

Im Zusammenhang mit dem "leicht nachzubauen" finde ich diese Regel 
absolut begrüßenswert. Basic-Derivate sind im Vergleich zu C oder gar 
Assembler extrem leicht zu erlernen und insb. leicht zu verstehen, auch 
für Programmieranfänger.

Das Ziel ist doch klar: Man möchte ein Projekt finden, prämieren und 
vorstellen, welches die breite Masse anspricht und nicht nur ein paar 
Freaks oder Leute die sich schon ewig damit beschäftigen.

Gruß
Dominique Görsch

von Stefan B. (stefan) Benutzerseite


Lesenswert?

@ Dominique

> Das Ziel ist doch klar: Man möchte ein Projekt finden, prämieren und
> vorstellen, welches die breite Masse anspricht und nicht nur ein paar
> Freaks oder Leute die sich schon ewig damit beschäftigen.

Und dann macht man eine Programmiersprache zur Grundbedingung für die 
man wenn überhaupt nur schwer eine Freeware-Entwicklungsumgebung finden 
kann?

von Volker (Gast)


Lesenswert?

>Die Software muss (zumindest teilweise) in BASCOM geschrieben sein,

Da kann man mal raten wer das Preisgeld gestiftet hat ;-)

von David M. (md2k7)


Lesenswert?

Genau lesen.

"Zumindest ein Beispielprogramm muss in Bascom-Basic beiliegen und einen 
Teil der Fähigkeiten demonstrieren."

Also wer sowieso etwas in der Richtung entwickelt und nicht zu arrogant 
ist, um ein paar Zeilen Basic zusammenzubringen, für den ist das doch in 
Ordnung. Es zwingt ja nicht dazu, den gesamten Code in Basic zu 
schreiben.

von Anselm (Gast)


Lesenswert?

ich zitiere:
Mit der Einsendung erlaubst du die lizenzkostenfreie Veröffentlichung 
und den Nachbau und Ausbau des Projektes! Ebenfalls gestattest du die 
Veröffentlichung im Roboternetz.de oder auf der Robotikhardware CD.

Ich sage einfach mal frech dass die damit Geld verdienen wollen.
(zb.: mit bausätzen oder sowas....)

Gruß Anselm

von Bastler (Gast)


Lesenswert?

...der nächste Pollin Bausatz!

Der Ansatz "für die breite Masse" beißt sich aber etwas mit BASCOM.
Da wäre C sinnvoller.

von Gast (Gast)


Lesenswert?

Da bist du aber Fern von der Realität! Fast 70% der AVR Anwender 
verwenden Bascom. In meinem Bekanntenkreis sind es sogar 90% !

von Benedikt K. (benedikt)


Lesenswert?

Du glaubst doch nicht wirklich, dass irgendwo in der Industrie mit 
BASCOM programmiert wird!?!

von Katapulski (Gast)


Lesenswert?

>Du glaubst doch nicht wirklich, dass irgendwo in der Industrie mit
>BASCOM programmiert wird!?!

Nein, das glaube ich nicht. Das weiß ich.

gez. Katapulski

von Dominique G. (dgoersch)


Lesenswert?

Ebenso werden ja auch große, produktive Anwendungen mit VB erstellt, 
obwohl es so verhasst ist.

Gruß
Dominique Görsch

von Peter D. (peda)


Lesenswert?

Gast wrote:
> In meinem Bekanntenkreis sind es sogar 90% !

Wenn diese Aussage stimmen soll, hast Du also mindestens 10 Bekannte, 
wovon 9 hauptberuflich mit Bascom programmieren.

Ich kann Dir sagen, das sämtliche Programmierer bei mir in der Firma zu 
exakt 0% in Bascom/Basic programmieren.
Sondern hauptsächlich C/C++ und etwas Erlang/Java.


Peter

von Katapulski (Gast)


Lesenswert?

>das sämtliche Programmierer bei mir in der Firma...
Wieviele Programmierer gibt es bei Dir in der Firma außer Dir selbst? 
;-)

SCNR
Katapulski

von Peter D. (peda)


Lesenswert?

Katapulski wrote:
>>das sämtliche Programmierer bei mir in der Firma...
> Wieviele Programmierer gibt es bei Dir in der Firma außer Dir selbst?
> ;-)

5 Programmierer und dann noch ich, der hauptsächlich Hardware entwickelt 
und nebenbei auch mal etwas dafür programmiert (MCs, CPLDs).
Ich bin also gar kein richtiger Programmierer.

Es ist ganz angenehm, selber entscheiden zu können, was besser in 
Hardware geht und was besser in Software.
Anfangs, als ich nur Hardware gemacht habe, hat sich ein Programmierer 
geweigert (es sei zu kompliziert), ein Signal in Software zu invertieren 
und ich mußte einen Transistor mit Heißkleber auf das Board draufpappen 
lassen. Das passiert mir jetzt nicht mehr.


Peter

von Katapulski (Gast)


Lesenswert?

>Ich bin also gar kein richtiger Programmierer.

Der war gut! Wenn DU kein richtiger Programmierer bist, wer dann?

Hut ziehend
Katapulski

von Katapulski (Gast)


Lesenswert?

Ach so: Zurück zu der Frage, ob BASCOM nicht nur von Bastlern verwendet 
wird. Ich habe hier 3 Leute, die ein Ingenieurbüro führen. Sie schreiben
eine ganze Menge ihrer Sachen damit. Dabei geht es vor Allem um einfache
Ablaufsteuerungen für Maschinen, von denen oft nur ein Exemplar gebaut 
wird. Dort sind die Abläufe nicht so zeitkritisch und es kommt nicht 
darauf an, das letzte Byte im Flash nicht zu belegen. ;-)
Ich selbst bin auch ein Fan davon, wobei ich in letzter Zeit auch an
AVR-Assembler nicht vorbeigekommen bin, denn die Library-Dateien in 
Bascom
sind ja auch in Assembler geschrieben. Wenn man daran etwas zu ändern 
hat,
muß man ja verstehen, was dort vorgeht.

gez. Katapulski

von ich (Gast)


Lesenswert?

na is das nich generell so?
kleine sachen bzw projekte die nicht wirklich zeitkritisch sind werden 
in bascom geschrieben..aber sobald es auf genaue zeiten ankommt nimmt 
man c oder besser assembler?

wobei ich mir assembler recht schwer vorstellen wenns um sehr große 
projekte geht?

von flasche leer (Gast)


Lesenswert?

also ich habe bisher genau 0 mal in basic programmiert und bin ehrlich 
gesagt stolz drauf. gut ich bin nicht normal und nicht der nabel der 
welt, aber basic habe und werde ich nie einsetzen.

ps: ja. asm und richtig grosse projekte sind nicht wirklich lustig, aber 
geschickt passagen per inline asm rein gefrickelt oder spezielle 
funktionen... das ist durchaus akzeptabel bis sinnvoll.


senf

von Bernd T. (bastelmensch)


Lesenswert?

Obwohl ich auch Bascom verwende (nicht ausschließlich) bezweifle ich 
ernsthaft das 70% der AVR Anwender Bascom benutzen.
Ich denke das C verbreiteter ist. (Ich mag C nicht und bin froh das ich 
es nciht mehr machen muß. Dann schon lieber Assembler!)

Die meisten wissen nicht mal was wirklich wichtig am Programmieren ist. 
Es ist das "wie" und nicht die Programmiersprache.

Wer meint Programmieren zu können weil er eine bestimmte 
Programmiersprache benutzt, der tut mir leid.

In den einschlägigen Foren findet man viele Hilferufe quer durch alle 
Programmiersprachen.
Das rumbetteln nach fertigen Libs und Routinen ist nicht nur bei Bascom 
zu sehen.

Assembler zu programmieren hat zumindest den Vorteil das die meisten 
dann wenigstens genau wissen was intern im Controller abgeht.

Bei so einem Wettbewerb eine Sprache vor zu schreiben ist natürlich eine 
ziemlich dumme Einschränkung. Aber ich bin sicher das man nur ein wenig 
googlen muß um ähnliches mit z.B. C zu finden.

Ich denke in diesem Wettbewerb steht Finanzielles Interesse dahinter. 
Aber bei welchem Wettbewerb ist es das nicht?

von Gast (Gast)


Lesenswert?

> also ich habe bisher genau 0 mal in basic programmiert und bin ehrlich
gesagt stolz drauf. gut

Bist du noch keine 14? So ein Schwachsinn kenne ich eigentlich nur von 
jungen Schülern die meist weder C, Assember noch Basic auch nur 
annährend beherrschen. Sie meinen wenn Sie in C etwas kleines 
zusammenfriemeln wären Sie Könner. Die haben nicht verstanden um was es 
geht und werden es vermutlich auch nie. Beim Programmieren geht es um 
Aufgaben, Ziele, Problemstellungen die in möglichst kurzer Zeit mit 
möglichst geringen Aufwand durch geeignete Algorithmen perfekt gelöst 
werden müssen. In den meisten Fällen ist man mit Bascom hier viel 
produktiver und das zu erkennen, das zeichnet den Profi-Programmierer 
aus. Sicher gibt es auch Aufgaben wo C und Assembler angesagt ist, auch 
das muss dann ein Profi erkennen, aber das ist relativ selten der Fall.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Peter Dannegger wrote:
> Ich kann Dir sagen, das sämtliche Programmierer bei mir in der Firma zu
> exakt 0% in Bascom/Basic programmieren.

Kein ernst zu nehmender Entwickler schreibt in BASIC. Aber das ist ja 
wohl kein Geheminis.

von Dominique G. (dgoersch)


Lesenswert?

Michael G. wrote:
> Kein ernst zu nehmender Entwickler schreibt in BASIC. Aber das ist ja
> wohl kein Geheminis.

Ich hab nie verstanden wieso. Ich bin seit Jahren VB-Entwickler. Ich 
schreibe ebenso funktionale wie ansprechende Anwendungen in VB wie meine 
Kollegen in Visual C oder C#. Ich hatte bisher kein Problem, welches ich 
in VB nicht gelöst bekam. Zugegeben ich bin mit Basic groß geworden. 
TI-99/4A, C64, C128D, PC mit QuickBasic, Visual Basic, Gambas und auf 
dem µC Bascom, ... das zieht sich wie ein roter Faden durch mein Leben. 
Ich behaupte, dass es darauf ankommt, dass ein Entwickler sein Werkzeug 
beherrscht.

Mag sein, dass man vielleicht mit Basic nicht so Laufzeit- und 
Speicheroptimiert entwickeln kann, wie vielleicht in C oder noch 
hardwarenaher in Assembler, oder das VB nicht so hip ist wie C oder 
Java, aber das hat mich noch nie gestört. Ich nutz ja auch unter Linux 
immernoch das gute alte Perl, obwohl es nicht so hip ist wie Ruby on 
Rails. ;)

Gruß
Dominique Görsch

PS: Ach ja, ich nutz VB nicht nur aus Spaß, sondern hab damit schon 
einige Kunden glücklich gemacht. :)

von flasche leer (Gast)


Lesenswert?

hmmm ruby... neumodisches zeuch... perl oder sed/awk und gut is. ack.

von Michael S. (e500)


Lesenswert?

Hallo und guten Morgen,

mir fallen die Worte meines Profs in einer Vorlesung in der es um Pascal 
ging ein als er nach Syntax gefragt wurde: "Ich bin doch kein wandelndes 
Pascal-Lexikon, wenn Sie soetwas wollen dann gehen Sie in die 
Bibliothek, einem echten Entwickler kommt es doch nicht auf Syntax an, 
dem ist es egal ob er sein Programm in Pascal, Basic, C, C++, Assembler 
oder gar JAVA schreibt."

Und heute weiss ich: Recht hat er!

Es kommt drauf an, dass man versteht, was man machen möchte. Eine 
Programmiersprache ich der Weg zum Ziel, nicht mehr und nicht weniger. 
Die eine Sprache ist eben für Wege des Typs A besser geeignet, die 
andere Sprache für Wege des Typs B und/oder für Entwickler A und/oder 
Entwickler B.

Dieses ganze "ich hasse Basic" oder "C ist das einzig Wahre" ist totaler 
Bockmist und kommt von Leuten, denen die Sprache wichtiger ist als ein 
gutes Ergebnis und von Toleranz haben die auch noch nichts gehört.

Nur mal so zum Nachdenken.

Grüsse und einen guten Start in die neue Woche
Michael

von gast (Gast)


Lesenswert?

Michael S. wrote:

> Es kommt drauf an, dass man versteht, was man machen möchte. Eine
> Programmiersprache ich der Weg zum Ziel, nicht mehr und nicht weniger.

Wenn das Ziel lautet: Möglichst portablen Code zu erzeugen, dann ist 
BASCOM aber nunmal der falsche weg. Denn es ist und bleibt ein 
proritärer Compiler. Für kleine Quick&Drity Projekte vielleicht ok, ab 
wenn das Projekt in 5 Jahren vielleicht mal neu auf einem größeren µC 
laufen soll, dann ist BASCOM eindeutig die falsch Wahl. Und wenn es 
irgendwann MSC nicht mehr gibt gibt, kann man alles nochmal neu 
programmieren.

von marvin m. (Gast)


Lesenswert?

@gast:
proprietär, das meinst ;)
Die größte Schwäche von Basic ist die Nichteinhaltung von Normen. Jeder 
Compiler kocht sein eigenes Süppchen - aber in den Grundzügen passt es 
dann doch wieder.
Ich selbst programmiere (inzwischen) sehr gern mit C, früher war ASM 
mein Favorit - aber Basic hat auch seinen Reiz.
Basic haften von früher viele Vorurteile an, es sei langsam, ineffektiv. 
Wenn man sich den C64-Interpreter mal genauer anschaut, sieht man auch, 
dass der damalige Programmierer alles getan hat, es langsam zu machen 
(da wundert dann nicht mehr, dass dieses Basic von Microsoft kam).
Inzwischen ist Basic schon lange erwachsen geworden und kann es 
problemlos mit anderen Sprachen aufnehmen.
Schlußendlich ist es eine Frage der Umsetzung. Während man bei C ständig 
im Datenblatt schauen muss, welches Bit in welchem Register gesetzt 
werden muss, ist es bei Basic eben die Befehls-Referenz ;)
Schlussendlich muss man zugeben, dass Bascom für µC-Anfänger ein 
wesentlich einfacherer Einstieg als C ist. Ich habe schon min. 5 
Anfängern Bascom empfohlen, und alle sind sehr zufrieden, weil 
unglaublich schnell Ergebnisse erzielt werden. Ich selbst bin noch ein 
Wackelkandidat, mir ist Bascom noch etwas zuviel "Black-Box", man 
bekommt schon zuviel Arbeit abgenommen - aber ich wanke bereits ;)

von Alter Hase (Gast)


Lesenswert?

Halle Leute,
wenn man hier liest wird man das Gefühl nicht los dass sich in diesem 
Forum eine Unmenge ignorranter Dummköpfe bewegen.
Ich schreibe seit fast 30 Jahre Software und hatte nie ein Problem mit 
einer Programmiersprache. Meine ersten Programme wurden noch auf einem 
Blatt Papier codiert und dann mit einer 16er Tastatur in den Controller 
gehackt (war übrigens bereits ein 8048). Lange Zeit gab es für mich 
nichts anderes als Assembler. Als erste Hochsprache habe ich Basic 
gelernt, war ein Horror aber nicht wegen der Sprache. Mit der 
Hochsprache wusste ich plötzlich nicht mehr was die Hardware wann 
tatsächlich tut. Ich habe Industriesteuerungen mit Basic programmiert, 
da dieses Basis damals die einzige Programmiersprache war welche in 
ihrer Syntax Befehle zur Unterstützung von Multitasking enthielt. Ich 
habe aber auch Programmiersprachen benutzt, welche viele von Euch nicht 
mal kennen (kleiner Auszug Fortran, Ada, Forth, Smalltalk, ...). Wichtig 
bei einer Problemlösung ist aber das WIE und nicht das WOMIT.
Daher lasst diejenigen, welche gerne Software in Basic schreiben, diese 
in Basic schreiben, diejenigen die C lieben werden ihre Programme in C 
schreiben, andere verwenden Assembler, Pascal oder Java. Wenn das 
Ergebnis dem Ziel angemessen ist ist das doch OK.

Wenn ein Wettbewerb eine Programmiersprache vorschreibt wird das seine 
Gründe haben, seien diese kommerziell oder auch anderer Natur. Ich kenne 
das Roboter-Forum und weiss, dass dort ein Grossteil der Leute in Bascom 
programmiert, vielleicht ist auch das der Grund.
Und wer an diesem Wettbewerb nicht teilnehmen möchte, kann es ja bleiben 
lassen. Wer aber gierig auf den Gewinn von € 500,- ist, der soll die 
Bedingungen akzeptieren und nicht maulen.

Gruss an alle und weiter viel Spass
ein Alter Hase

von gast (Gast)


Lesenswert?

marvin m. wrote:
> Schlussendlich muss man zugeben, dass Bascom für µC-Anfänger ein
> wesentlich einfacherer Einstieg als C ist. Ich habe schon min. 5
> Anfängern Bascom empfohlen, und alle sind sehr zufrieden, weil
> unglaublich schnell Ergebnisse erzielt werden.

Da stimme ich dir uneingeschränkt zu. Es ist einfach, aber es nimmt 
einem das selbständige Denken zumindest teilweise ab, und das ist 
gefährlich:

> Schlußendlich ist es eine Frage der Umsetzung. Während man bei C ständig
> im Datenblatt schauen muss, welches Bit in welchem Register gesetzt
> werden muss, ist es bei Basic eben die Befehls-Referenz ;)

Es gab hier im Forum schon Leute, die Software in BASCOM in der 
Codesammlung für ein Oszilloskop mit einem AVR gepostet haben, im Code 
übelst rumgepfuscht haben, um eine hohe Datenrate AVR->PC zu erzielen, 
aber nichtmal wussten dass es einen ADC Prescaler gibt, mit dem man die 
ADC Taktrate und somit die Samplerate einstellen kann (der daher mit 
einem langsamen Takt lief, weshalb die Messungen einfach nur Mist 
waren). Sowas kann ich C nicht passieren, denn denn wenn man die 
Register nicht selbst setzt, setzt sie keiner, und das merkt man 
schnell.
Und wenn man hier im Forum liest, merkt man schnell, dass es vor allem 
Leute sind die in BASCOM programmieren, die bei kleinsten Problemen die 
es so nicht vorgefertigt gibt, aufgeben, da sie mit dem Datenblatt 
überfordert sind (bzw. nichtmal wissen dass es hilfreich wäre das mal zu 
lesen).
Das ist der Grund wieso zumindest ich kein BASCOM mag: Man kann zwar 
programmieren, aber hat letzendlich Null Ahnung von einem µC, wenn man 
aktiv nichts dagegen unternimmt. In C wird man quasi zur Selbständigkeit 
gezwungen.

von Bastler (Gast)


Lesenswert?

>Das ist der Grund wieso zumindest ich kein BASCOM mag: Man kann zwar
>programmieren, aber hat letzendlich Null Ahnung von einem µC, wenn man
>aktiv nichts dagegen unternimmt. In C wird man quasi zur Selbständigkeit
>gezwungen.

Das stimmt so nicht. Die Lernkurve ist nur anders. In Bascom steigt man 
tatsächlich ohne tiefere Microprozessorkentnisse ein und kommt auch 
schnell zum Ziel, dem fertigen Programm. Erst nachdem an einige 
Programme geschrieben und höhere Anforderungen an da sProgramm hat lernt 
man STück für Stück die internen Eigenschaften des Controllers kennen. 
Da hilft übrigens auch die gute Bascom Dokumentation kräftig beim 
lernen.

C und erst Recht Assembler programmierer quelen sich von Anfang an duch 
das Microcontroller Interna. Sie sind froh wenn Sie nach Stundne von 
Arbeit endlich ein paar Buchstaben zum PC sendne können - also Aufgaben 
die Bascom in einer Zeile erledigt. Das führt dazu das C und Assembler 
Einsteiger nicht selten nach Tagen oder Wochen die Lust verlieren und 
den Mikrocontroller nie mehr anfassen.

Also mir ist der bequeme Weg lieber, zumal er keinen Nachteil bietet. 
Und wie man stolz sein kann eine Programmiersprache "nicht zu können" 
ist mir auch schleierhaft. Man muss nicht alle können, aber darauf muss 
man trotzdem nicht stolz sein.

von Peter D. (peda)


Lesenswert?

Also ich käme mir schon ziemlich hilflos vor, wenn ich ohne Arrays, 
Strukturen, Funktionspointer usw. auskommen müßte.
Und pro Rechenoperation immer ne extra Zeile, läßt den Quellcode doch 
schnell lang und unübersichtlich werden.
Ich halte C für viel mächtiger und universeller.

Vielleicht kann mir ja mal ein Bascom-Experte zeigen, wie dieses 
einfache Scheduler Beispiel in Bascom aussehen würde:

Beitrag "Wartezeiten effektiv (Scheduler)"


Und Filesysteme, TCP/IP usw. habe ich bisher nur in C geschrieben 
gesehen.
Oder kennt jemand sowas auch als Bascom-Source?


Peter

von Bastler (Gast)


Lesenswert?

Zum einen gibt es Array´s und zum anderen kann man auch direkt auf 
Speicherstellen zugreifen, was in etwa einem Pointer entspricht.
Das nur einzelne Rechenoperationen pro Zeile möglich sind ist in der Tat 
ein kleines verbesserungswürdiges Manko von Bascom, allerdings solltest 
du sowas erstmal in Assembler machen - dort brauchst du zahlreiche 
Zeilen für solch kleine Operationen. Da gibts übrigens auch keine 
Strukturen.

Natürlich gibts für Bascom auch Lib´s für TCP und Filesysteme, alles 
kein Problem.
In jedem Fall ist ein Bascom Programm im Source wesentlich kürzer als 
ein C Programm und zudem wesentlich besser lesbar. gerade deshalb ist es 
ja so beliebt.

von Ohh (Gast)


Lesenswert?

Der [?]-Code ist nicht portabel... wenn ich das nur schon hoere... Ist 
er eh nicht. Weder in C noch in sonstwas. Ausser vielleicht auf den 
naechst groesseren AVR. Portabilitaet bedeutet die Idee ist portabel, 
nicht der Code. Und um die Idee bestmoeglich portieren zu koennen muss 
die Spache uebersichtlich und intuitiv sein. Leider gehoert u+=(1<<1) 
nicht dazu.

von Ohh (Gast)


Lesenswert?

Wettbewerbe dienen dazu guenstig zu neuen Ideen und Talenten zu kommen.

von Peter D. (peda)


Lesenswert?

Bastler wrote:
> zum anderen kann man auch direkt auf
> Speicherstellen zugreifen, was in etwa einem Pointer entspricht.

Davon habe ich nicht geredet, sondern von Funktionspointern.
Funktionspointer (Callbacks) werden in größeren Programmen sehr häufig 
benötigt.

Abgesehen davon, ist ein Speicherzugriff keinesfalls einem Pointer auch 
nur ähnlich.
Wenn ich in C einen Pointer auf ein Strukturelement zeigen lasse, muß 
ich nicht wissen, wie er diese Struktur intern abgelegt hat.
Ich kann mich einfach voll darauf verlassen, daß der Compiler die 
richtige Anzahl Bytes in der richtigen Reihenfolge mit dem richtigen 
Offset zu der richtigen Basisadresse liest.


> Natürlich gibts für Bascom auch Lib´s für TCP und Filesysteme

Davon habe ich nicht geredet, sondern wie man Bibliotheken erstellt.
Bibliotheken sind nichts statisches, man muß sie geänderten 
Erfordernissen anpassen können oder Fehler beheben (Bibliotheken werden 
ja nicht von Gott erschaffen).

Wenn für Bascom deartige Bibliotheken erstellt wurden, dann mit 
Sicherheit in C.
Entweder es wurde für Bascom ein C-Interface (Calling-Konventionen, 
Stack, Register) erstellt oder jemand hat sich die Mühe gemacht, den 
Assembleroutput des C-Compilers mit Bascom zu verwursten.


> In jedem Fall ist ein Bascom Programm im Source wesentlich kürzer als
> ein C Programm und zudem wesentlich besser lesbar.

Aber nur, wenn Du die verwendeten Bibliotheken (Blackboxes) nicht 
mitzählst.

Allerdings ist die Philosophie bei C ne andere. Bibliotheken werden 
erstmal lange Zeit als Quelltext (z.B. im Example-Verzeichnis) belassen 
und nur wenn sie sich bewährt haben und fehlerfrei scheinen, wird ne 
Objekt-Bibliothek gemacht. Daher scheint es, daß für C weniger 
Bibliotheken bestehen, was aber nicht der Fall ist.


Peter

von Siggi (Gast)


Lesenswert?

... Ich bin also gar kein richtiger Programmierer. ...

Das stimmt.

von Jorge (Gast)


Lesenswert?

05 FOR I=1 to 1000
10 PRINT "BASCOM kenne ich nicht... ";
15 NEXT i

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ohh wrote:
> Der [?]-Code ist nicht portabel... wenn ich das nur schon hoere... Ist
> er eh nicht. Weder in C noch in sonstwas.

Gut geschriebener C-Code ist sogar sehr gut portabel. Schau dir mal 
FreeRTOS an, elm chans FATFS-Bibliothek oder Peter Danneggers 
Entprellungsroutinen. Die sind wunderbar portabel und wurden schon auf 
einem halben Dutzend verschiedener Architekturen getestet.

Ich bin kein Freund der Sprache Basic, finde aber dass BASCOM durchaus 
eine Daseinsberechtigung hat. Wenn es um einfache Steuerungsaufgaben 
geht und es nicht auf Portabilitaet oder das letzte Prozent Effizienz 
ankommt (Einzelstuecke, Prototpen), dann ist BASCOM gut geeignet.

von Das Kleinkind (Gast)


Lesenswert?

5 FOR I=1 to 1000
10 PRINT "BASCOM kenne ich nicht... ";
15 NEXT i
20 GOTO 5
RUN

von Dominique G. (dgoersch)


Lesenswert?

Peter Dannegger wrote:
> Wenn für Bascom deartige Bibliotheken erstellt wurden, dann mit
> Sicherheit in C.

Es gibt auch einen TCP/IP-Stack komplett in Bascom. Sogar fein 
säuberlich erklärt wie alles Funktioniert und leicht anzupassen. Inkl. 
kleinem Webserver und "Treiber" für einen RTL8019AS: 
http://members.home.nl/bzijlstra/software/examples/RTL8019as.htm

Gruß
Dominique Görsch

von Bastler (Gast)


Lesenswert?

>Davon habe ich nicht geredet, sondern von Funktionspointern.
>Funktionspointer (Callbacks) werden in größeren Programmen sehr häufig
>benötigt.


Bascom ist sehr maschinennah! Natürlich kannst du auch Adressen direkt 
anspringen und manipulieren was dann einem Funktionspointer entspricht. 
Du kannst auch mitten im Code Assembler Code einfügen.
Aber gewöhnlich ist der Pointer Kram in Bascom garnicht notwendig, was 
die größte Fehlerquelle der C-Programmierer vermeidet

von Simon K. (simon) Benutzerseite


Lesenswert?

Bastler wrote:
> Bascom ist sehr maschinennah!

Ja ne, is klar.
Maschinennah heißt nicht, dass Inline Assembler möglich ist. Also Print 
"Hallo" finde ich nicht gerade sehr maschinennah.

von Sergey (Gast)


Lesenswert?

Wenn jemand mal versucht hat, mit einem 12F675/etc Video-Signale zu 
erzeugen, weiss genau, dass es hier auf den letzten CPU-Cycle ankommt, 
damit das Timing stimmt.

Da geht kein BASIC! Auch bei einem Software-UART geht kein BASIC (es sei 
denn, dieses hat effiziente ASM-Librarys eingebaut).

Ausschnitt einer Video-Generator Routine
1
      ......
2
      RLF    GPIO,F    ;ROTATE BIT 6 OUT OF CARRY
3
      RLF    INDF,W    ;ROTATE BIT 7 INTO CARRY
4
      RLF    GPIO,F    ;ROTATE BIT 7 OUT OF CARRY
5
      BCF    GPIO,0
6
      BTFSC  LINECTR,2    ;CHECK IF ON 5TH LINE
7
      BSF    GPIO,0    ;MAKE A SEPARATOR DOT
8
      NOP          ;MAKE DOT SAME SIZE
9
      BCF    GPIO,0    ;REMOTE THE DOT, IF ANY ;;22 INSTRUCTIONS... 4.4 US
10
      BTFSC  FSR,1    ;SKIP IF DATE OUTPUTED
11
      GOTO  PUTTIME
12
      INCF    FSR      ;NEXT VRAM LOCATION
13
      .....

Wenn man solche Realtime Anwendungen macht, dann muss man ASM 
programmieren.
Mit Realtime meine ich Mikrosekunden! Der Vorteil ist jener, dass der 
Programmierer selbst optimieren kann. Man muss einen Kompromiss zwischen 
Geschwindigkeit (CPU-Cycle) und Speicherbelegung (RAM, ROM) machen.

Vor allem, da man in einem 12F675 keinen Hardware-Shifer (SPI) oder 
andere HIlfsmittel hat.
Ausserdem muss man mit dem RAM (64 Bytes) und dem ROM/Flash (1K Words) 
auskommen.

Wenn man nur Taster abfragt, ist das egal, oder wenn man Aufgaben, die 
mit 5 MIPS zu schaffen sind auf einem ARM7TDMI macht.

Man sollte den MCU nicht als "Blackbox" betrachten!

von Gast (Gast)


Lesenswert?

>Wenn jemand mal versucht hat, mit einem 12F675/etc Video-Signale zu
>erzeugen, weiss genau, dass es hier auf den letzten CPU-Cycle ankommt,
>damit das Timing stimmt.


Sicherlich sind solche Spezialanwendungen nur mit etwas Assemblercode 
machbar, das will keiner bestreiten. Aber es spricht ja nix dagegen das 
man solchen Code in ein Bascom Programm einbettet. Es gibt übrigens 
sowas schon für Bascom!

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Sprache hin -- Sprache her.

Im Endeffekt sind sie gleich mächtig. In der Sinne, daß beide ebenso 
mächtig sind wie Turing-Maschinen ;-)

Soviel zur Theorie.

In der Praxis will man die Resourcen der Hardware möglichst gut nutzen, 
also nicht unnötig Platz und Zeit vertrödeln.

Wie ein Programm umhgesetzt wird, ist nur soweit an die Sprache 
gebunden, wie diese spezifiziert ist. Darüber hinaus bleibt viel Raum, 
dichten und/oder schnellen Code zu finden. Er muss nur genutzt werden.

Wenn man BASCOM mit avr-gcc vergleicht und schaut, was beide aus
1
i := i-1
machen, dann braucht gcc idR dazu 2 Takte und maximal 4 Bytes Code, 
während BASOM einen Call(!) macht
1
  LD  ZL,X+
2
  LD  ZH,X
3
  SBIW  ZL,0x0001
4
  ST  X,ZH
5
  ST  -X,ZL
6
  RET
weil es Werte nie in Registern hält, sondern nur auf einem eigenen 
Soft-Stack operiert.

Allein die Laufzeit des BASCOM-Codes wäre ein absolutes Killerkriterium 
in vielen meiner Applikationen.

Beispiel 1

6 Nixie-Röhren (jede braucht 4 Ports) hängen nebst Lautsprecher etc an 
einem SPI-Bus mit 4 Expandern 74*595. Per 20kHz bzw alle 800 Ticks 
müssen 4 Bytes gesandt werden. Das Senden ist kein Problem, das macht 
die Hardware. Aber über den SPI läuft für jede Kathode ne Soft-PWM zum 
Dimmen/Überblenden, und die Daten müssen für jeden Frame neu berechnet 
werden. Selbst eine Verspätung von einem Främe lässt die Röhren zappeln.

Beispiel 2

Eine Uhr hat zur Anzeige eine 3*(9 LED + 1 Taster) Matrix. Die LEDs 
werden per Soft-PWM angesteuert. In einer PWM-Lücke wird eine LED-Zeile 
als Photodioden geschaltet und die Umgebungshelligkeit gemessen, um den 
LEX-Helligkeit an die Umgebungshelligkeit anzupassen.

Beispiel 3

Pixel auf ne Oszi-Röhre pinseln. Die erreichbaren Pixel/Sekunde
kann man sich aufteilen in Pixel/Frames * Frames/Sekunde, also 
Bildauflösung * Zeitauflösung. Je mehr, desto besser. avr-gcc schafft 
bei einem ATmega88@24MHz 32000 Pixel/Sekunde. Wieder ist das Ding nicht, 
die Pixel zu setzen, sondern in Echtzeit zu berechnen (Vektorfonts, 
Linien, Kreise, Fraktale, Morphing).

Ergo

Vom Peis-Leistungs-Verhältnis sehe ich keinen Grund für BASCOM, 
zumindest was den erzeugten Code angeht. Es scheint so programmiert, wie 
ein unbescholtener Ingenieur sich einen Compiler vorstellt: Jedes 
Hochsprach-Element wird in eine bestimmte, vordefinierte 
Assembler-Sequenz abgebildet. Fertig.

Kann man breiten Code durch nen immer fetteren AVR kompensieren, ist man 
bei der Geschwindigkeit fix am Deckel. Und warum soll ich nen 
ARM/i386/TriCore/PPC nehmen, wo ein AVR reicht? C-Code kann ich so 
schreiben, daß er ebenso auf dem PC wie auf nem AVR-Winzling läuft. 
Komplexere Software fang ich auf dem PC an und hab dort die volle Power 
von Grafik uns Analysetools, was ich in nem Simulator nicht hätte.

Was an BASCOM nett zu sein scheint sind die ganzen Bibliotheken und daß 
es vielen den Einstieg in die µC-Welt einfach macht und nicht gleich 
abschreckt. Allerdings gibt's auch genug Teenager, die ihren Asuro in C 
proggen.

Was mir schleierhaft ist, ist daß BASCOM noch nichtmal schafft, 
komplexere Ausdrücke zu verarbeiten. Sowas bringt ein simpler, frei 
verfügbarar Parser wie bison frei Haus, und der erzeugte Code muss 
dennoch nicht unter die GPL. Mir scheint, da hat wer seine Hausaufgaben 
nicht gemacht...

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
Noch kein Account? Hier anmelden.