- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: BASCOM Pros und Cons - aus meiner (!) Sicht

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    25.10.2004
    Ort
    Pinneberg
    Alter
    64
    Beiträge
    48

    BASCOM Pros und Cons - aus meiner (!) Sicht

    Anzeige

    Praxistest und DIY Projekte
    Zunächst eines vorneweg:
    Ich habe wirklich überlegt, ob ich dieses Posting ashängen soll oder nicht, da wir uns aber nicht am Stammtisch bei einem geistreichen Getränk darüber austauschen können, blelbt mir kein anderer Weg.

    Ich habe jetzt hier ein paar Mal ein paar Fragen zu Bascom gepostet und in der Regel schnell und freundlich hilfreiche Antworten bekommen. Allerdings scheinen sich jedesmal auch einige Gegner dieses Programms dazu berufen zu fühlen, mehr oder minder vernichtende Kommentare zu diesen Aspekten abzugeben.
    Ich möchte jetzt einfach mal ein paar Punkte aufführen, die mir beim Umgang mit Bascom aufgefallen sind:
    1. Zunächst einmal halte ich dieses für ein sehr preiswertes und ziemlich komplettes Werkzeug. das es auch Anfängern in der uC-Programmierung ermöglicht recht schnell zu Erfolgen zu kommen.
    2. Ich habe in der Vergangenheit ein paar Fragen gestellt oder Statements abgegeben, die bei sehr (!) sorgfältiger Suche in der BASCOM-Hilfe überflüssig gewesen wären. Ich selbst bin ein Vertreter der RTFM-Mentalität, wobei meine Kunden es noch viel doller treiben, aber ich (!) bin der Ansicht, dass die BASCOM-Hilfe nicht immer ganz konsistent ist. Ich bin es gewohnt, meine Fragen über die Suche nach entsprechenden Stichwörtern im Hilfe-Index zu lösen. Sucht man beispielsweise zum Thema logische Operatoren etwas, so ist im gesamten Index keine Referenz zu "Operators", "Logical", "AND", "OR", "NOT"....
    Diese sind zwar beschrieben, aber nicht indiziert. Da gibt es meines Erachtens etwas Nachbesserungsbedarf.
    3. Variablen-Initialisierung
    Ich hatte vor kurzem ein Aha-Erlebnis hinschtlich der Variablen-Initialisierung:
    Ich habe eine Stringvariable deklariert und dieser einen zusammengesetzten Wert zugewiesen, also z.B.
    CONST Vers_Info = "0.1"
    DIM Teststring AS STRING *15
    Teststring = "Version " + Vers_Info
    Wenn ich diesen Teststring per I2C an das RNKEYLCD-Board sende, erscheint im Display
    Version 0.1 ''''''
    (eigentlich waren es keine Hochkommata, sondern hochgestellte Punkte), d.h. es wurde nicht nur der Teststring ausgegeben, sondern noch ein bisschen Datenmüll.
    Das einfache Einfügen von
    Teststring =""
    als Initialisierung vor der eigentlichen Wertezuweisung behob dieses Phänomen.
    Ich habe im Übrigen zu diesem Verhalten schon in der Hilfe nachgesehen - aber nichts entdecken können.

    So, das musste jetzt mal raus. Ich hoffe, dass ich jetzt keinen Flamewar angezettelt habe, aber was soll ich machen ohne Stammtisch?

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ob das hier ein Massaker wird, wird sich herausstellen. Eigentlich würd' ich mich dir voll anschliessen.
    "Help" ist offensichtlich hauptsächlich dazu da, Details zu etwas nachzusehen, nicht sosehr, es überhaupt zu finden. Persönlich helfe mir bei irgendwelchen Programmen dadurch, daß ich immer wieder zweckfrei im Help herumstöbere und dadurch einen gewissen Überblick gewinne. Aber das tue ich eigentlich auch bei jedem Wörterbuch oder Lexikon.

    Dein Beispiel muß man sich genauer anschauen. Eigentlich löscht Bascom den kompletten SRAM, d.h. deine initalisierung hätte auch ohne = "" klappen sollen. Vielleicht kannst du deine Source mal attachen
    Wenn's ein Bug ist, werden wir das den Leuten um die Ohren hauen, die freuen sich auf sowas. Programm wie Bascom haben immer Fehler, die halt nicht immer gleich auffallen.
    Vielleicht magst du ein bißchen hier stöbern,
    https://www.roboternetz.de/wiki/pmwi...in.Bascomstack
    ist vieles noch Baustelle, aber irgendwo fängt man halt an
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Zu 1.: Da stimme ich zu. Ich habe noch kein Tool vermisst. Es ist alles dabei was man braucht. Sogar ein Simulator.

    Zu 2.: Die Hilfe finde ich auch brauchbar. Schön ist es, das man auf einen Befehl gehen kann und nur F1 drücken muss um die Hilfe direkt zum Befehl zu bekommen.
    Spätestens mit der Indexsuche habe ich immer alle sgefunden was ich gesucht habe.
    Ob der Inhalt der Hilfe brauchbar ist, liegt immer an jedem selbst. Ich finde nicht alle Erklärungen sinnvoll. Andere sind da sicherlich anderer Meinung. Das ist halt einer der Punkte, die uns Menschen unterscheiden.

    Zu deinem Problem:
    Als was hast du denn Vers_Info dimensioniert?
    Die Variablen sind von Start an alle gelöscht. Nur mit einem extra Befehl, wird das nicht gemacht. Dann sind die Werte zufällig.

    Verbessern kann man immer was. Aber das ist überall so. Fängt bei Bascom an, geht über Windows und endet in der Natur.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Im allgemeinen kann ich dem zustimmen.
    Aber es gibt auch Schwachstellen, die sehr stiefmütterlich behandelt werden. Beispielsweise das Kapitel Grafik LCD. Ich habe z.B. keinerlei Angaben darüber gefunden, welcher SED Controller unterstützt wird und welcher nicht. Der SED1565 wird es jedenfalls nicht. Weshalb ich gezwungen bin mir eine eigene Library dafür zu schreiben.
    Wobei wir beim nächsten Punkt sind. Wer schon einmal versucht hat eine eigene Lib zu schreiben, wird schnell an seine Grenzen stoßen. Nicht zuletzt deshalb, weil die Bascom Help in diesem Fall mehr als mangelhaft ist.
    In diesem Zusammenhang habe ich herausgefunden, daß es für die Lib's interne Variablen (als Gateway zwischen Bascom und ASM) gibt, die man benutzen könnte, sofern diese irgendwo erwähnt würden.
    Aber man will ja an den Lib's extra verdienen, deshalb wird es auch kaum Informationen über die Interna geben.
    Schade eigendlich ...

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.08.2004
    Beiträge
    169
    Naja ich geb auch mal meinen Senf dazu...

    ZU1: Wie könnte es anders sein, ich stimme dir voll und ganz zu, ich habe ebenfals noch nichts vermisst.

    ZU2; Tja, hier muss ich leider sagen, dass ich so den Eindruck habe, dass die Programmierer keine Ahnung hatten was sie in die Hilfe-Datei schreiben sollen. Eine komplette "MSDN" war ihnen zuviel, also gabs nur kurze Erleuterungen.
    Schade eigentlich, sonst ist das Programm wirklich TOP. Vor allem für Anfänger die schnell Ergebnisse sehen können.

    Gruß Florian
    ---

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    was ist in Bascom der unterschied zwischen einer lib und einer
    asm-routine als sub, wenn das programm im AVR fertig abgelegt ist und
    der AVR nun selbständig am arbeiten ist. ich sehe keinen unterschied.
    beim pc ja, das programm wird bei bedarf dazu geladen. beim AVR kann ich während des betriebes kein programm mehr mit den ips-programmer laden.
    mfg pebisoft

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    70
    Beiträge
    277
    Zitat Zitat von pebisoft
    was ist in Bascom der unterschied zwischen einer lib und einer
    asm-routine als sub, wenn das programm im AVR fertig abgelegt ist und
    der AVR nun selbständig am arbeiten ist. ich sehe keinen unterschied.
    Einer der Unterschiede ist, daß eine Library dazu gebracht werden kann, selbständig zu erkennen, ob sie benötigt wird oder nicht (beispielsweise durch die bloße Nutzung eine Befehls, der die Lib benötigt).
    Bei einer Sub muss diese explizit per Include eingebunden werden. Das passiert bei den meisten von Bascom genutzten Libraries. Auch existiert eine relativ elegante Möglichkeit der Lib Parameter via Config zu übergeben, die dann während der Preprozessorphase entsprechend behandelt werden können.
    beim pc ja, das programm wird bei bedarf dazu geladen. beim AVR kann ich während des betriebes kein programm mehr mit den ips-programmer laden.
    Bei PC-Programmen passiert in Bezug auf die Compilierung absolut nichts anderes als beim µC . Bei beidem gibt es natürlich viele verschiedene Spielarten.

    Henrik

  8. #8
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Zitat Zitat von pebisoft
    was ist in Bascom der unterschied zwischen einer lib und einer
    asm-routine als sub, wenn das programm im AVR fertig abgelegt ist und
    der AVR nun selbständig am arbeiten ist. ich sehe keinen unterschied.
    beim pc ja, das programm wird bei bedarf dazu geladen. beim AVR kann ich während des betriebes kein programm mehr mit den ips-programmer laden.
    @Pepbisoft: Hrei hats ja schon angesprochen. Genauer gesagt verwechselts du eine statische Libary mit einer dynamischen Libary (DLL), das ist ganz was anderes. Auch auf dem PC werden Funktionen von statischen Libarys fest in das Programm integriert, da wird nix mehr nachgeladen.
    Dynamische Libarys gibt es eigentlich vorwiegend erst ab späteren Windows Versionen. Diese erfordern zum einen einen Massenspeicher und zum andern eine aufwendige Speicherverwaltung . Sowas ist bei kleinen Controllern fast unmöglich zumindest nicht paktikabel, die Programme würden schon durch die Speicherverwaltung aufgebläht. Du darfst nicht ein Windows-Betriebsystem das GIGABYTES zur Verfügung hat mit einem kleinen Controller verwechseln.

    Was die Hilfe betrifft stimme ich dem gesagten zu. Die ist eigentlich schon recht gut und ausführlich, dennoch ist es manchmal etwas schwierig alles zu einem Thema zu finden. Soweit ich vom Autor gehört habe wird die Hilfe von Bascom derzeit überarbeitet, vielleicht wird auch das dann noch besser.

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Vergleiche mit dem rezenten Windows enden stets mit der weisen Festellung, daß es eben einfach ganz anders ist.
    Allein dadurch, daß das Programm in einem Flash gespeichert ist, entfällt alles, was bei Prozessore in Richtung "dynamisch" ablaufen kann, bzw. wird nicht praktikabel.
    Beim Bascom ist der Unterschied "Inline" und "library" klein, aber fein.
    "Inline" ist IMHO ganz gut mit MACROS vergleichbar, die zur Compile-time parametrisiert generiert werden.
    "Library" sind fest programmierte Routinen, die letzlich unique an einem festen Platz im Speicher stehen, und die zur run-time aus den Call Argumenten variiert werden (können).
    Dabei macht das Bascom trickreicherweise noch so, daß er auch die eigentlich bereits kompilierten LBX-en nochmal übersetzt, damit er Variablen/Konstanten (z.B. $Crystal) einarbeiten kann.
    Es wird in der LBX ja nur das kompiliert, was sich nicht mehr ändern kann (taucht in der lbx als ".OBJ xxx" auf). Mit den gewohnten Object libraries haben die nix am Hut.
    Dadurch erspart sich Bascom immerhin einen "linker"
    Schwierigkeit, die daraus folgt: Es gibt kaum allgemeine anwendbare Regeln, wie man zwischen "include sourcefile", Inline assembler und Libraries auswählen soll. Kommt immer ganz drauf an.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    da die lib nicht dynamisch sind ,ist es doch für einen AVR unerheblich im welchen speicherberich die lib liegt. mit den AVR mache ich doch keine dynamischen experiemente wie in windows oder linux. wenn ich für den wenigen speicherplatz des AVR programme schreibe achte ich doch eh darauf nur das zu proggen was gebraucht wird und habe das unter kontrolle. bei der lib weiss ich nicht so genau was sie jetzt gerade einlädt oder nicht. zb schreibe ich selber kleine routinen mit mein fastavr-basic im asm-source und binde die dann von oben nach unten in den avr-flash ein, die springe ich dann ganz einfach an , wenn ich sie brauche. sozusagen habe ich die sub ausserhalb des basicprogrammes abgelegt. es ist ein ganz tolles experiement und es funktioniert. es gibt hierbei aber feste regeln.
    bevor ein anfänger in Bascom die lib erstellen kann, ist er herausgewachsen und wechselt schon nach winavr-c um.
    da mit den lib-dateien noch geld verdient wird, wird man den wahren inhalt nie richtig kennenlernen, schade eigentlich.
    mfg pebisoft

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad