Forum: Mikrocontroller und Digitale Elektronik bascom: 3 parameters expected beim elseif


von elseifboy (Gast)


Lesenswert?

hallo zusammen!
bascom kann beim rechnen nicht mehrere schritte auf einmal machen. nur
eine operation auf einmal.

daher kommt es wohl, das ich bei dieser elseif geschichte den fehler
"3 parameters expected" erhalte.

F = timer
R = poti mit verschiedenen schwellwerten

If F = 1 And R < 50 Then
   Gosub test1
  Elseif F = 2 And R = 50 To 200 Then
   Gosub test2
  Elseif F = 3 And R = 201 To 799 Then
   Gosub test3
  Elseif F = 4 And R = 800 To 1023 Then
   Gosub test4
End if


was muss ich ändern um den parameter fehler zu vermeiden?

gruß elseifboy

von Rahul (Gast)


Lesenswert?

Die Programmiersprache wechseln!

von Togger (Gast)


Lesenswert?

Hi Elseifboy,
pro If Anweisung geht nur eine Bedingung.
Geht leider nur so:

"If F = 1 then
   If R < 50 then
     Gosub Test1
   else
     if ...... usw. "

lg Ralf

von Togger (Gast)


Lesenswert?

....und das mit dem "to" hab ich noch nie gesehen, kenne ich nur von
For Next Schleifen.

Da mußt noch einiges ändern.

von Hannes L. (hannes)


Lesenswert?

Bei Select/Case (QBASIC, VB) gibt es das "to" in diesem Zusammenhang
auch.

Aber Rahuls Rat wird wohl der beste sein...

...

von elseifboy (Gast)


Lesenswert?

danke für die schnellen antworten.
klar ist das ein riesen nachteil bei bascom. allerdings ist es für mich
das einfachste (solange ich nich eine 100% perfekte und 100%
geschwindigkeitseffiziente spitzenprogrammierung benötige.).
ich werde mal die doppelte if variante testen. danke togger!

von OlafK (Gast)


Lesenswert?

Schau einfach in der Hilfe unter Select Case nach. Da ist alles drin,
auch Bereiche (siehe Beispiel aus der Hilfe):

  Select Case X
    Case 1 To 3 : Print "1 , 2 or 3 will be ok"
    Case 4 : Print "4"
    Case Is > 10 : Print ">10"
    Case Else : Print "no"
  End Select

Gruß Olaf

von elseifboy (Gast)


Lesenswert?

hallo olaf.
das mit den bereichen ist korrekt.
allerdings verwendet select case ja nur die variable X (wie in deinem
beispiel)
ich benötige aber zwei variablen mit einer and verknüpfung.

"wenn timer0 bis 3 gezählt hat und der eingestellte poti den wert 201
bis 799 am adc angibt dann gehe zu test3"

von Rahul (Gast)


Lesenswert?

@Hannes: Danke für die Blumen... Ich habe inzwischen jemanden
"bekehrt", der Bascom als Quick'n'dirty Methode benutzt hat, ein
Projekt zum Laufen zu bekommen. Jetzt fragt er mich dauernd nach
irgendwelchen C-Problemen. Da frage ich mich doch, was angenehmer ist:
Mich dauernd mit ihm über die Unzulänglichkeiten von Bascom zu
streiten, oder ihm C zu erklären...

Ich streite nicht ab, dass man mit BAscom auch zu Ergebnissen kommt,
aber für mich wirkt die Sache trotz vieler schöner Gimmix
([Grafik-]LCD-Unterstützung, Soft-UART ...) noch ziemlich unausgegoren,
wenn man nicht mal eine Formel in einem Stück angeben kann.
Ich hoffe, die Leute von mcselc arbeiten weiter daran. Die
Dokumentation ist ja sehr schön umfangreich...

von Hannes L. (hannes)


Lesenswert?

OT

@Rahul:
Ich meine, die haben schon viel zu viel "verBASICt". Dieser ganze
Config-Kram hält die User davon ab, in das Datenblatt des AVRs zu
schaun. Hätte man darauf verzichtet, müsste man mit Zuweisungen auf die
I/O-Register zugreifen und könnte die Übersicht behalten.

Abgesehen davon ist das auch ein Eigentor: Jeder neue AVR-Typ hat etwas
andere Hardware und benötigt neue Routinen um in BASIC-Syntax
angesprochen zu werden. Das hätte man sich sparen können. Ein
Tiny-BASIC hätte völlig gereicht.

Da ich beim AVR verdammt dicht an der Hardware programmiere, halte ich
ASM für die einfachste Lösung. Da gibt es die wenigsten
Missverständnisse, da ist das Datenblatt (und nur das Datenblatt)
verbindlich...

Das PC-BASIC-Wissen (oder mein Commodore-Plus/4-BASIC-Wissen) taugt
nicht zum Programmieren von kleinen Mikrocontrollern, ebenso wie
PC-C-Erfahrung (ohne Umdenken) nicht zum AVR-Programmieren taugt. Es
ist schon ein Unterschied, ob man unter einem Betriebssystem
programmiert oder direkt an der Hardware.

Bit- & Bytebruch...
...HanneS...

von SnowCrash (Gast)


Lesenswert?

Hi zusammen,

bascom ist nicht gerade meine Sprache, aber trotzdem:
@Togger:
es gehen schon mehrere Bedingungen in einer Anweisung.

