Forum: Mikrocontroller und Digitale Elektronik Welches Avr-Basic?


von Andreas Schath (Gast)


Lesenswert?

Hallo,

meine Elektronikprojekte waren bisher rein analog und arbeite mich 
gerade mit Mikrocontrollern ein. Zur Programmierung suche ich einen 
Basic-Dialekt, da hier bereits vom PC Erfahrungen vorliegen. Gefunden 
habe dazu:

  - mikroBasic von Mikrolektronika: http://www.mikroe.com
  - Bascom von Mcselec: http://www.mcselec.com
  - Luna (freies Projekt): http://avr.myluna.de

Welche Erfahrungen habt ihr persönlich zu den genannten Varianten und 
welche Empfehlung würdet ihr aussprechen, wenn es auch für 
anspruchsvollere Projekte genügen soll? Ob kostenpflichtig oder nicht 
spielt dabei eine untergeordnete Rolle.

ich freue mich über Meinungen dazu,
Andreas

von Ralph (Gast)


Lesenswert?

Lass das mit Basic und geh direkt auf "C" , da wirst du auf Dauer 
sowieso landen.

von xy (Gast)


Lesenswert?

Schwachsinn auf C zu gehen.

Nimm mikroBasic von Mikrolektronika,
Kann ich nur empfehlen.
Ansonsten, lad dir die Demos runter
und probiere aus, mit welcher du am
besten zurecht kommst.

von ab und an bascom-er (Gast)


Lesenswert?

Hier wirst du keine andere Antwort bekommem, eher hier 
http://bascom-forum.de
Du kannst mit C Mist programmieren und kannst mit Basic sauberen Code 
schreiben.
Aber genauso kannst du Katholiken, Protestanten, Muslime, .... nach der 
wahren Religion fragen ....

von Andreas Schath (Gast)


Lesenswert?

Hallo,

mich interessieren tatsächlich nur persönliche Erfahrungen bezüglich der 
genannten Varianten.

Gruß, Andreas

von Lerner (Gast)


Lesenswert?

Nachdem ich mit BASCOM abgekotzt hatte, habe ich C gelernt. Das hab ich 
nie bereut!

Ich kenn niemand, der mit C abgekotzt hat und dann Basic gelernt hat.
Ich schreibe das hier natürlich, um Widerspruch zu provozieren und damit 
solche Fragen hier niemals aufhören mögen.

von Andreas Schath (Gast)


Lesenswert?

Nachtrag: ich möchte die Fragestellung mal konkretisieren:

 - Welche Möglichkeiten habe ich zur Formulierung von Ausdrücken, oder 
gibt es Einschränkungen?
 - Welche Modularisierungsmöglichkeiten gibt es?
 - Welche Möglichkeiten habe ich zur Bitmanipulation und Direktzugriff 
auf die Hardware?

Wie sieht das am Beispiel in eurer Lieblingssprache aus?

Gruß, Andreas

von Tutor (Gast)


Lesenswert?

Andreas Schath schrieb:
> - Welche Möglichkeiten habe ich ....

Lieber Andreas,

diese Fragen werden selbst in schlechten Tutorials einigermassen 
beantwortet. Du müsstest halt mal danach suchen und das dann auch lesen.
Wenn du das nicht schaffst, dann wirst du mit keiner Sprache 
weiterkommen, denn suchen und lesen wirst du immer müssen.

von Andreas Schath (Gast)


Lesenswert?

Tutor schrieb:
> Andreas Schath schrieb:
>> - Welche Möglichkeiten habe ich ....
>
> Lieber Andreas,
>
> diese Fragen werden selbst in schlechten Tutorials einigermassen
> beantwortet. Du müsstest halt mal danach suchen und das dann auch lesen.
> Wenn du das nicht schaffst, dann wirst du mit keiner Sprache
> weiterkommen, denn suchen und lesen wirst du immer müssen.

Hallo Tutor,

ja, die Dokumentationen sind für alle Genannten umfangreich vorhanden 
Die kann ich auch alle drei von a bis z an gemütlichen Abenden 
durchackern. Sie ersetzen aber keine persönlichen Erfahrungen der 
Anwender zu ihrer jeweiligen Lieblingsvariante. Darüber hoffe ich mehr 
zu erfahren um dann bspw. auch an Denjenigen eine Frage stellen zu 
können.

