Moin, ich versuche mich gerade an einer Zeitschalter-Funktion auf einem ATMega8 in BASCOM. Bisher habe ich (im Studium) nur direkt in Assembler geschrieben und mir stellt sich die Frage, wie exakt diese fertige Funktion (Wait) arbeitet? Bemüht diese im Hintergrund einen Hardwaretimer des uC? Finde BASCOM schon recht nett, gerade für kleinere Probleme und da ich auch mal in BASIC programmiert habe trifft sich das ganz gut. Vielleicht kann mir da einer oder mehrere helfen. Danke im Vorraus. Noch eine kleine Frage am Rande: Wie lang ist die Zykluszeit eines Mega8 (3,686411 MHz) ungefähr für einen kurzen Schleifendurchlauf ohne zusätzlicher Interrupts und Unterprogramme? Nur Ungefähr (100ms || 10ms || ??ms)? Danke! Ciao.
Studium Bascom Wait Kleine-Frage irgendwie passt das alles nicht zusammen... die Wait ist eigentlich totaler schwachsinn, da die zeit nur mit NOPs vertrödelt wird. machs ordentlichu und nutze einen timer
Also das Thema "uC" im Studium ist schon ne weile her. Damals haben wir in ASSEMBLER geschrieben. Nun wollte ich halt schnell zum Ziel kommen und hab mir auf Empfehlung mal BASCOM angeschaut, da ich die Syntax von BASIC kenne. Wenn man mir nun sagt, dass BASCOM nichts taugt (zumindest diese Funktion), dann werd ich es vermeiden damit zu arbeiten. Genau desshalb die Frage. Wenn die Wait-Funktion wirklich nur mit NOP´s versorgt wird, kann sie ja nur annähernd korrekt arbeiten. Damit hast du meine Frage beantwortet. Oder gibt es noch andere Meinungen zu diesem Thema? Ciao.
Wait ist schon genau, allerdings kommt darauf an wie genau Du es möchtest! Bedenke das "Wait" intern aus mehreren Befehle aufgebaut wird, und Du die erforderlichen Takte für den Rücksprung etc mit einkalkulieren musst! Ich empfehle Dir nen Quarz mit 32,768kHz anzuklemmen. Da haste dann eine über Bascom interne Quarzuhr. das läuft perfekt und Du benötigst lediglich 3 Bauteile mehr (Quarz + Klatschkondensatoren)
Nun, Wait ist eine einfache Funktion, die wartet. Die erfüllt genau diesen Zweck wenn nichts Anderes zu tun ist, und wenn keine langen oder häufigen Ints die Verzögerung verlängern. Mit beschriebener Einschränkung also soweit exakt, wenn mit $crystal der richtige Wert eingetragen wird. Für manche Zwecke ausreichend. Wenn's genauer sein muss, dann halt einen Timer. Die lassen sich in Bascom auch konfigurieren :D Wenn Du wissen willst, wie lang eine Schleife dauert, nimm den Simulator, in der Statuszeile unten stehen die Cycles, setz' Dir Haltepunkte, dann weist Du's. Rechtsclick auf Cycles erlaubt es Dir, sie auf 0 zu setzen.
so lange man keine Interrupts verwenden ist wait schon sehr genau, aber wenn Interrupts verwendet werden, dann addiert sich die Zeit der Interrupt(s). Wenn man nebenbei Software PWM macht, kannst das schon sehr stark abweichen. (gilt nur wenn das Bascom wait sich gleich wie das sleep in C verhält - was aber zu vermuten ist)
Gabs nicht mal irgendwo das Gerücht, dass WAIT bei Bascom keine Interrupts zulässt... weiss nicht obs wirklich bzw. immer noch so ist.
Lass dich nicht verrückt machen, das BASCOM nichts taugt. Meines Erachtens hat es nichts mit BASIC zu tun. Solche Befehle wie wait gibt es auch in C und sind gleich ungenau. Kritische Sachen mache ich auch in Assembler. Natürlich ist "wait" dokumentiert, und man kann die Takte auszählen. Damit kommt man über die Taktfrequenz zu der Zeit. "wait" gibt immer die Zeit in sec. an, ganz gleich wie die Taktfrequenz ist. >Noch eine kleine Frage am Rande: Wie lang ist die Zykluszeit eines Mega8 >(3,686411 MHz) ungefähr für einen kurzen Schleifendurchlauf ohne >zusätzlicher Interrupts und Unterprogramme? >Nur Ungefähr (100ms || 10ms || ??ms)? Danke! Was für ein Schleifendurchlauf? Bei dieser Frequenz 3,686411 MHz? Interrupts sind zugelassen, verlängern aber die Zeit.
Michael_ schrieb: >>Noch eine kleine Frage am Rande: Wie lang ist die Zykluszeit eines Mega8 >>(3,686411 MHz) ungefähr für einen kurzen Schleifendurchlauf ohne >>zusätzlicher Interrupts und Unterprogramme? >>Nur Ungefähr (100ms || 10ms || ??ms)? Danke! > Was für ein Schleifendurchlauf? Bei dieser Frequenz 3,686411 MHz? > Interrupts sind zugelassen, verlängern aber die Zeit. Ist da jemand SPS geschädigt? Siehst du, deswegen kein Baukasten BASCOM :P
>> Ist da jemand SPS geschädigt? Siehst du, deswegen kein Baukasten BASCOM :P
Mal wieder der übliche eingebildete Blah, sobald das Thema auf Bascom
kommt und man es endlich selbst geschafft hat 'ne Include Datei
einzubinden.
Delays aus C arbeiten im Übrigen genauso, da rennt der uC auch nur in
der Schleife. Also auch nix mit Timer.
BASCOM ist wie C, nur ein anderer Dialekt der die Befehle für den uC verständlich in Maschinensprache übersetzt! Ich habe in Bascom die Steuersoftware für den Mikrokopter nachgeschrieben (inclusive GPS und Magnetometer). Das Ding fliegt Perfekt! Einziger Nachteil ist die kurzte Betriebszeit von 15Min. Aber das ligt nicht an Bascom xD
Nein ist es nicht. Bascom erhebt meiner Meinung nach noch den zusätzlichen Anspruch ein Baukasten für alles mögliche zu sein (Filesystem, TCPIP Stack), allerdings ohne, dass man sehen kann, was dahinter steckt. Und somit denken viele, dass man sich nicht genau mit Themen auseinandersetzen muss, ist ja schließlich alles integriert. Wenns aber dann Probleme gibt ist man schnell aufgeschmissen.
>erhebt meiner Meinung nach noch den >zusätzlichen Anspruch ein Baukasten für alles mögliche zu sein >(Filesystem, TCPIP Stack), allerdings ohne, dass man sehen kann, was >dahinter steckt. Und somit denken viele, dass man sich nicht genau mit >Themen auseinandersetzen muss, ist ja schließlich alles integriert. >Wenns aber dann Probleme gibt ist man schnell aufgeschmissen. Ja, dass stimmt. Aber wer nicht davon ausgeht, dass man sich nicht genau damit auseinander setzen muss, der kann ich BASCOM genauso gute programme schreiben wie in C oder ASM. Beispiel: www.vreal.de
Simon K. schrieb: > Nein ist es nicht. Bascom erhebt meiner Meinung nach noch den > zusätzlichen Anspruch ein Baukasten für alles mögliche zu sein > (Filesystem, TCPIP Stack), allerdings ohne, dass man sehen kann, was > dahinter steckt. Und somit denken viele, dass man sich nicht genau mit > Themen auseinandersetzen muss, ist ja schließlich alles integriert. > Wenns aber dann Probleme gibt ist man schnell aufgeschmissen. Du hast Bascom noch nie benutzt! Das FS ist genauso eine Zusatzlib wie bei C. TCPIP ebenso. Nur weil es einfacher zu benutzen ist, bedeutet es nicht das es fest implementiert ist!
Moin, also danke erstmal für das viele Feedback. Werd die Zeitschaltung nun doch mit BASCOM fertigstellen. Werde nun die Zykluszeiten des uC berücksichtigen und bei der Sekundenweisen Incrementierung einfließen lassen, um auf die annähernd exakte Sekunde zukommen. Nochmal zum Thema BASCOM allgemein. Ich habe einiges in Visual Basic programmiert und die Syntax von BASCOM lehnt sich ohne Zweifel an diese Syntax an. Ich vermute sogar das das "BA" in BASCOM für BASIC steht (allerdings nur vermutlich). >>>"BASCOM ist wie C, nur ein anderer Dialekt der die Befehle für den uC >>>verständlich in Maschinensprache übersetzt!" @Alex: Dafür sorgt der entsprechende Compiler. Mit der Sprache an sich hat es nichts zutun. Im Endeffekt wird der Quellcode jeder Programmiersprache bzw. auch Hochsprache letzenendes in Maschinensprache übersetzt, egal ob nun direkt oder über eine Laufzeitumgebung wie in Java. Sonst könnte dein Rechner damit nichts anfangen. Also ich bin mit BASCOM, zumindest was nun kleinere Programme angeht, recht zufrieden. Denke die Diskussion über BASCOM im Vergleich zu C wird ähnlich dogmatisch geführt wie zwischen C/C++ -Anhängern und Java-Anhängern (wie mir) und führt in der Regel ins Lehre. Jede Sprache hat seine Vor- und Nachteile. Daher kommt es auf das zu Grunde liegende Problem im Speziellen an, um eine Entscheidung zu treffen. Ciao und Danke nochmals.
Man kann mit Bascom fast alles machen, was mit C geht. Warscheinlich optimiert C aber besser, wenns zeit- oder platzkritisch wird. Auch benutzen mehr Leute C als Bascom, d.h. bei C-Fragen kriegt man schneller Hilfe. Wenn man allerdings vorgefertigte Bascom-Funktionen benutzt, aber zu faul ist, sich die Hilfe, Doku, Datenblätter und Beispiele dazu anzusehen, kriegt man das hier schnell um die Ohren gehauen. Z.B. im Datenblatt für den ATmega48 steht, die interne Referenz beträgt 1,1V, dann muß der Bascom-Konfigurationsbefehl auf 2,56V fehlschlagen. Da hilft auch kein Greinen "Beim ATmega16 gings aber", sondern eben nur der Blick ins Datenblatt. Peter
>Warscheinlich optimiert C aber besser, wenns zeit- oder platzkritisch >wird. Zumindest wenns mit der Zeit nicht hinaut, kann man ja noch ASM-Schnippsel einbauen >Auch benutzen mehr Leute C als Bascom, d.h. bei C-Fragen kriegt man >schneller Hilfe. Kommt immer darauf an, wo man fragt ;) Hier ist das so, aber z.B. im RN oder im Bascom-Forum bekommt man auch sehr schnell Antworten auf Bascom-Frane ;)
Das Problem ist einfach das die meißten Cler glauben sie wären es...und jeder der was anderes nutzt wäre ein Idiot... Wen interessiert es mit welcher Sprache etwas programmiert wurde, wenn das Ergebnis passt? Manche wollen echt einen Orden weil sie viellicht C(++) etwas besser können als andere...das sind auch die die dem Endanwender immer unter die Nase reiben müssen das sie ja ihr tollen Programm in C(++) programmiert habne...*lol* Und wer behauptet er kann eine Programmiersprache 100%ig der lügt, gerade wenn es um C(++) geht...es geht darum die beste Lösung für ein Problem zu finden. Und wenn bascom das problem genauso lösen kann wie C(++) nur bei deutlich weniger Zeitaufwand, dann ist derjenige der trotzdem bei seinem C bleibt nur weil ja Bascom angeblich schei.... wäre ein volldepp. :P
Ist leider öfter so, die über Bascom meckern, haben es womöglich noch nie installiert geschweige mehr als 5 Zeilen geschrieben. Ich verwende Bascom schon seit 5 Jahren, und das was ich brauche, habe ich immer geschafft. Wenn man diesen Typen immer glauben würde, müssten alle C-ler Porsche fahren, weil der Kia einfach zu langsam/klein/uncool ist. Tun sie es? Das Ergebnis zählt und bis jetzt hat Elektor und dessen Labor sich über meine Veröffentlichungen nicht beschwert. Also nicht verrückt machen lassen und das verwenden, was das beste/schnellste Ergebnis liefert. mfg
Super Troll schrieb: > Das Problem ist einfach das die meißten Cler glauben sie wären es...und > jeder der was anderes nutzt wäre ein Idiot... Ich war früher Cler, und hab auch so gedacht! Dann ist mir Bascom begegnet und ich regte mich furchtbar darüber auf das es benutzt wird. Heute benutz ich ausschließlich Bascom! Wieso soll ich das Rad neu erfinden? Vieles geht mit Bascom viel einfacher als mit C. Die Schreibweise von C ist Dreck (hab mich früher schon genervt)
Moin, genau wie ich´s gesagt habe: Dogmatischer Krieg zwieschen Vertretern verschiedener Programmierkulturen. Eines sollte man allerdings noch bedenken: Programmieren ist nicht ausschließlich Programmieren von uC´s. Wenn es um Applikationen geht, dann hat C/C++ längst an Bedeutung verloren. Die Argumente gegen bspw. JAVA wie Laufzeitprobleme, Speicherorganisiation sind längst nicht mehr fruchtbar/aktuell. Profis akzeptieren dies, da sie es wissen. Was hardwarenahe Programmierung angeht, so kommt man gerade für industrielle Lösungen nicht um C herum. Und so hat jeder Programmierer seine Daseinsberechtigung. ABER: Eigentlich ging es hier nicht um die Grundsatzfrage, sondern um ein definiertes, spezielles (wenn auch für BASCOM-Fortgeschrittene banales) Problem. Dafür wurde die Antwort gegeben und das Problem ist gelöst. Der Controller läuft und die Zeitschalterfunktion für meine Aquariumbeleuchtung auch. Nun folgt die Dimmfunktion. Danke nochmal an die Helfenden. Denke der Thread kann damit geschlossen werden! Ciao.
Wirklich erstaunlich, wie viele Leute nicht lesen und trotzdem ihren Senf abgeben. Ich hab doch gesagt, daß man fast alles auch im Bascom programmieren kann, eventuell ists etwas langsamer und größer. Ich hab also überhaupt nichts dagegen, wenn jemand Bascom benutzt. Wogegen ich war und bin, daß man nicht die Doku liest. Das war alles. Auch Bascom erlaubt es nicht, sich nicht zu informieren, wenn was sinnvolles dabei rauskommen soll. Trial & Error funktioniert auch in Bascom nicht. Nächstes mal einfach richtig lesen, bevor man sich irgendwas zusammen reimt. Peter
Also ganz so einfach ist es dann auch nicht. Verstehe deinen Einwand, allerdings weiß ich aus beruflicher Erfahrung, dass man mit Fragen an Wissende schneller zum Ziel kommt. Gerade im Ingenieursbereich (Elektrotechnik) kann ich es mir nicht erlauben bei jedem "Furz" das entsprechende Manual zu studieren. Hier sind pragmatische Lösungen in kürzester Zeit gefragt, die funktionieren. Wenn man, wie in der Automotive, mit duzenten IDE´s, Tools und Protokollen zutun hat, eignet man sich diese Lösungsvariante an. Und was ist das Resultat aus meiner Frage: Es läuft! Noch als Ergänzung: Wenn jeder das entsprechende Manual zu seinem Problem studieren würde und die entsprechende Literatur, dann wäre dieses Forum im eigentlichen Sinne überflüssig und Profis wie DU hätten auf einmal viel Zeit für andere Dinge des Lebens. Ich finde es gut, dass es solche Foren gibt und bin immer dankbar für die schnelle Hilfe. Man kann halt nicht überall ein Profi sein. P.S. In anderen Foren gebe ich auch entsprechende schnelle Hilfe, ohne mich über die Dummheit des Fragenden zu beschweren. Ciao.
>> Wirklich erstaunlich, wie viele Leute nicht lesen und trotzdem ihren Senf abgeben. Und hier schreit der Dieb: "Haltet den Dieb" Wie auch z.B. hier: Beitrag "Re: Soft-UART Bascom" Da fragt der TE nach Bascom und er bekommt von Dir, ob er nun will oder nicht, Deine kaputte C-Schallplatte reingedrückt. Und dann hier im Thread noch ein wenig Entrüstung geheuchelt, weil man falsch verstanden wird. Würd' mal sagen, diese Verhaltensweise entspricht klassischem trollen.
bk99 schrieb: > Also ganz so einfach ist es dann auch nicht. Verstehe deinen Einwand, > allerdings weiß ich aus beruflicher Erfahrung, dass man mit Fragen an > Wissende schneller zum Ziel kommt. Gegen Fragen hab ich überhaupt nichts. Es gibt viele Sachen die nicht offensichtlich sind. Allerdings habe ich bei Bascomfragen oft den Eindruck, das ist ja popeleinfach, da braucht man nix zu lesen. Ich wollte auch nur drauf hinweisen, daß man nicht gleich die beleidigte Leberwurst spielen muß, wenn offensichtlich wird, daß man selber keinerlei Anstrengungen unternommen hat. Es gibt natürlich auch C-Fragen, wo der Hinweis auf das Manual oder den Example-Ordner der C-Installation die beste Antwort ist. > Gerade im Ingenieursbereich > (Elektrotechnik) kann ich es mir nicht erlauben bei jedem "Furz" das > entsprechende Manual zu studieren. Da bin ich anderer Meinung. Es geht bestimmt schneller, sich z.B. einfach ein Interrupt-Beispiel anzusehen, als erst zu fragen, wie das geht. In Foren werden eigentlich immer nur Fragen gerne beantwortet, die nicht offensichtlich aus den Boardmitteln (Example-Ordner, Hilfe, Manual) hervorgehen. Man will sich ja nicht den Mund fusselig reden. Die Frage soll eine gewissen Herausforderung darstellen. > Hier sind pragmatische Lösungen in > kürzester Zeit gefragt, die funktionieren. Jau, einfach erstmal die eigene Festplatte zu befragen sollte deutlich schneller als ein Forum gehen. Peter
> bk99 schrieb: >> Gerade im Ingenieursbereich >> (Elektrotechnik) kann ich es mir nicht erlauben bei jedem "Furz" das >> entsprechende Manual zu studieren. Ist das dein Ernst? Genau das ist doch das typisch Bascom-mäßige (was jetzt sicherlich nicht auf jeden zutrifft). Erst fragen bevor man überhaupt sich mal reinliest in die Materie, weil BASCOM den Eindruck macht, dass man im Nu eigentlich alles zusammenklicken kann. Ich finde es relativ traurig, dass Leute heutzutage nicht mal selber knobeln. Ich habe auch öfters Probleme etwas ans Laufen zu kriegen. Und manchmal kriege ich es auch nicht in einer Woche hin. Aber ich denke mir dann einfach, wie haben die Leute sowas früher gemacht? Da gab es das Internet noch nicht in dem Format wie heute, da konnte man nicht wegen jedem Mist einen eigenen Thread eröffnen und sich helfen lassen. Da hilft nur lesen, ausprobieren, drüber schlafen, nachdenken, verändern, debuggen bis es geht. Und wenn man mal überlegt ist das doch auch der ganze "Spaß" an der Sache: Selber herauszufinden wo es hakt und nachher auch hoch und ehrlich behaupten zu können, dass man das komplett selbst gestemmt hat. Ich kann Peter eigentlich fast immer nur beipflichten, der hat nämlich schon jahrelange Berufserfahrung in die Richtung. Der irrt sich nicht all zu oft.
>Und wenn man mal überlegt ist das doch >auch der ganze "Spaß" an der Sache: Selber herauszufinden wo es hakt und >nachher auch hoch und ehrlich behaupten zu können, dass man das komplett >selbst gestemmt hat. Ihhh! Nennt man das nicht auch "lernen"? Bäh! Sowas von uncool! Wenn ich mal wieder vor "unlösbaren (Bastel-)Problemen" stehe, dann habe ich früher mit meiner Mutter und später dann mit meiner Freundin darüber gesprochen: Beide haben keine Ahnung von dem, was ich mache, aber das Gespräch hat meistens geholfen. Meistens komme ich dabei selber auf die Lösung. Es ist einfach, dass man darüber gesprochen hat; egal, ob der Gegenüber es verstanden hat. Die beiden haben mich halt recht gern...
Wollte jetzt wieder kontern, aber: Der Klügere gibt nach! ;-) PROBLEM GELÖST. THREAD KANN GESCHLOSSEN WERDEN! (Aber anscheinend gibt es hier keine Mods???!)
bk99 schrieb: > Wollte jetzt wieder kontern, aber: Der Klügere gibt nach! ;-) Das machst Du nur solange bis Du der Dumme bist, und lässt es bleiben ;-) > PROBLEM GELÖST. THREAD KANN GESCHLOSSEN WERDEN! Bitte verrate uns wie Du das Problem gelöst hast! Sonst fragen Andere das gleiche, obwohl sie hier nachschaun könnten!
Noch etwas zur Geschichte zu BASCOM (aus meiner Sicht) Etwa 1999 war es, als ich ein kleines Projekt in einer kleinen Fa. zu lösen hatte. Was gab es: u.a. PIC-Prozessoren mit UV-Fenster und die ATMEL 90S1200/2313 mit Flash. Aus heutiger Sicht eine richtige Entscheidung für ATMEL. Bei PIC gab es schon C, aber bei AT nur Assembler und ein unbrauchbares Basic von ATMEL. Dann kam BASCOM mit lebenslangem Update, deshalb benutze ich es bis heute. C (Keil...) war damals für die kl. Fa. oder privat nicht erschwinglich. GCC-AVR entwickelte sich erst, aber nur unter LINUX, was auch noch nicht das war wie es heute ist. Für Win war GCC-AVR sehr kompliziert zu installieren und zu bedienen. Also nehme ich es bis heute, bin zufrieden und baue kritische Sachen in Assembler ein. Oder mache es gleich in Assembler. Wer mal bei BASCOM schnuppern möchte: http://www.mcselec.com/index.php?option=com_content&task=category§ionid=7&id=79&Itemid=57 >simon >Ist da jemand SPS geschädigt? Siehst du, deswegen kein Baukasten BASCOM >:P SPS ist ja wohl eine ganz andere Liga. "Hochmut kommt vor dem Fall".
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.