@Rahul:
und dieser jemand wird noch viele Fragen bezueglich C an dich haben
;-)) jedenfalls ist das bei mir so; in basic kann ich "quick and
dirty" was hinzaubern, in C noch immer nicht so richtig :-(

@elseifboy:
wenn ich folgenden Code eingebe, funzt es zumindest im Simulator mit
wechselnden Werten fuer R und F:

Dim F As Byte , R As Integer
F = 1
R = 900

If F = 1 And R < 100 Then
   Gosub Test1
  Elseif F = 2 And R > 50 And R < 200 Then
   Gosub Test2
  Elseif F = 3 And R > 201 And R < 799 Then
   Gosub Test3
  Elseif F = 4 And R > 800 And R < 1023 Then
   Gosub Test4
End If

End

Test1:
   Print "Test1"
Return

Test2:
   Print "Test2"
Return

Test3:
   Print "Test3"
Return

Test4:
   Print "Test4"
Return

Allerdings ist eine Kombination wie R=1 und F>900 und so nicht
definiert.

schoenen Gruss
Tony

von SnowCrash (Gast)


Lesenswert?

Sorry,
keine Ahnung, wie das Doppelposting zustande kam.

Tony

von Rahul (Gast)


Lesenswert?

@SnowCrashSteffi:
Wie Hannes schon meinte: Bascom nimmt einem schon zuviel ab.
Da kann man schon wieder was verlernen...
Es ist einfach schon zu weit vom Controller entfernt.
Basic ist in Ordnung, wenn man nicht den Bezug zum Controller verliert.
Da könnte man auch gleich Java, PHP oder sowas zum
Controllerprogrammieren benutzen.

von SnowCrash (Gast)


Lesenswert?

@Rahul:
Dashab ich auch nicht bestritten, deshalb beschaeftige ich mich ja auch
mit C. Also werden hier mit an Sicherheit grenzender Wahrscheinlichkeit
Fragen dazu von mir auftauchen :-))

Gruss Tony

PS: SnowCrashSteffi?!? Hab ich was nicht mitgekriegt?

von Ratber (Gast)


Lesenswert?

Also wirklich !


Is doch jedem selber überlassen womit er seine Programme schreibt.

Aber wie immer tauchen die üblichen verdächtigen auf und anstatt zu
helfen wird mal wieder ein Missionierungszug gestartet.

Für solch ein arrogantes Verhalten ist dieses Forum übrigens an vielen
Orten im Deutschsprachigen Raum bekannt.

Sind die Herren nicht zufällig auch Linux-Fans ?
Das Verhalten würde Arttypisch passen. '-)

von Rahul (Gast)


Lesenswert?

@Ratber:
Ich bin kein Linux-Fan. Natürlich klingt es arrogant, wenn man jemandem
vorschläg, eine andere Programmiersprache auszuprobieren, wenn man ihm
in seiner keiner richtig gute Hilfe geben kann. Für micxh ist es
einfacher, den Fehler in einem C-Programm als in einem in BAscom
geschriebenen zu finden.
Liegt vielleicht an dem Drang, alles (auch die Hilfe) möglichst einfach
zu gestalten.
Wie oben schon erwähnte, ist die Dokumentation von Bascom sehr
umfangreich gestaltet. Ich finde es bei Bascom einfach schade, dass es
noch ziemlich viele Unzulänglichkeiten wie Aufteilen einer Formel, oder
Kontrollstrukturen mit sehr wenigen Auswahloptionen.
Bei dem Programmpaket, wird auch eine Menge mitgeliefert, die ich bei
WinAVR vermissen, wie die LCD-Ansteuerung, SoftUART etc. Sowas muß ich
mir in C selber basteln oder im Netz suchen.

Wenn sich für mich elseifboy's Frage stellen würde, würde ich mir
überlegen, ob es für mich nicht sinnvoller wäre, die Sprache zu
wechseln, da ich in der momentanen mit noch mehr Problemen rechnen
muß.

Ich meine fast, dass manche Leute es toll fänden, wenn man Controller
nur in Assembler programmieren dürfte.

@SnowCrash: hab dich mit jemand anders verwechselt... 'schuldigung.

von Hannes L. (hannes)


Lesenswert?

@Ratber:

Ich bezweife keinesfalls deine Kompetenz in Sachen Elektronik in dein
arbeitsplatzbedingtes Insiderwissen. Ich will mich auch nicht mit dir
persönlich anlegen. Aber zu meiner Aussage, die ich hier:
http://www.mikrocontroller.net/forum/read-1-274673.html#274803
gemacht habe, stehe ich.

Wenn du das für Arroganz hältst, dann ist das nicht mein Problem.

Ich schreibe niemandem vor, welche Sprache er nehmen soll, solange er
damit auch zurecht kommt. Die vielen Fragen zu BASCOM hier im Forum
zeigen aber, dass viele BASCOM-Nutzer im Denken so weit von der
Hardware entfernt sind, dass sie nichtmal in das Datenblatt des
jeweiligen AVRs schaun. - Und genau das ist der Punkt, wo ich ASM
empfehle. Denn in ASM ist nur das Datenblatt verbindlich und man hat
die I/O-Register und deren Bits immer vor Augen, sieht also, was man
tut.