Gruß, Andreas

von Stefan (Gast)


Lesenswert?

Was hindert dich daran, die Demos runter
zu laden und es selber aus zu probieren ?
Die beste Erfahrung ist immer noch die Eigene.

von Steffen W. (derwarze)


Lesenswert?

Ich mache gerade die 'kleineren Sachen' gern in Bascom da man schnell 
zum Ergebniss kommt. Vieles  was man sich in C erst zusammensuchen oder 
bauen muss ist in Bascom recht einfach mit vorhandenen Befehlen möglich 
(ZB. LCD Display in Text und Grafik, IR-Senden/empfangen) auch der 
Zugriff auf die Hardware ist recht einfach, entweder mit den Befehlen 
oder direkter Registermanipulation und nicht zuletzt hilfreich, 
Bitvariablen die auch einzelnen Ein/Ausgängen zugeordnet werden können.
Schwachpunkte sind die dort umständliche Mathematik da keine 
Kettenoperationen gehen und in Abfragen auch keine Rechnungen (wie zb 
ist X< y-2 dann ) gemacht werden können. Der etwas grössere Code der im 
Vergleich zu C ererzeugt wird ist meist zu verschmerzen. Bei geschickter 
Programmierung ist der in der Regel auch nicht langsamer als das gleiche 
in C.
Für zeitkritische Anwendungen, oder schnelle Regelungen ist Bascom aber 
nichts, aber dafür muss man auch in C schon recht fit sein.
Zum Lernen der Grundlagen und für gelegentliche 'Hobbyprogrammiererei' 
ist es aber recht gut geeignet, zumal man das erlente Grundlagennwissen 
über Programmierung dann auch beim Umstieg auf C nutzen kann.
Wenn Du aber vorhast mehr als die 8Bitter zu nutzen und auch auf ARM und 
komplexere Programme aus bist dann nimm lieber gleich C.

von Andreas Schath (Gast)


Lesenswert?

Stefan schrieb:
> Was hindert dich daran, die Demos runter
> zu laden und es selber aus zu probieren ?
> Die beste Erfahrung ist immer noch die Eigene.

es hat mich nichts gehindert Stefan. Ich habe tatsächlich alle drei 
Pakete heruntergeladen. Alle drei bieten eine IDE und rein 
optisch/funktionell stechen mikroBasic und Luna hervor. Dies ist doch 
aber nur ein subjektiver Eindruck. Ich habe ja nun keine Projekthistorie 
mit den genannten Sprachen. Persönliche Einschätzungen finde ich sehr 
interessant und helfen mir schlussendlich abzuwägen.

Gruß, Andreas

von Zee (Gast)


Lesenswert?

Alleine das hier schreckt mich vom Basic ab:

> BASCOMAVR  BASCOM-AVR BASIC Compiler für Atmel AVR Controller   79,00 €

Und c hat den Vorteil, das es für fast jeden Controller und jedes System 
C Compiler gibt.
Also muss man nur eine Sprache erlernen :-)

von Stefan (Gast)


Lesenswert?

Dann würde ich mal ein kleines Programm
auf alle drei Programmieren und schauen
womit man am beste zurecht kommt.
Ich benutze selber MikroBasic für PICs.
Komme damit sehr gut zurecht. Und wenn es wirklich
mal zeitkritsch wird, dann kann man immer noch auf
Assemnler ausweichen und es dort einbinden.

von Andreas Schath (Gast)


Lesenswert?

Hallo Steffen,

vielen Dank für deine Einschätzung!
Es beschränkt sich tatsächlich nur auf die 8-Bitter. Bezüglich 
Programmierung bringe ich Erfahrungen mit, insofern ist "besonders 
einfach" mit einem geringeren Stellenwert verbunden. Meine Projekte 
zielen nach der Lernphase auf mehr ab als nur ein paar Leds blinken zu 
lassen.

Du schreibst

> keine Kettenoperationen gehen und in Abfragen auch keine Rechnungen
> (wie zb ist X< y-2 dann ) gemacht werden können.

