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)
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".