Schönen vierten Advent noch...
...HanneS...

von Togger (Gast)


Lesenswert?

@SnowCrash
du hast Recht. Deine Lösung ist syntaktisch so ok.
Nur: da ich mit mehreren Bedingungen in einem Projekt böse Erfahrungen
gemacht habe, lasse ich die Finger davon.
Soweit ich mich entsinne waren die Ergebnisse nicht stimmig, was mich
zu der Annahme führte, dass Bascom mit mehr als einer Bedingung pro If
einfach überfordert ist.
Lasse mich aber gerne eines Besseren belehren.
Die Fehlermeldung "3 Parameters expected" bezieht sich auf das "to"
in Elseifboy´s Listing.
Diese Fehlermeldung bringt Bascom immer, wenn Bascom etwas nicht
versteht, oder zuviel in einer Zeile steht (z.B. Tippfehler).
Kann sehr irreführend sein.

DAS ALLES STEHT NICHT IM DATENBLATT!!! (für die Datenblattfetischisten
;-))

Auf weitere konstruktive Beiträge :-)

lg Ralf

von Rahul (Gast)


Lesenswert?

Dann ist das Datenblatt zu BASCOM schlecht...

von Hannes L. (hannes)


Lesenswert?

> DAS ALLES STEHT NICHT IM DATENBLATT!!! (für die
> Datenblattfetischisten ;-))

Lach...

Das kann ja auch nicht im "Datenblatt" stehen, denn das von mir
gemeinte "Datenblatt" beschreibt nur den AVR, seine Architektur und
seinen ASM-Befehlssatz (ich sehe "Instruction Set" als ausgelagerten
Teil der AVR-Datenblätter).

Wenn du Erklärungen zu BASCOM-Befehlen suchst, dann ist das Datenblatt
die falsche Quelle, dann musst du schon das BASCOM-Handbuch (falls
verfügbar) und die BASCOM-Help-Dateien lesen. Falls es da nicht drin
steht, dann taugt das nunmal nix.

Um mir all diesen Unfug zu ersparen, benutze ich Assembler (obwohl ich
Erfahrung mit mehreren BASIC-Dialekten habe!), denn dann gilt das
Datenblatt des AVRs. Ich gebe zu, dass das der einfachere Weg ist, aber
bei kleinen Programmen auf AVRs (kleine MCs) kann ich schon auf die
(unbestrittenen) Vorteile einer Hochsprache verzichten.

Ich bin kein Gegner von BASIC allgemein, ich nutz(t)e es auf dem PC
(DOS/WIN), dem Commodore Plus/4, dem Z80 und dem MFA-8085.

Übrigens:
Was hat das mit Fetischismus zu tun, wenn man die Handbücher der
benutzten Programme und Datenblätter der zu programmierenden
Mikrocontroller oder anderer verwendeter Bauteile liest?

Schönen vierten Advent...
...

von Axel R. (Gast)


Lesenswert?

Ich nehm FastAVR gg

Gruß
AR

von Rahul (Gast)


Lesenswert?

ich nicht...
@Hannes: Ich weiß ja nicht, wen er mit den Fetischisten meint, aber
wenn manche sich von einem Datenblatt erregt fühlen, dann sollen sie
doch...

von Hannes L. (hannes)


Lesenswert?

@Rahul:

Soll mich nicht weiter stören, er scheint sowiso eine gespaltene
Persönlichkeit zu haben, sonst würde er nicht innerhalb eines Threads
mit unterschiedlichen Namen schreiben...

;-)   <--- Smilie...

...

von Simon K. (simon) Benutzerseite


Lesenswert?

Ich bin damals mal mit BASIC angefangen, habe ich auch verstanden, aber
gerade so Sachen wie mehrere Operatoren in eine Reihe schreiben
funktioniert nicht haben mich dann umlenken lassen.

Erst Assembler, schön und fein in Assembler programmiert und gleich ein
viel besseres Programmiergefühl gehabt (Weiß nich ob es sowas gibt, aber
ich fühl sowas). Man wusste genau was jetzt gemacht wird, man wusste
genau wie lange was jetzt genau dauert und der allergrößte Vorteil: Man
konnte seine Routinen viel besser optimieren als in BASCOM. Es gibt so
geniale Mnemonics im Instruction Set. Eins hab ich letztens erst wieder
gefunden (Bit Store Möglichkeit). Ohne die hätte ich große Umwege gehen
müssen.

Als ich dann ein größeres Projekt hatte, habe ich mit C angefangen. Ist
zwar anders als Assembler, aber keinesfalls so wie BASIC. Auch hier gibt
es wesentlich größere Vorteile gegenüber C. Zum Beispiel kann man in C
bei einem String (Array!) direkt auf die einzelnen Zeichen zugreifen..

Also ich bereue den Umstieg von BASCOM auf ASM/C KEINESFALLS. es hat
sich echt gelohnt !

von Ratber (Gast)


Lesenswert?

@Rahul&Hannes

Sicher,Bascom ist nicht perfekt aber das gilt wohl für alle Sprachen.C
Ist in  meinen Augen unnötig kryptisch als ob sich dort einige
Verschlüsselungsfans ausgetobt hätten.
Da liegt mir Delphi oder Assembler gleich näher.

Ich sehe nur nicht ein Stunden beim Coden zu verbringen wenn ich simple
Sachen auch schnell eben mit diesem "Spagettimonsdter" erschlagen
kann.