wie genau stellt sich das dar? ist das eine generelle Einschränkung oder 
bezieht sich das nur auf Kalkulationen?

Gruß, Andreas

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

Schau mal bei allen 3 von Dir genannten Compiler Anbieter in die Foren. 
Dann weisst Du wo Du im Ernstfall Unterstützung findest.

mikroBasic:
Hier werden hauptsächlich PIC's unterstützt, Atmel Prozessoren führen 
offensichtlic ein Schattendasein.
Umständliche Programmierung im Gegensatz zu BASCOM.

BASCOM
Breite Unterstützung in diversen deutschen und englischen Foren.
Meiner Meinung nach der beste Basic-Compiler.

LunaAvr
Unterstützung nur im Forum des Entwicklers.
Aber ein sehr interessanter Compiler der sehr viele Vorteile gegenüber 
BASCOM oder mikroBasic bietet. Befindet aber noch in der (recht 
stabilen) Entwicklungsphase und bietet noch nicht so viele Libraries wie 
BASCOM oder mikroBasic.

Ich selber könnte zwar in C programmieren, tue mir das aber für meine 
Hobbyzwecke nicht an. Mein Favorit war bisher BASCOM, aber neuere 
Projekte realisiere ich bevorzugt mit LunaAvr.
Frontends auf dem PC schreibe ich in Delphi (Pascal).

Bevor Du Dich für Dein Hobby zu C überreden lässt schau Dir mal zuerst 
diesen Link an:
http://www.henning-thielemann.de/CHater.html

von bascomer (Gast)


Lesenswert?

Ich bin Anfänger und wollte nur meine kleinen Projekte auf AVR zum 
Laufen kriegen. Habe mir die Demo von mcs runtergeladen und angefangen. 
Ging sehr leicht und nach 2 Stunden war das erste kleine Programm 
geflashed.

Direkter Zugriff auf HW - kein Problem, sogar mit den Registernamen aus 
dem Datenblatt. Zeitkritische Programmteile, wie manche ISR sind sehr 
sehr leicht als Assembleranweisungen in der BASIC Source unterzubringen.

IDE finde ich sehr leicht handhabbar. Code schreiben, kompilieren, 
flashen,  Fuseeinstellungen sehr einfach, brauchbarer Simulator - alles 
mit ein paar Buttondrücken erledigt.

Demo ist auf 4kByte kompilierten Maschinencode begrenzt. Mehr kostet 
dann Geld. Info auf der MCS Seite.

Zum Ausprobieren auf jeden Fall empfehlenswert.

von Chris (Gast)


Lesenswert?

Great Cow Basic wäre auch noch zu nennen.

von amateur (Gast)


Lesenswert?

@Albert

Also ist Modula wirklich die beste Programmierumgebung für AVR's - wau!

von bascomer (Gast)


Lesenswert?

amateur schrieb:
> @Albert
>
> Also ist Modula wirklich die beste Programmierumgebung für AVR's - wau!

@amateur: Es gibt keine "beste Programmierumgebung". Wer sollte das 
festlegen?

von Andreas Schath (Gast)


Lesenswert?

vielen Dank für eure Meinungen, sehr interressant.

mikroBasic scheint tatsächlich vorwiegend für pic verwendet zu werden. 
insofern neigt sich die Tendenz Richtung Bascom und Luna.

Albert: Deine Ausführungen sind schon sehr detailliert, danke dafür. 
Einer meiner Anforderungen ist beispielsweise die Verarbeitung von Daten 
die von einem externen Peripheriegerät kommen. Dies zumeist seriell 
angebunden. Nehmen wir an hierbei sind Datenpakete zu verarbeiten, 
welche unterschiedliche Datentypenkombinationen beinhalten (binär), 
z.bsp. zwei Integer32, ein Fließkommawert und ein String in Paketen zu 
je 32 Byte. Wie sähe hier der Zugriff auf ein empfangenes Paket in 
Bascom und Luna aus?

Luna ist wie es aussieht noch ein junges Projekt mit kleinerer 
Community. Dennoch bin ich hier tatsächlich aufgeschlossen und schaue 
mehr auf das Sprachpotential. Bezogen auf mein Anforderungen ist das für 
mich also kein Ausschlusskriterium.

Gruß, Andreas

von C_was_sonst_? (Gast)


Lesenswert?

Warum wurde Linux, Windows, ... nicht in BASIC entwickelt?

Je tiefer man in die Materie einsteigt, desto eher nimmt man C oder ASM. 
Zum Einstieg mag Basic putzig sein, aber wenn es ernst wird?

von bascomer (Gast)


Lesenswert?

C_was_sonst_? schrieb:
> Warum wurde Linux, Windows, ... nicht in BASIC entwickelt?

Damit Linux nur von Liebhabern verwendet wird und Windows immer noch am 
Sicherheitslücken stopfen ist.

C_was_sonst_? schrieb:
> Zum Einstieg mag Basic putzig sein, aber wenn es ernst wird?

OK. Muß aber schon sehr ernst werden und da wäre mir sowas wie Modula 
schon lieber, wenn es das für AVR geben würde. Werde demnächst mal das 
Pascal ausprobieren.

von bascomer (Gast)


Lesenswert?

Andreas Schath schrieb:
> Dies zumeist seriell
> angebunden. Nehmen wir an hierbei sind Datenpakete zu verarbeiten,
> welche unterschiedliche Datentypenkombinationen beinhalten (binär),
> z.bsp. zwei Integer32, ein Fließkommawert und ein String in Paketen zu
> je 32 Byte. Wie sähe hier der Zugriff auf ein empfangenes Paket in
> Bascom und Luna aus?

BASCOM: Egal ob parallel oder seriell. Es läuft kein Bertriebssystem und 
man verarbeitet die Daten in der Regel byteweise. zB von der seriellen 
Schnittstelle byteweise abholen, verarbeiten und den entsprechenden 
Variablen (float, string, etc) zuweisen. Ist Sache des Programmierers.

Doku kann auch als separat ohne Programm von MCS runtergeladen werden.

von Alex We... (Gast)


Lesenswert?

Andreas Schath schrieb:
> mich interessieren tatsächlich nur persönliche Erfahrungen bezüglich der
> genannten Varianten.

Ich bin von C auf Bascom umgestiegen, weil viele vorgefertigte Routinen 
nur ein einfaches "config xx" brauchen. Z.B. beim LCD ists ganz einfach! 
Mit 4 Zeilen Code kannste schon nen Text ausgeben...

von Stefan (Gast)


Lesenswert?

MikroBasic für AVR gibt es erst seit ein paar Monaten.
Aber wird immer beliebter.
Da wird die Zukunft zeigen wie gut es wird.

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

Stefan schrieb:
> MikroBasic für AVR gibt es erst seit ein paar Monaten.
> Aber wird immer beliebter.
> Da wird die Zukunft zeigen wie gut es wird.

Nein, mikroBasic gibt es seit vielen Jahren. Du meinst wohl LunaAvr.

von Andy (Gast)


Lesenswert?

Wenn Basic, würde ich Bascom nehmen.
Das wird seit Jahren permanent unterstützt und weiterentwickelt und es 
gibt eine riesige Anwendergemeinde und einen guten Support.

von Basic Instincts (Gast)


Lesenswert?

Andy schrieb:
> es gibt eine riesige Anwendergemeinde und einen guten Support.

Zum Glück nicht hier im Forum.

von Weingut P. (weinbauer)


Lesenswert?

Andreas Schath schrieb:
> Einer meiner Anforderungen ist beispielsweise die Verarbeitung von Daten
> die von einem externen Peripheriegerät kommen. Dies zumeist seriell
> angebunden. Nehmen wir an hierbei sind Datenpakete zu verarbeiten,
> welche unterschiedliche Datentypenkombinationen beinhalten (binär),
> z.bsp. zwei Integer32, ein Fließkommawert und ein String in Paketen zu
> je 32 Byte. Wie sähe hier der Zugriff auf ein empfangenes Paket in
> Bascom und Luna aus?

mit Luna kenn ich mich nicht aus, aber in Bascom hab ich derlei schon 
programmiert, geht sogar recht einfach.