Was die If/Then betrifft so finde ich es nicht so wild wenn Bascom nur
2 Parameter zulässt.
Beim Übersetzen wirds eh wieder in einzelne Anweisungen zerlegt also
verschenkt man damit keinen Platz.
Da Controller ja eh einfach gestrickt sind kommt das dem gefordertem
Argument "Einfach" doch entgegen.
Da verstehe ich die Meckerei nicht ganz.



Nun das ein Comodore,Sinclair oder VisualBasic nicht verwendbar ist
stimmt aber mit den Code vom Controller wirste aufem PC auch nicht
glücklich weil schon allein die Anwendungsgebiete und die
Resourcenhintergründe ganz anders sind.
Insoweit hinkt der Vergleich auch wenn die C-Dialekte sich hier mehr
ähneln als es bei Basic der Fall ist.


Was bei Basic besticht ist das einfachere Sprachliche Verständnis der
Befehle.

Unter Print,If-Then-Else,End,Dim,Goto,Gosub usw. bei Basic und zb.
Writeln beim alten Pascal kann ich mir sofort was drunter vorstellen
ohne eine Großartige Ahnung vom Programieren zu haben.(Englisch
vorrausgesetzt.)
Selbst bei Assembler sind die Mnemonics relativ einleuchtend.

C ist vom Sprachgebruch einfach Abstrakter und wirkt sehr zerrissen.
Bei einer If Anweisung hat es nichtmal für ein Then gereicht.
Nein da mußte unbedint was Kryptischens hin.
Wenn man sich die ersten 20 Zeilen (Code,nicht Def.) so einfach mal
ansieht dann scheint es als ob der Texst nurnoch aus Sonderzeichen
besteht.
Das ist es was mich persönlich davon abhält,egal ob
Plattformü+bergreifend oder nicht.

Ihr habt vieleicht das Topic letztens mitbekommen wo einer ein
Einfaches Basic für den PC gesucht hat.(Irgendwas mit Serieller und
Einfach usw.)
Der wollte auch nur mal was relativ einfaches umsetzen und war auch
abgeschreckt wie Komplex schon VB daherkommt (Und irgendwas war glaub
ich noch mit der Biblio.).

Wenn einer was großes vorhat dann wird er schon in einem der Häfen von
C oder sonstwas einlaufen da muß wohl keiner Angst haben.

Was mir hier immer so aufgefallen ist das wenn jemand was in Basic will
er gleich von oben herab behandelt wird oder man schon fast mit Gewallt
und Spott versucht ihn zu C oder Assembler zu bekehren.
Dazu klingt das dann immer recht Hämisch.
Das zeugt nicht gerade von Charakter.

Mich juckt es momentan mal auszuprobieren wie hier reagiert wird wenn
mal einer über C abläster und es durch den Kakao schleift.
Ich wette meinen Weihnachtsteller das dann ein richtiges Geheule und
geschreie losgeht wie in nem AMD Forum wenn einer "AMD ist schei..."
schreibt.


@Hannes


>Die vielen Fragen zu BASCOM hier im Forum
>zeigen aber, dass viele BASCOM-Nutzer im Denken so weit von der
>Hardware entfernt sind, dass sie nichtmal in das Datenblatt des
>jeweiligen AVRs schaun.

Nein das zeigt nur das der Einstiegslevel bei Basic viel niedriger ist
als bei C oder Assembler und das dort der Bedarf an Fragen größer ist.

Gemessen an der Gesammtzahl der Fragen sehe ich hier nur wenige Fragen
zu Bascom.
Das mag dir als C-Anhänger vieleicht anders erscheinen aber den Effekt
haben auch andere Leute die eine bestimmte Marke bevorzugen.
Die AMDler meckern über die Intelllianer und umgekehrt,Atianer wünschen
Nvidianern die Fresszelle an den Hals und die umgekehrt den Atianern die
Kühlerfäule.
An fremden Kindern rumzumeckern ist immer einfacher als bei den eigenen
fehler zu finden.Das ist Menschlich '-)


Wie gesagt,mich juckt es wirklich inne finger e mal auszuprobieren :D




@Rahul

Kennst du den Spruch "Es kann keiner in Frieden leben wenn es dem
Nachbarn........." ?  '-)

von Rahul (Gast)


Lesenswert?

@Ratber: "es kann der Frömmste nicht in Frieden ..."
Danke für den Schuß vor den Bug, manchmal lasse ich mich in solchen
Sachen einfach zu sehr gehen. Das ist hier halt das Internet. Und die
Wahrscheinlichkeit jemals jemanden zu treffen mit dem man hier zutun
hat, ist für mich ziemlich gering. Deswegen ist auch einfach, Leute
(die einem gar nichts getan haben), nieder zu machen.

Ich wrede mich einfach bei solchen Sachen in Zukunft entweder
raushalten oder sachliche Hilfestellung leisten.

Allerdings sehe ich immer noch das Problem (nicht unbedingt an diesem
Thread), dass die Leute nicht mehr ins Datenbaltt gucken, sondern
lieber hier eine Frage stellen. Allerdings wird die Frage auch häufig
gestellt, obwohl drei Zeilen tiefer das gleiche Problem behandelt wird
(Forensuche benutzen...).