Zum Einen empfängt die UART generell nur Bytes, die schreibt man einfach 
nacheinander in ein Array rein, das man vorher Dimmensioniert.

Dim Empfangsarray (20) as Byte
dim Empfangspointer as byte

In der UART-Interruptroutine schreibt man die Daten in das Array

incr Empfangspointer
Empfangsarray(Empfangspointer) = UDR

Jetzt kommt der Clue an der Geschichte, die Overlayvariablen.
Die Dimemnsioniert man direkt nach dem Ringpuffer z.B.

dim byte_absender as byte at Empfangsarray+1
dim byte_empfaenger as byte at Empfangsarray+2
dim byte_kommando as byte at Empfangsarray+3
dim int_uebergabewerte(2) as inetger at Empfangsarray+4 ' 2 
Integervariablen
dim word_uebergabewerte(2) as word at Empfangsarray+8
dim byte_crc8 as byte at Empfangsarray+12

auf diese Art hat man 2 Variablen, die auf den gleichen RAM-Bereich 
verweisen. Die serielle Schnittstelle empfängt irgendwas, schreibt das 
in den Puffer und wenn der Empfang abgeschlossen ist kann ich einfach 
auf die jeweiligen Werte direkt zugreifen und die weiter verarbeiten ... 
mach ich so bei Modbus-RTU. Ist eine der größten Stärken von Bascom aus 
meiner Sicht.

von Mo (Gast)


Lesenswert?

Hallo Andreas,

hier ein recht gut zusammenfassender Erfahrungsbericht zu Luna:
http://www.avr-praxis.de/forum/showthread.php?2685-Erfahrungen-zu-LunaAVR

mikroBasic habe ich selbst auf Arbeit testen dürfen. Qualitativ als gut 
zu bewerten, jedoch waren wir schlussendlich weniger Überzeugt. Die 
Vorteile eines Basic-Dialekts liegen für viele Programmierer in der 
guten Lesbarkeit und Übersichtlichkeit, hier ist die Verwaltungsstruktur 
der Projekte und der Aufbau etwas kryptisch aus unserer Sicht. Das macht 
keinen Unterschied zu C. Dennoch professioneller als Bascom.

Was dein Anwendungsbeispiel betrifft:

in Bascom lädtst du solche Daten vorzugsweise in ein Array und musst 
dann mit Overlay-Zuweisungen arbeiten. Die Werte müssen dann z.T. in 
extra angelegte Zielvariablen transferiert werden. Es funktioniert, ist 
aber unübersichtlich.

In Luna kannst du hier aufgrund des Objektmodells entweder einen 
Speicherblock allozieren und dann mit entsprechenden Funktionen direkt 
auf die Datentypen zugreifen, oder du deklarierst eine Struktur. In 
beiden Fällen kannst du die Daten direkt weiterverarbeiten.

Mo

von Andreas Schath (Gast)


Lesenswert?

verstehe, wenn ich also Daten in Bascom strukturiert anfassen möchte, 
arbeite ich mit overlay-definition. in Luna wäre das dann z.bsp. ein 
Memoryblock wenn ich das richtig erfasse, also durch die vom Memoryblock 
generell vorhandenen Zusatzfunktionen wie xy.bytevalue()?

Weiter oben wurde erwähnt, dass man in Bascom nicht direkt in einer 
if-abfrage rechnen kann. trifft das hier auf Luna auch zu?

Gruß, Andreas

von Fabian O. (xfr)


Lesenswert?

Fhutdhb Ufzjjuz schrieb:
> dim byte_absender as byte at Empfangsarray+1
> dim byte_empfaenger as byte at Empfangsarray+2
> dim byte_kommando as byte at Empfangsarray+3
> dim int_uebergabewerte(2) as inetger at Empfangsarray+4
> dim word_uebergabewerte(2) as word at Empfangsarray+8
> dim byte_crc8 as byte at Empfangsarray+12

Und das soll schön sein?

In C sieht das so aus:
1
struct paket {
2
  uint8_t  absender;
3
  uint8_t  empfaenger;
4
  uint8_t  kommando;
5
  int16_t  uebergabewerte[2];
6
  uint16_t uebergabewerte_u[2];
7
  uint8_t  crc8;
8
};

Ganz ohne von Hand zählen zu müssen, an welcher Stelle die Variablen 
stehen.

von Mo (Gast)


Lesenswert?

Andreas: ja, wie gesagt aber auch Strukturen möglich. Ich finde das auch 
nicht besonders elegant gelöst in bascom.

Anhand von Fabians Beispiel in C sähe das in Luna so aus:
1
struct paket
2
  byte     absender
3
  byte     empfaenger
4
  byte     kommando
5
  integer  uebergabewerte(2)
6
  word     uebergabewerte_u(2)
7
  word     crc8
8
endstruct

lässt sich dann auch als Array dimensionieren wenn du mehrere Pakete 
parallel verarbeitest:
1
dim pkt(3) as paket
2
3
select case pkt(0).empfaenger
4
case 0
5
  select case pkt(0).kommando
6
  case CMD_1
7
  ...
8
  endselect
9
case 1
10
...
11
default
12
 'unbekannter absender
13
endselect

Mo

von Andreas Schath (Gast)


Lesenswert?

Vielen Dank für die Beispiele und eure Meinungen.

 Die gezeigte Variante mit Luna erscheint mir tatsächlich eleganter und 
wirkt professioneller. Zudem zielt es recht treffend auf meine Anwendung 
hin.

Gruß, Andreas

von Andreas Schath (Gast)


Lesenswert?

Ich habe mich jetzt parallel eingehend mit Bascom beschäftigt. Meine 
Einschätzung dazu ist:
Mein Testprogramm lief einwandfrei, die Konfiguration ist für mein 
Empfinden jedoch etwas unübersichtlich gelöst. Sie resultieren zum Teil 
in langen Config-Ketten. Die Strukturierung mittels Overlay funktioniert 
zuverlässig, ist aber auch hier nicht ganz so elegant. Unterprogramme 
und Variablennamen müssen von Anfang an gut überlegt vergeben werden, 
damit es nicht zu Kollisionen kommt. Weiterhin ist die 
Speicheraufteilung mittels framesize und stacksize undurchsichtig. Hier 
vermisse ich eine grafische Übersicht wie im Reportfenster bei Luna. 
Eine Modularisierung ist syntaktisch nicht möglich (geschlossene 
bereiche für Namensvergabe). Wenn ich Fallabfragen vornehme, muss ich 
z.T. neue Variablen erzeugen um die Rechnung durchzuführen und auch hier 
war mir neu, dass man nur zwei Parameter verwenden kann. Dies ist wohl 
die Einschränkung die Steffen erwähnte. Einrückungen im Editor muss man 
selbst vornehmen und eine optische Strukturierung vermisse ich auch
hier. Mein Fazit zu Bascom ist: Ein guter Compiler, aber doch sehr 
einfach gehalten. Ich kann hier für mich konstatieren, dass Bascom hier 
meine Erwartungen nicht erfüllt.

Gruß, Andreas

von Weingut P. (weinbauer)


Lesenswert?

der neue Explorer in der 20746 hat schon nochmal einiges gebracht an 
Übersichtlichkeit.
Was noch zu erwähnen wäre, ich hab die Vollversion vor Jahren gekauft, 
bisher waren alle Updates kostenlos, was den Preis schon erheblich 
relativiert.
Stack und Frame iust ein Graus, das stimmt

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

@Andreas

Sehr schön dass Du die Kanten von Bascom durch eigene Versuche erkannt 
hast. Es es schon wichtig, unbenommen von den Meinungen Anderer, sich 
ein eigenes Urteil zu bilden. Du hast es auf den Punkt gebracht. Bascom 
ist ein solider Compiler, hat aber so seine Unzulänglichkeiten.
Das ist auch der Grund warum ich immer mehr zu LunaAVR überschwenke. Da 
ich aus der Delphi(Pascal) Ecke komme und das Luna Sprachkontrukt hier 
grosse Ähnlichkeiten aufweist, bis hin zur Objektorientierung, hatte ich 
keine Probleme mit der Einarbeitung. Inzwischen ist Luna sehr stabil und 
der Sprachumfang absolut ausreichend. Es könnten aber noch einige Libs 
mehr sein, das wird aber sicherlich ziemlich schnell kommen.