Manchmal hilft es, einfach mal in den Chat zu gehen. Entweder bekommt
man da die gleichen Antworten wie hier ("Guck ins Datenblatt!"), was
dann Speicher auf dem Server spart, oder man kann mit denjenigen
darüber diskutieren. Mir ist schon häufiger passiert, dass ich im Chat
eine Frage formuliert habe, um mirr dann selbst die Antwort zu
geben...

Nichts für ungut...

von Ratber (Gast)


Lesenswert?

>Danke für den Schuß vor den Bug,

Schießen wollte ich eigentlich nicht,nur zum nachdenken anregen.


>Allerdings sehe ich immer noch das Problem (nicht unbedingt an diesem
>Thread), dass die Leute nicht mehr ins Datenbaltt gucken, sondern
>lieber hier eine Frage stellen. Allerdings wird die Frage auch häufig
>gestellt, obwohl drei Zeilen tiefer das gleiche Problem behandelt
wird
>(Forensuche benutzen...).

Ja,da stimme ich dir zu.
Ist aber noch nie anders gewesen das viele Leute lieber den bequemen
Weg gehen anstatt etwas Zeit und Hirnschmalz zu investieren.
Ich helfe nur bis zu einem bestimmten Punkt.
Wenn ich merke das derjenige überhaupt keine Motivation hat etwas zu
lernen und ich nur von anderen die Arbeit machen läst dann sage ich es
ihm auf den Kopf zu (Ich bin manchmal sehr direkt weil ich ungern um
den heissen brei rede) oder ich stelle jegliche Aktivität ein.



Ich weiß nicht woran es liegt das die Leute so bequem sind
Vermutlich am Internet das ja immer da ist und wo man ohne
Gesichtsverlust viele Leute finden kann.

Ich habe mit der Bastelei angefangen da nannte sich das Internet noch
Arpanet und war für Zivilisten nur bedingt zugänglich.
Da hieß es Bücher lesen die man meist auch noch teuer bezahlen mußte.
Da war Experimentieren angesagt wenn man niemanden kannte der einem was
beibringen konnte.
Datenblätter gabs da fast garnicht und wenn dann nur in Form von
Tabellen die man sich schicken lassen konnte (Kostet wieder Geld)
Da mußte man schon selber aktiv werden um was zu begreifen.

Ja,heute ist das recht einfach.
Etwas Googeln,finden,nachbauen.................und nix versatanden.

Hab mir ab und an mal ausgemalt was passiert wenn das Internet und die
Handynetze für zb. 1 Jahr ausfallen.
Vermutlich sieht man dann wieder mehr Menschen auf der Straße bei
Freizeitaktivitäten ggg

von Hannes L. (hannes)


Lesenswert?

@Ratber:

Missverständnis: Ich kann kein C, C ist mir zu kryptisch.

Ich mag eigentlich BASIC. Aber BASCOM erfüllt meine Ansprüche nicht und
kostet auch noch Geld. Deshalb nutze ich Assembler.

Wie du siehst, sind unsere Ansichten garnicht soweit auseinander.

Schönen vierten Advent noch...

Bit- & Bytebruch...
...HanneS...

von Ratber (Gast)


Lesenswert?

@Rahul

Ja,nochmal was zu "Schuss vor Bug" usw.

Ich wollte keinen persönlich angreifen sondern nur auf die Unsitte
hinweisen unpopuläres einfach plattzutreten.

Wenn einer seine Heizungssteuerung mit Sprachausgabe auf ner C-Control
1  unter CCBasic hinbekommen hat dnn ist das auch ok.
Wichtig ist das es funktioniert und nicht womit oder worauf es gemacht
wurde.

Oder könnte sich jemand vorstellen jemand anderes nur wegen seiner
Handymarke zu beurteilen ? '-)


@Hannes

>Missverständnis: Ich kann kein C, C ist mir zu kryptisch.

Das war aucxh nicht auf dich persönlich gemünzt.
War nur nen Beispiel.


>Ich mag eigentlich BASIC. Aber BASCOM erfüllt meine Ansprüche nicht
>und kostet auch noch Geld. Deshalb nutze ich Assembler.

Ja,wie gesagt.Keine Sprache kann alle Wünsche erfüllen.
Wenn ich aus unterschiedlichen Gründen an die Grenzen von Bascom stoße
dann ist auch bei mir Assembler angesagt.
Entweder Inline oder Pur.
Aber solange ich Zeitlich sparen kann nehme ich Bascom (Manchmal auch
Fast-AVR .zb. bei einigen Displays).

Wenn es mir nutzt dann habe ich auch keinerlei Hemmungen Turtlebasic zu
nehmen gggg


>Wie du siehst, sind unsere Ansichten garnicht soweit auseinander.
>
>Schönen vierten Advent noch...

Yo,dir auch.


Ratber

von Togger (Gast)


Lesenswert?

...und jetzt alles schön Auschneiden und Aufheben, denn die nächste
Bascom Frage kommt bestimmt.
Erspart viel Tipparbeit ;-)
Sonst vermisse ich mein gewohntes Déjávu Erlebnis hier.
Und eines darf auch nie fehlen: der beliebte Hinweis ins Datenblatt zu
schauen lol ich würde was vermissen!
Übrigens: es gibt Foren da werden solche Beiträge gnadenlos gelöscht.
Schade eigentlich, denn es steigert ungemein den Unterhaltungswert bzw.
zeigt den Humor einiger uC Experten.