von axelr (Gast)


Lesenswert?

Eigentlich schade, das FastAVR http://www.fastavr.conm nicht 
weiterentwickelt wird.
Scheint von Mikroelektronica übernommen worden zu sein und wird als 
MikroBasic(AVR) verkauft, wenn man sich mal die generierten 
Assemblerlistings ansieht, deutet für mich jedenfalls alles darauf hin.

BTW: ich habe mit Fastavr eher viel Erfahrungen sammeln können(müssen), 
um abschliessend sagen zu können, das  - wenn man die Kinderkrankheiten 
kennt - es super einfach ist, auch komplizierte(umfangreich triffts 
besser) Programme zu schreiben.

Ich programmiere seit her parallel in C ( dank dem Forum hier )
und weiterhin in FastAVR für Sachen, die schnell gehen müssen.

Von daher würde ich jetzt mal zu mikroelektronica tendieren. Aber nur 
der Vorgeschichte wegen.

Gruß
Fest
Rutsch
Axelr.

von Steffen W. (derwarze)


Lesenswert?

Andreas Schath schrieb:
>> keine Kettenoperationen gehen und in Abfragen auch keine Rechnungen
>
>> (wie zb ist X< y-2 dann ) gemacht werden können.
>
>
>
> wie genau stellt sich das dar? ist das eine generelle Einschränkung oder
>
> bezieht sich das nur auf Kalkulationen?

In If Then und ähnlichen Abfragen gehen schon mehrere mit zB. mit And 
verknüpfte Abfragen wie ' if x<y and x>z then ' nur leider keine mit 
Rechnungen. also zB ' if x < y+10 and x > y-10 then ' geht nicht, da 
muss man immer eine Variable für jeden Vergleich deklariert sein und die 
Rechnung dazu extra.
Ich weis nicht ob das bei den anderen Basicvarianten auch so ist, kenne 
nur Bascom.
Übrigens gibt es da eine kostenlose Version mit beschränkter Codegrösse, 
für kleinere Projekte meist ausreichend.

von Stefan (Gast)


Lesenswert?

if x < y+10 and x > y-10

In MikroBasic ist sowas möglich.
Muß nur in Klammer gesetzt werden.
Wie gesagt schau ihn dir an und wenn Fragen
sind, frag ruhig.

von Andreas Schath (Gast)


Lesenswert?

@Steffen: ich konnte es mittlerweile nachvollziehen was du damit 
meintest, danke dir
@axelr: Hatte ich bei meiner Recherche ebenfalls vermutet und mich mit 
mikroBasic befasst, fand das Avr-Thema aber stiefmütterlich behandelt, 
wie ja bereits festgestellt wurde.
@albert: Zu diesem Schluss komme ich unterm Strich am Ende auch. Auch 
ich arbeite u.A. auf dem PC mit Delphi. Der ähnliche syntaktische Aufbau 
bei Luna zu modernen objektorientierten Dialekten ist hier sehr 
hilfreich, das kann ich bestätigen. Dennoch habe ich mich dadurch nicht 
beeinflussen lassen und auch Bascom getestet. Bei Luna viel mir die 
Umsetzung meines Testcodes entsprechend leichter. Was man hierbei 
feststellen muss ist, das die mächtigeren Sprachfähigkeiten von Luna 
jedoch schneller zu einer programmierweise verleiten, die den erzeugten 
Code aufblähen können. Hier ist eine intelligentere Auseinandersetzung 
des Programmierers mit dem notwendigen Programmfluss und die Nutzung der 
in Luna verfügbaren Objektmethoden notwendig. Es stellt also höhere 
Ansprüche an den Programmierer. Ich kann mir vorstellen, dass 
langjährige Bascom-Programmierer es schwer haben ihr eingeübtes Schema 
der Aufteilung auf Einzelprozesse aufzugeben und effizientere kompakte 
Formulierungen in Luna zu verwenden. Luna entspricht hier meinen 
Erwartungen fast vollständig, insofern komme ich hier zum gleichen 
Schluss wie du.