lg Ralf

von elseifboy (Gast)


Lesenswert?

junge junge. hier gehts ja richtig zur sache! im inneren dieses forums
brodelt es wohl etwas.

@allgemein: ich habe vor ca. 1 monat mit µC angefangen. als allererstes
habe ich mich in dem tutorial dieser seite schlau gemacht. hier wird
einem assembler ans herz gelegt. nach den ersten zeilen wo nur stand
"bahnhof,tmp,bahnhof,pop,bahnhof" dachte ich mir: hmmmmmmm es muss
doch noch irgendwo dieses basic geben, was du von früher aus der schule
kennst. das war zwar auch schon gruselig aber eben nicht so freaky wie C
oder asm.
beruflich habe ich NICHTS mit elektronik oder programmierung zu tun.
wenn ich irgendwo eine doku über dunkle materie gesehen habe, kann ich
auf einfache weise nachvollziehen, was die herrschaften da gesagt
haben, ohne kryptische formeln zu verstehen oder gar astrophysik
studiert zu haben.
selbstverständlich kannste einem profi nicht mit basic kommen. das ist
so, als wenn du einen chirurg zwingst, ein skalpell-set vom baumarkt zu
benutzen.

ein spruch von mir: "Bascom ist das HTML der Mikrocontroller" ;)

@Rathber:
<"Sind die Herren nicht zufällig auch Linux-Fans ?
Das Verhalten würde Arttypisch passen. '-)"

diese bemerkung (offensichtlich humorvoll geschrieben, wurde ja derbe
negativ aufgefasst :))

>Die vielen Fragen zu BASCOM hier im Forum
>zeigen aber, dass viele BASCOM-Nutzer im Denken so weit von der
>Hardware entfernt sind, dass sie nichtmal in das Datenblatt des
>jeweiligen AVRs schaun.

>Nein das zeigt nur das der Einstiegslevel bei Basic viel niedriger
ist
>als bei C oder Assembler und das dort der Bedarf an Fragen größer
ist.

dem kann ich nur voll und ganz zustimmen.

@SnowCrash:
aaaaaah mit sowas komme ich schon eher zurecht. danke!

ich werde anfang kommender woche die platine ätzen und bestücken. wenn
das proggie nicht richtig will, melde ich mich wieder. ;)

btw... bei mir läuft win 98 se (die error edition) :))
... und die forensuche wurde bereits betätigt

von Hannes L. (hannes)


Lesenswert?

98SE läuft bei mir auch... - Für LINUX bin ich zu doof...

...

von Ratber (Gast)


Lesenswert?

Yo und bei mir werkelt überall W2k.

Zu doof für Linux ist keiner (Ok,es gibt doch einige aber die sind auch
zu doof für Windows oder nen Taschenrechner)
Man muß nur entscheiden ob man es braucht oder nicht.

von pebisoft (Gast)


Lesenswert?

bleib bei deinem win98se oder me.
ist eine tolle sache.
ich kenne die beiden jetzt sehr gut und wenn es bei dir läuft mit dem
proggen und so...bleib dabei.
in linux gibt es nicht so gute progsprachen und wenn, dann sind die so
auf geblasen, das der privatanwender davon erschlagen wird.
auch dieses tcl... ist nicht das gelbe vom ei.und jeder
linuxschlaumeier bringt eine änderung von einer änderung raus, du
steigst da nicht mehr durch.


pebisoft

von pebisoft (Gast)


Lesenswert?

ich schreibe auch mit purebasic ganz leicht selber dll-dateien.
die kann man überall verwenden, wenn du so etwas machen möchtest ist
sehr interessant, diese dll zb verwende ich dann in blitzbasic3d um die
windowgui anzusprechen.


pebisoft

von Hannes L. (hannes)


Lesenswert?

Schön für dich, Peter...

Mit der PureBasic-Demo hatte ich aber große Probleme, brachte den
Rechner immer zum Absturz (auf 3 unterschiedlichen Rechnern probiert).
Daher habe ich es aufgegeben. Weiß der Geier woran das lag.

Das WIN98SE nutze ich, weil es "ehrlich ist" (gekauft) und weil man
ohne Treibertricks die I/O-Adressen ansprechen kann...

XP-Home habe ich zwar auch (zum neuen Rechner), nutze ich aber nur für
Multimedia (eigene Video-DVDs)...

Schönen vierten Advent noch...
...

von Ratber (Gast)


Lesenswert?

@Hannes

>Das WIN98SE nutze ich, weil es "ehrlich ist" (gekauft) und weil man
>ohne Treibertricks die I/O-Adressen ansprechen kann...

yo,das geht mittlerweile unter W2k (ab SP...3 glaub ich) und XP (Ab SP
1 oder 2.Weiß auch nicht genau.fällt ja erst hinterher auf) auch ohne
Probleme.
Jedenfalls kann man sich die üblichen Spielereien (Porttreiber usw.)für
Parportgeschichten schenken.

Ja,aber mal von Stbilitätsgeschichten abgesehen hat W9x den Vorteil das
es sehr schlank und recht flott läuft.
Die W9x waren einfach "Handlicher" :D

>XP-Home habe ich zwar auch (zum neuen Rechner), nutze ich aber nur
>für Multimedia (eigene Video-DVDs)...

Ja,XP-Pro ist mir zu fett und ich sehe nicht ein mir ein System zu
insten um als erste Amtshandlung erstmal nen Antispy und ne Externe
Firewll zu insten damit es nicht sofort ne Stasistandleitung nach
Redmond legt.
Und über die Home rede ich erst nicht.
Spielzeug sollte eigentlich billiger sein gg



Zu Purebasic:

>Weiß der Geier woran das lag.

Ich kann nur von meinen wenigen und natürlcih vondenen eines Kollegen
(Da hab ich es eigentlich her) erfahrungen berichten und da ist nix
besonderes bekannt.

Was aber sein kann ist das man die persönlichen lieblinge vergisst die
man auf jedem Rechner installiert.
also zb. den lieblings Bildbetrachter,Video-/Mp3-Player usw.
Wenn diese sich beißen dann entsteht schnell der Eindruck das eine
anwendung nicht stabil läuft.

Sowas ist mir vor 9 Jahren mit nem Telestrieber (ISDN) passiert.
Nie gabs Probleme und das Drüberbügeln als Update war lachhaft einfach
(Kann sich so mancher Hersteller Heute ne Scheibe von abschneiden) das
man nicht mehr drüber nachgedacht hat.
Tka und dann ging es irgendwann los.
Fehlermeldungen Soundtreiber.
Nach einigem Hin und her Spundtreiber deinstalliert.
Dann wechselte der Fehler sofort auf das Netzwerk.
Nach deinstallation hieß es dann das DirectX fehlerhaft wäre.
Dann Grafik und Maus.
Zu dem Zeitpunkt waren 8 Stunden wilde sucherei und ne Parallele
neuinstallation (Andere Pri) mit gleichemn Fehler gelaufen bis mir der
bisher so unauffällige und stabile Capitreiber wieder einfiel den ich
am Abend vorher geupdatet hatte.

Hehe,einfach durch seinen Vorgänger ersetzt und gut wars.

Vieleicht haste ja auch einige dieser "Unauffälligen Verdächtigen"
auf deinen Systemen ? (Nur so als Möglichkeit)

von Ratber (Gast)


Lesenswert?

Korrektur was die Porttreibergeschichte für XP betrifft:

Ich hatte gerade ine Gespräch mit einem Bekannten der meinte das es
unter XP doch nicht ohne speziellen Portreiber gehen würde.
Da ich das jetzt nicht gegenprüfen kann ziehe ich meine Aussage
diesbezüglich zurück.
Es kann auch sein das ich einigen Anwendungen aufgesessen bind die
diese Funktionalität mittlerweile von Hause aus mitbringen.

von Fird N. (farnab)


Lesenswert?

hi leute,

habe eine problem und zwar möchte ich attiny 24 programmieren was für
behinderte menschen zum einsatz kommt.
das programm läuft so, der anwender bedient über eine sensor das gerät
was gleich piept und nach 4 sekunden wieder piet und nach 6 sekunden
wieder piept (Jetzt wechselt er auf dem 2 Realis) und nach8 sekunden
wieder(jetzt wird Alarm über den Relais 3 ausgelöst).
jetzt möchte ich über einen Jumper die zeit veriabel halten so das ich
die zeit durch das setzen eines jumpers verkürzuen oder verlängern kann.
das programm sieht so aus vielleicht könnt ihr mir weiter helfen!!!!!!!
er zeigt mir (3 parameter expected) als Fehler



'Leonardo III 26.6.2009 ergoMotix(R)

$regfile = "attiny24.dat"
$crystal = 4000000
Config Portb = Output
Config Porta = Output                                       'Alle Pins
werden als Ausgang definiert

' define input
Config Pina.4 = Input                                       'Ein Pin
(PA0) wird wieder als Eingang definiert
Porta.4 = 1
Config Pina.2 = Input                                       'Ein Pin
(PA0) wird wieder als Eingang definiert.
Porta.2 = 1                                                 'Jumper Für
K2-Betrieb
Config Pina.7 = Input                                       'Interner
Pullup Widerstand ein 100K
Porta.7 = 1                                                   'Ein Pin
(PA0) wird wieder als Eingang definiert


Dim T As Long
T = 0
Dim S As Bit
S = 0
Dim J As Bit
                                                               'K1 0
oder 1
Dim J2 As Bit
'Zeitfestsetzung
                                                               'Lidschlag
Programm
Dim X As Long
'Zeitvariable


' Set I/Os
'Portb.0 = 0                                                 'PB0 Pin5
K2_MOS Halbleiterreilais zbv
'PortA.5 = 1                                                 'PB1 Pin6
K3_Mec Mechanisches Relais
'Portb.2 = 0                                                 'PB2 Pin7
Buzzer Piezo mit integrierter Elektronik
'Portb.3 = 0                                                 'PB3 Pin2
SENSOR
'Portb.4 = 0                                                 'PB4 Pin3
K1_MOS Halbleiterreilais Umfeld
'Portb.5 = 0                                                 'PB5 Pin1
Reset  Ohne Weiteres Nicht verwendbar
                                                            'Pin4 GND,
PIN8 VCC