Bascom bietet einen Simulator. Dies ist insofern verlockend, als das man 
seinen Code direkt testen kann. Luna besitzt keinen Simulator, was mich 
zuerst verwunderte. In der Realität stellt man bei Bascom dann jedoch 
fest, dass die Simulation tatsächlich nur eine Simulation ist. Ich 
konnte mehrere Fälle produzieren bei denen der Code im Simulator lief, 
aber im Controller abstürzte. Wenn soetwas vorkomen kann, ist diese Art 
der Fehlersuche obsolet, zudem lässt sich nur rudimentäre 
Peripheriehardware simulieren. Bei der Fehlersuche mit Luna stellt man 
fest, dass hier der Fokus auf der Ausgabe über das Terminal liegt. In 
Verbindung mit den vorhandenen Exceptions in Luna konnte ich damit auch 
Speicherverletzungen feststellen. Das direkte Suchen der Fehler auf dem 
Controller halte ich für unverzichtbar. Ein Simulator erscheint mir vor 
diesem Hintergrund tatsächlich für überflüssig. Ich konnte alle Fehler 
in angemessener Zeit ermitteln.

Gruß, Andreas

von Joe (Gast)


Lesenswert?

Luna bleibt auch für große Projekte kostenlos.

Mathematische Terme wie a=b*(c+d) werden in Luna genauso geschrieben.

In Bascom (nur bis 4k-Byte kostenlos):

a=c+d
a=a*b

und in C++ hat mich schon immer die Syntax gestört

Joe

von Oliver S. (oliverso)


Lesenswert?

Joe schrieb:
> und in C++ hat mich schon immer die Syntax gestört

Die wäre in deinem Beispiel

a=b*(c+d);

Da steht halt noch ein Semikolon am Ende.

Oliver

von furtiburb (Gast)


Lesenswert?

Oliver S. schrieb:
> Joe schrieb:
>> und in C++ hat mich schon immer die Syntax gestört
>
> Die wäre in deinem Beispiel
>
> a=b*(c+d);
>
> Da steht halt noch ein Semikolon am Ende.
>
> Oliver

Der Rest ist dann aber doch völlig anders. Der TO hat doch mit seiner 
Fragestellung ausdrücklich C ausgeschlossen. Manche der Beiträge 
bezüglich C wirken durchaus missionarisch. C ist heutzutage nicht mehr 
das Nonplusultra. Die Welt ist bunt, hoffen wir dass irgendwann nicht 
alles gleichgeschaltet ist bei den Programmiersprachen.

Schöne Feiertage wünsche ich :)

Gruß, FurtiBurb

von visitor (Gast)


Lesenswert?

Fang doch einfach mit Lunar an! Da es kostenlos ist und ohne 
Einschränkungen zur Verfügung steht.
Nach dem Du die ersten Versuche gemacht hast, wirst du sehen, ob es für 
deine Zwecke ausreichend ist oder nicht. Solange du "normale" Basic 
Algo´s verwendest, kannst du dir diese bei Bascom bzw. MicroBasic 
abschauen und in Lunar umsetzen.
Und so lange du bei einem Basic Dialekt bleibst ist auch der Umstieg auf 
Bascom bzw. MikroBasic nicht so schwer. Diese bieten sicher die besseren 
vorgefertigten Funktionen.

Ich denke nach dem ersten Projekt wirst du selbst sehen, ob Basic für 
dich das Richtige ist oder ob du den Schritt nach C wagst.

Merke: Die beste Programmiersprache ist immer die, mit der man selbst am 
besten zurecht kommt!

von Rainer (Gast)


Lesenswert?

ich habs probiert source von Luna nach mein Bascom zu übersetzen.. geht 
gar nicht! ich müsste zigfache funktionen nachbilden und dann kann man 
auch diese klassen nicht umbauen, da gibts immer doppelte namen 
Fehlermeldung!

von mmhh (Gast)


Lesenswert?

Rainer schrieb:
> ich habs probiert source von Luna nach mein Bascom zu übersetzen.. geht
> gar nicht! ich müsste zigfache funktionen nachbilden und dann kann man
> auch diese klassen nicht umbauen, da gibts immer doppelte namen
> Fehlermeldung!

wozu sollte man soetwas tun?
ist mir unbegreiflich

frohes Fest!

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.