' define Aliases
K1_mos Alias Porta.3                                        'Zuweisung /
Platzhalter
K2_mos Alias Portb.0                                        'Zuweisung /
Platzhalter
K3_mec Alias Porta.5                                        'Zuweisung /
Platzhalter
Buzzer Alias Porta.0                                        'Zuweisung /
Platzhalter
Sensor Alias Pina.4




      X = 5000
      K1_mos = 0                                            'Pin wird
auf High, also 5V geschaltet
      K2_mos = 0                                            '<-
      K3_mec = 1                                            'Pin wird
auf High, also 5V geschaltet
      Buzzer = 0                                            'Pin wird
auf High, also 5V geschaltet



'Main_Loop______________________________________________________________ 
_____________________________________


Main:

Do

     If Sensor = 1 Then
         T = T + 1


         If S = 0 Then
            If T =< 24000 Then
               K1_mos = 1                                   'Pin wird
auf High, also 5V geschaltet
               K2_mos = 0                                   '<-
               K3_mec = 1
            End If

         Else
            If T =< 24000 Then
               K1_mos = 0                                   'Pin wird
auf High, also 5V geschaltet
               K2_mos = 1                                   '<-
               K3_mec = 1
            End If
         End If                                             'Pin wird
auf High, also 5V geschaltet

     If J2 = 1 Then

         If T = 1 Then
            Gosub Beep
         End If

         If T = X Then
            T = T + X

           Gosub Beep

            End If

         If T = X + 18000 Then
            T = T + X
           Gosub Beep
         End If

         If T < X + 24000 Then
            T = T + X
            If T > 18000 Then
               T = T + X
              If Sensor = 0 Then
                  If J = 1 Then                             'jumper
nicht gesteckt, BT-Anschluß pin
                     Toggle S
                  End If
              End If
            End If
         End If
       End If

           If T > 24000 Then
           Gosub Beep
           Gosub Alarm
           Waitms 500
         End If

      If J2 = 0 Then
         If T = 1 Then
            Gosub Beep
         End If

         If T = 12000 Then
           Gosub Beep
         End If

         If T = 18000 Then
           Gosub Beep
         End If

         If T < 24000 Then
            If T > 18000 Then
              If Sensor = 0 Then
                  If J = 1 Then                             'jumper
nicht gesteckt, BT-Anschluß pin
                     Toggle S
                  End If
              End If
            End If
         End If
       End If

         If T > 24000 Then
           Gosub Beep
           Gosub Alarm
           Waitms 500
         End If
                                                            'Pin wird
auf High, also 5V geschaltet
     Else
         T = 0
         K1_mos = 0                                         'Pin wird
auf Low, also 0V geschaltet
         K2_mos = 0
         K3_mec = 1                                         'Pin wird
auf Low, also 0V geschaltet

     End If

         'Waitms 10

Loop

'Procedure
Beep____________________________________________________________________ 
__________________________

Beep:

      Buzzer = 1
      Waitms 25
      Buzzer = 0

      If S = 1 Then
         Waitms 25
         Buzzer = 1
         Waitms 25
         Buzzer = 0
      End If
Return



 'Procedure
Alarm___________________________________________________________________ 
___________________________

Alarm:

      K1_mos = 0                                            'Pin wird
auf Low, also 0V geschaltet
      K2_mos = 0
      K3_mec = 0                                            'Pin wird
auf Low, also 0V geschaltet
Return

End

von Fird N. (farnab)


Lesenswert?

was stimmt den hier nicht jungs!!!!!!!!
x soll eine zeitvariable sein die ich oben festlege bsp. 5000.
j2 ist der jumper

If J2 = 1 Then

         If T = 1 Then
            Gosub Beep
         End If

         If T = X + 12000 Then
             Gosub Beep
         End If

         If T = X + 12000 Then
             Gosub Beep
         End If

         If T < X + 18000 Then

            If T > X + 24000 Then

              If Sensor = 0 Then
                  If J = 1 Then                             'jumper 
nicht gesteckt, BT-Anschluß pin
                     Toggle S
                  End If
              End If
            End If
         End If
       End If

von Karl H. (kbuchegg)


Lesenswert?

Fird Nahla schrieb:
> was stimmt den hier nicht jungs!!!!!!!!

Du sagst uns nicht, was der Code machen soll, was er statt dessen macht.
Das stimmt nicht.


>          If T < X + 18000 Then
>
>             If T > X + 24000 Then


Es dürfte wohl für eine beliebige Zahl T ziemlich schwierig sein, 
gleichzeitig kleiner als X + 18000 und größer als X + 24000 zu sein. Für 
so ziemlich jedes X. Schliesslich ist X + 18000 kleiner als X + 24000


Edit: Ausserdem ist es ziemlich sinnfrei einen 4 Jahren alten Thread 
auszugraben, nur weil dein Problem eine 'ähnliche Fehlermeldung' ist.

von Fird N. (farnab)


Lesenswert?

oh sorry das war falschrum so sollte es sein,
er soll zwischen den beiden zeiten auf das andere relais umschalten 
können.
aber das x addieret er irgenwie nicht, also ohne das x klappt das aber 
mit leider nicht???

  If T < X + 24000 Then
      If T > X + 18000 Then
         If Sensor = 0 Then
            If J = 1 Then      'jumper nicht gesteckt,BT-Anschluß pin
               Toggle S
             End If
           End If
      End If
    End If

mfg

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.