Hallo erstmal. Ich habe eine kleine Hürde zu überwinden, Ich möchte einen Attiny13 Programmieren, jedoch hakt es am Programm sehr. So sehr das ich alles gelöscht habe und von vorn beginnen wollte, es klappte dann immer noch nicht. Mein Vorhaben: -Es soll ein Eingang gesetzt werden, diese bleibt gesetzt solange bis ich ihn zurücksetze (Schalter) -Nun soll mittels Poti der aktuelle Wert ausgelesen (Position) und gespeichert werden. -Ausgang 1 wird gesetzt solange ein von mir definierter Wert im Programm erreicht wurde (Endlage) -Ausgang 1 wird zurückgesetzt. -Wenn ich den Eingang zurücksetze, wird Ausgang 2 gesetzt, solange bis der vorher ausgelesene und gespeicherte Wert erreicht wurde. -Programmende, warte auf Eingang 1 Nutzen möchte ich dafür: PB0= Eingang 1 PB1= Signal Poti PB2= Ausgang 1 PB3= Ausgang 2 Ich bekomm es nicht hin, nicht einmal im Ansatz. Mein Veruchsaufbau war mit einer LOGO! von Siemens, klappte. Jetzt soll es deutlich kleiner werden. Kann mir jemand helfen?
Einen Eingang kann man nicht setzen. Man kann in einlesen. Einen "Ausgang" kann man setzen. der_ich
Also die ganze Sache ist nichts anders wie ein paar If Then Schleifen. Hast schon etwas geschrieben ? oder noch garnichts ?
Hi Ein bischen wirr, deine Beschreibung. Mein Tip: Mach dir eine Zeichnung zur Hardware. Dann blickst du besser durch. Dein Eingang st ein Schalter ? Solange dieser Schalter ein ist fahren in Richtung x, solange der Analogwert < Max. Dann Halt. Schalter aus, dann fahren in Richtung y, solange Analogwert > min. Min und Maxwerte sind Konstante. Vermute ich mal. Das Pseudoprogramm ist etwa so: Analogwert > min dann Freigabe_Y = 1 Analogwert < Max dann Freigabe_X = 1 Freigabe_X And Schalter dann Ausgang A (vor) Freigane_Y And Not Schalter dann Ausgang B ( zurück) Ist jetzt aber nix besonderes. Wenn du lernst, deine Gedanken zu ordnen und die Schritte so zu beschreiben, das es auch andere verstehen, dast du dies ganz schnell raus. Gruß oldmax
Hi
an den Bastler
>If Then Schleifen
??? Das sind Bedingungen, die man zwar zu Schleifen vergewaltigen kann,
aber für Schleifen gibt es For, While, Repeat ....
If Analogwert > min Thenn Freigabe_Y = 1
If Analogwert < Max Then Freigabe_X = 1
If Freigabe_X And Schalter Then Ausgang A (vor)
If Freigane_Y And Not Schalter Then Ausgang B ( zurück)
Nix für ungut, ich glaub, das hast du auch so gemeint.
Gruß oldmax
Ich bin da glaub ich total RAUS!!! Ich Versuche das nochmal zu Verdeutlichen: 1. Schalter Ein, Signal an PB0 2. Wert einlesen vom Poti an PB1 und speichern (das ist die Ausgangsposition, die sich immer ändern kann) 3. Ausgang 1, PB2 Setzen, solange bis der Eingestellte Wert erreicht ist (den muss ich dann manuell ermitteln und halt anpassen) 4. Signal immer noch an PB0, aber alles ruhig 5. Signal an PB0 weg, PB3 wird gesetzt. Vergleich vom gespeicherten Wert mit ist-Wert, wenn der erreicht dann stop und ende. Mir geht es erstmal rein um den Controller, ich möchte die Position eines Motors mittels Poti speichern und ihn bis Anschlag fahren lassen, dann soll er automatisch wieder zurück. Aufgrund der Platzverhältnisse geht nur ein Poti zur ermittlung der Position. Auf einen Endschalter möchte ich ebenfalls verzichten.
In C:
1 | #define UPPPER 1023
|
2 | uint16_t lower; |
3 | //1. Schalter Ein, Signal an PB0
|
4 | while( !PIN_B0 ); |
5 | //2. Wert einlesen vom Poti an PB1 und speichern (das ist die
|
6 | // Ausgangsposition, die sich immer ändern kann)
|
7 | lower = ADC; |
8 | //3. Ausgang 1, PB2 Setzen, solange bis der Eingestellte Wert erreicht ist
|
9 | // (den muss ich dann manuell ermitteln und halt anpassen)
|
10 | PORT_B2 = 1; |
11 | while( ADC < UPPER ); |
12 | PORT_B2 = 0; |
13 | //4. Signal immer noch an PB0, aber alles ruhig
|
14 | while( PIN_B0 ); |
15 | //5. Signal an PB0 weg, PB3 wird gesetzt. Vergleich vom gespeicherten Wert
|
16 | PORT_B3 = 1; |
17 | //mit
|
18 | // ist-Wert, wenn der erreicht dann stop
|
19 | while( ADC > lower ); |
20 | PORT_B3 = 0; |
21 | // und ende.
|
22 | for(;;); |
@ Peter Dannegger WOW.... Erstmal danke dafür. Das kann ich jetzt so in den Editor Kopieren und dann ab dafür? Oder muss ich außer in den Projektoptionen den Attiny13 zu definieren noch was beachten?
Hi
>Das kann ich jetzt so in den Editor Kopieren und dann ab dafür?
Du hast etwas übersehen:
Karl-Heinz schrieb
In C:
MfG Spess
Hi >Ich kann doch mit dem AVR Studio auch in C Programmieren, oder nicht? Das AVR-Studio bringt einen C-Compiler mit. Aber ob du C programmieren kannst wage ich zu bezweifeln. MfG Spess
Diese: Vince schrieb: > AVR Studio PS: Sorry, aber so wie du dich anhörst schaust du wie ein Schwein in ein Uhrwerk. Also entweder du sagst jetzt ehrlich, dass du keinen Schimmer hast und nur zu faul bist dich da rein zu arbeiten oder du strengst dich klammheimlich mal ein wenig an und überlegst dir selbst eine Lösung. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial Da steht alles was du brauchst.
Das AVRStudio reicht an Software schon um ein "Programm auf de uC zu bringen". Du brauchst noch eine Hardware dazu. Etwa ein STK500, einen AVR-Dragon. Es gibt eine Reihe von Möglichkeiten. Auch sind die einzelnen Teilaufgaben so einfach, das Du ihre Programmierung sicher in einigen Tagen oder Wochen lernen kannst. Lies Dir hier mal das Tutorial http://www.mikrocontroller.net/articles/AVR-Tutorial und http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial durch und versuche erstmal die Beispiele nachzuvollziehen, also auch selbst einzugeben, zu kompilieren und zu flashen (das ist der präzisiere Terminus). Was Peter Dannegger Dir da gezeigt hat ist nur ein Teil dessen was Du schreiben und verstehen musst. Habe bitte Verständnis dafür, das wir hier in der Regel keine fertig ausprogrammierten Lösungen präsentierten. Vielmehr geben wir hier Hilfe zu Selbsthilfe, wie man so schön sagt. Du musst schon selbst aktiv werden und Dich über die diversen kleinen und grüssen Hürden bewegen. Ob das nun im Sprung geschieht oder mittels eines Flaschenzuges spielt für uns keine Rolle. Nur eben, das Du selbst substantielle Bemühungen zeigst.
Vince schrieb: > Das kann ich jetzt so in den Editor Kopieren und dann ab dafür? Jain. Da fehlt noch das Init-Zeugs (ADC free running, IO-Pins). Und für die Portpins brauchst Du noch meine sbit.h: http://www.mikrocontroller.net/attachment/157663/sbit.h
Ich schrieb doch: Ich bin RAUS!!! Das mit dem Schwein und dem Uhrwerk kommt hin. Ich hab ne Platine mit Sockel und RS232 anschluss, kabel und AVR Studio 4 und WinAVR. Laut google und Fränzis Lernpaket soll das reichen. Ich komm aber echt nicht klar. Und je mehr ich lese desto komplizierter wird das für mich. Tut mir echt leid das meine Fragen sich so blöde anhören (sind sie vielleicht auch) aber das scheint nicht mein Gebiet zu sein.
>Ich schrieb doch: Ich bin RAUS!!! Schreie bitte nicht. Ja und? Was sollen wir nun mit dieser Aussage anfangen? Als Erklärung dafür das Du das nicht verstehst, ist das hinreichend und befriedigend. Als Motivation, das wir das für Dich programmieren aber nicht. Du wirst das Problem selbst lösen müssen in dem Du wieder hineinkommst. Ich kenne das AVR Franzis Lernpaket nicht, meine aber das es einen Bootloader hat. Dann brauchst Du nur noch ein RS232 Kabel und die Software vom Lernpaket. >Ich komm aber echt nicht klar. Und je mehr ich lese desto komplizierter >wird das für mich. Aha. Meinst Du das war für uns anders? Willkommen in der Welt der Informatik. Es wird erst schlimmer ehe es besser wird. >Tut mir echt leid das meine Fragen sich so blöde anhören (sind sie >vielleicht auch) aber das scheint nicht mein Gebiet zu sein. Dann mach was anderes. Es gibt noch andere schöne Hobbies.
Vince schrieb: > Laut google und Fränzis Lernpaket soll das reichen. Es heißt deshalb Lernpaket, weil man es natürlich auch durcharbeiten muß. Es transferiert nicht magisch das Wissen in Dein Gehirn, wenn Du es nur auf dem Tisch liegen hast.
>Es transferiert nicht magisch das Wissen in Dein Gehirn, wenn Du es nur >auf dem Tisch liegen hast. Ich wusst doch: Da ist ein Haken an diesen Lernpaketen. :-)
Ich glaub ich werd stricken oder häkeln lernen. Nein im ernst, hab das Lernpaket durch, LED blinkt und lässt sich dimmen und Strom kann ich auch damit messen. Das ist aber alles BASCOM und C erscheint mir anhand des Beispiels weiter oben leichter. Hmm schrieb: > Habe bitte Verständnis dafür, das wir > hier in der Regel keine fertig ausprogrammierten Lösungen präsentierten. Gibts ne Ausnahme (SCHÄM) ? Auf jeden Fall erstmal ein riesen Danke für die Starthilfe.
>Nein im ernst, hab das Lernpaket durch, LED blinkt und lässt sich dimmen >und Strom kann ich auch damit messen. Na, das ist doch schon mal was. ;-) Ich würde Dir aber nicht raten mittem im Rennen das Pferd, sprich: die Programmiersprache, zu wechseln. C mag für Dich einfacher aussehen wenn Du den obigen Schnipsel anschaust, aber das ist es nicht. BASIC nimmt Dir eine Menge Arbeit ab, indem es Details vor Dir versteckt, die Du dann auch noch berücksichtigen musst. Und angesichts von: >Und je mehr ich lese desto komplizierter wird das für mich. wird Dich das vorerst noch mehr frustrieren. Du lernst mit BASIC überhaupt erstmal den uC kennen und damit hast Du genug zu tun. >Gibts ne Ausnahme (SCHÄM) ? Das kommt vor, aber viele hier und ich gehöre dazu, machen das nicht.
Also wenn du einen Schaltplan zeichnest findet sich bestimmt jemand, der dir dafür das Programm schreibt. Sind für jemanden mit Übung vllt. 5 Minuten seines Lebens. Gruss
Hi >Mir geht es erstmal rein um den Controller, ich möchte die Position >eines Motors mittels Poti speichern und ihn bis Anschlag fahren lassen, >dann soll er automatisch wieder zurück. Aufgrund der Platzverhältnisse >geht nur ein Poti zur ermittlung der Position. Auf einen Endschalter >möchte ich ebenfalls verzichten. So, nun wird das Bild fast klar. Ein Motor steht irgendwo im Nirwana. Nun schaltest du den Schalter ein und er rast vor die Wand. Huch, schnell wieder aus und er kommt zum Ausgangspunkt zurück. Aber Endschalter gibts nich. Ok, C ist einfacher wie Bascom. Das glaubst nur du. Aber egal, Bascom hast du scheinbar. Dann schau mal nach "Flankenerfassung". Wenn du deinen Schalter einschaltest, dann wechselt din Signal am Eingang, entweder von "0" nach "1" oder umgekehrt. Das ist eine Flanke. Nur hier darfst du dir den momentanen Wert des Potis einlesen. Nicht wenn das Bit am Eingang einen geschalteten Kontakt meldet, sondern nur in dem Moment, wo der Wechsel von einem Status zum anderen stattfindet. In Bascom bin ich leider nicht bewandert und Assembler spar ich mir mal. Aber es gibt die Suchfunktion und Flankenauswertung ist nun wirklich kein Geheimnis. Ich tipp da mal auf über hundert für dich brauchbare Antworten. Im Übrigen, ein kleiner Rat zum Schluss, auch wenn ich es bereits angedeutet hatte: Ein Programm zu schreiben geht nur, wenn man ein Problem oder eine Aufgabe verständlich beschreiben kann. Deine Beschreibung mag dir klar sein, aber mir scheint, das du nicht wirklich weißt, was du willst. Mir ist z.B. unklar, wieso du beim Einschalten dir einen Wert ablegen möchtest, der beim Abschalten wieder angefahren wird. Das Ding bleibt doch sowieso da und wenn du nicht Gewalt anwendest, bleibt auch der gespeicherte Wert für immer und Ewig der Selbe. Dann kannst du auch gleich eine Konstante eintragen. Und wenn die Wand nicht umgesetzt wird, ist das der Max-Weg. Dann kannst du auch den Istwert vom Poti dazu benutzen, gezielt davor anzuhalten. Die vier "Bascom"-Zeilen sollten dir eigentlich genug Hilfe dazu sein. Und nun mach mal deinen Lernkasten zu und lerne Gedanken zu ordnen. Auf einer Logo hast du das bereits umgesetzt. Na, so groß ist der Schwierigkeitsgrad nicht, das du das in Baascom auch hinbekommst. Gruß oldmax
oldmax schrieb: > Mir > ist z.B. unklar, wieso du beim Einschalten dir einen Wert ablegen > möchtest, der beim Abschalten wieder angefahren wird. Die Ausgangsposition ist verängerbar. Je nach lage ändert sich dann auch der Wert am Poti. Und da ich auf die Ausgangsposition zurück will muss er sich die vorher merken. Nur die Endposition ist fest definierbar.
Vince schrieb: > Nur die Endposition ist fest definierbar. Fest definierbar? Was denn nun? Frei definierbar oder fest eingestellt?
Lieber Vince, Da du nun schon offenkundig keine Ahnung vom Programmieren hast, solltest du dein Vorhaben erst einmal ordentlich und detailliert beschreiben (quasi ein Lastenheft schreiben). Dann würde dir und vor allem uns schon einmal klarer, worum es geht und wie man das Problem lösen könnte. Und wenn du dann noch die Hosen komplett runter lässt und uns verrätst, wofür diese Aufgabe gelöst werden soll (Hausaufgabe Projektarbeit Hobby), dann wird man dir durch deine offengelegte Ehrlichkeit viel schneller und besser helfen.
Ich fahre manuell den Motor auf die gewünschte unterste Position. Diese ist fest hinterlegt und soll angefahren werden. Die Ausgangsposition, da der Motor immer anders steht muss er sich merken um zurück zu fahren.
Wenn du es nicht schaffst, dein Anliegen in Form einer Skizze, eines Schemas, eines Blockschaltbildes oder zumindest in vernünftigem Deutsch zu schildern, kann dir kein Mensch helfen. Was ich bis jetzt verstanden habe von deinem Gekrakel: - Du hast einen Motor - Der ist auf irgend eine Art an ein Potentiometer gekoppelt - Der fährt irgendwie rum - Der hat eine (fest definierte) Ausgangsposition (Nullposition) - Der soll zu Beginn deines Programmes an diese Nullposition fahren Und wo hängst du überhaupt? Bauteilauswahl? Schaltplan? Programm? Keine Ahnung was du hast, was du willst oder ob du überhaupt ein kleines fitzelchen von Elektronik oder Programmierung verstehst.
Freund Blase schrieb: > Und wenn du dann noch die Hosen komplett runter lässt und uns verrätst, > wofür diese Aufgabe gelöst werden soll (Hausaufgabe Projektarbeit > Hobby), dann wird man dir durch deine offengelegte Ehrlichkeit viel > schneller und besser helfen. Hobby Ich habe eine Kamera die ich mit einem Joystik steuern kann. Diese Kamera steuere ich eine Belibige Position. Jetzt möchte ich aber kurz mal runtergucken ohne an die Steuerung zu gehen. Am Motor habe ich ein Poti an die Welle geflanscht. Wenn ich einen seperaten Schalter betätige soll die Kamera runtergucken. Meine Idee war, die Kamera manuell runter zu fahren, auf die Position die angefahren werden soll und den Wert den das Poti ausgibt als "Unterste Position" festzulegen. Kamera guckt jetzt irgendwo hin, wenn ich jetzt den Schalter betätige, soll der Wert des Potis geschpeichert werden "Ausgangsposition" durch Joystig manuell veränderbar. Dann soll "Ausgang 1" gesetzt werden. Die Kamera fährt runter bis "Unterste Position" erreicht ist. Wenn ich nicht mehr runtergucken möchte, schalte ich den Schalter aus und "Ausgang 2" wird gesetzt. Die Kamera fährt zurück auf Ausgangsposition. Dann ist die Kamera da wo sie vorher war. Electronics'nStuff schrieb: > Und wo hängst du überhaupt? > > Bauteilauswahl? > Schaltplan? > Programm? Am Programm.
Das hab ich bis jetzt. wenn ich nichts verkehrt gemacht habe dann müsste wenn der eingang 1 ist der Wert ausgelesen und gespeichert werden. Dann erst wird Ausgang1 gesetz bis vorgegebene Endlage erreicht ist. $regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 32 $swstack = 5 $framesize = 20 Config Pinb.0 = Input Config Pinb.1 = Input Config Pinb.2 = Output Config Pinb.3 = Output Eingang1 Alias Portb.0 Eingang2 Alias Portb.1 Ausgang1 Alias Portb.2 Ausgang2 Alias Portb.3 Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Dim "wert" As Integer Dim endlage As Integer Do If Eingang1 = 1 Then Wert = Getadc(1) Then Ausgang1 Until endlage = ´xxxxx´ ; xxxx Muss Ich Festlegen End If Loop End
Electronics'nStuff schrieb: > Wenn du es nicht schaffst, dein Anliegen in Form einer Skizze, eines > Schemas, eines Blockschaltbildes oder zumindest in vernünftigem Deutsch > zu schildern, kann dir kein Mensch helfen. Ich weiß nicht, was dieses Rumgemosere soll. Er hat hier doch die Funktion ausreichend beschrieben: Beitrag "Re: Programmierung" Und genau danach habe ich das Programm geschrieben: Beitrag "Re: Programmierung" Es fehlen nur noch ein paar Kleinigkeiten.
Nach sehr viel lesen und einigen Fehlversuchen habe ich mich entschlossen mal eine kleine Skittze zu fertigen. Dort ist mein Vorhaben zu erkennen. Mein Lernpaket, welches ich jetzt ausführlich durchgearbeitet habe konzentriert sich jedoch auf eine Fränzis Eigenentwicklung. Mit diesem Programm kann ich dann per Häckchen steuern was passieren soll. Es ist jeweils ein Bascom, Assember und C Projekt auf der CD vorhanden welche im Buch recht dürftig beschrieben sind. Ich bräuchte doch nochmal Hife von Euch.
Ok, jetzt hab ich s verstanden. Du hast eine Kamera, die zum Zeitpunkt x einen analogen Wert abhängig von einer variablen Position liefert. Nun möchtest du einen gezielten Blick in eine Richtung werfen ( Festpunkt). Wenn du alles gesehen hast, dann soll die Kamera ihre letzte Position einnehmen. Diese Position wird nicht über die Antriebsgeschichte verändert. Dieser Punkt ist mir noch nicht ganz klar, aber für das Prinzip ist das unerheblich. Wert. In dem Moment, wenn du den Schalter umlegst, hast du eine Flanke des Eingangssignales. Hab ich aber schon geschrieben, Stichwort "Flankenbildung". Zu dieser Flanke setzt du dir ein Bit. Und nur, wenn diese Flanke erkannt wird, setzt du das Bit ! Das ist entsscheidend. Nun schaust du in deinem Programm, ob dieses Bit gesetzt ist und wenn, dann merkst du dir den Wert des Potis. Dann, und auch das ist wichtig, setzt du das Bit zurück. Nun ist die Position gespeichert und wird erst wieder neu gesetzt, wenn genau die gleiche Flanke das Bit wieder setzt. Also, ich weiß, das es manchmal schwierig ist, etwas umzusetzen, aber du musst dazu wissen, das ein Controller sein Programm immer schön der Reihe nach abarbeitet.(Interrupts (fast) ausgenommen). Du liest die Eingänge ein und vergleichst diese mit einem hinterlegten Wert. Sind sie gleich, also entweder beide "1" oder beide "0" ist keine Änderung. Sind sie unterschiedlich, hat sich der Eingang geändert. (Flanke). Eine solche Operation erledigt ein XOR oder EOR oder Klartext : Exclusiv Oder. Anhand der neuen Lage kannst du erkennen, ob es ein kommendes oder gehendes Ereignis ist. Alter Wert AND Ergebnis aus Vergleich ist Flanke von "1" nach "0". Neuer Wert AND Ergebnis aus Vergleich ist Flanke von "0" nach "1". Nun setzt du ein Bit und schreibst den neuen Status vom Eingang in den hinterlegten Wert. Fertig. Schau dir dazu mal die Skizze an Gruß oldmax
Hab mich jetzt mal für Bascom entschieden und Festgelegt. Aktuell hab ich jetzt das. Was ist alles falsch?
1 | $regfile = "attiny13.dat" |
2 | $crystal = 9600000 |
3 | |
4 | $hwstack = 32 |
5 | $swstack = 5 |
6 | $framesize = 20 |
7 | |
8 | Config Pinb.0 = Input |
9 | Config Pinb.4 = Input |
10 | Config Pinb.2 = Output |
11 | Config Pinb.3 = Output |
12 | |
13 | Signal Alias Pinb.0 |
14 | Poti Alias Pinb.4 |
15 | Hoch Alias Pinb.2 |
16 | Runter Alias Pinb.3 |
17 | |
18 | Config Adc = Single , Prescaler = Auto , Reference = Avcc |
19 | Start Adc |
20 | |
21 | Dim "X" As Integer |
22 | |
23 | |
24 | Do |
25 | |
26 | If Signal = 1 ; Schalter Auf An |
27 | Then ; Dann |
28 | X = Getadc(2) ; Wert Am Poti Auslesen Und Speichern |
29 | Runter = 1 ; Und Runterfahren |
30 | Until ; Bis |
31 | Poti = Xxxxxx ; Wert Am Poti = Unterste Position Muss Ich Noch Festlegen |
32 | End If |
33 | |
34 | If Signal = 0 ; Wenn Schalter Auf Aus |
35 | Then ; Dann |
36 | Hoch = 1 ; Hochfahren |
37 | Until ; Bis |
38 | Poti = X ; Wert Am Poti = Gespeicherter Wert |
39 | Loop |
40 | End |
vince schrieb: > Hab mich jetzt mal für Bascom entschieden und Festgelegt. > Aktuell hab ich jetzt das. > Was ist alles falsch? So ziemlich alles > If Signal = 1 ; Schalter Auf An > Then ; Dann > X = Getadc(2) ; Wert Am Poti Auslesen Und Speichern > Runter = 1 ; Und Runterfahren > Until ; Bis > Poti = Xxxxxx ; Wert Am Poti = Unterste Position Muss Ich Noch > Festlegen > End If Du kannst nicht einfach hergehen und deine Gedanken einfach so in englische Wörter übersetzen. Programmiersprachen folgen Regeln! Du musst dich an diese Regeln anpassen und nicht umgekehrt. Such dir erst mal ein BASCOM Tutorial und fang mit den Grundlagen an. Und ja, das beinhaltet auch, wie die Programmiersprache funktioniert. Sonst hat das alles keinen Sinn.
Hi Nun hab ich dir so schön versucht, Flankenbildung und deren Bedeutung zu erklären. Ich geb's auf. Ein "Then" brauchst du nicht mit "dann" zu kommentieren. Aber, wenn du einen Potiwert einliest, wenn ein Schalter betätigt ist wirst du nie eine Position speichern können. Im nächsten Zyklus liest du wieder Den Wert ein und immer wieder. DU MUSST EINE FLANKE BILDEN UND DANN DEN WERT ABSPEICHERN!! Ausserdem solltest du auch mal auf die hören, die dir Tipps geben und die nicht total ignorieren. Mit einer anderen Sprache anzufangen ist nicht die Lösung. Gruß oldmax
zum Thema Flanke: So vielleicht? dim an as byte din aus as byte dim flanke as byte do an = pinb.x flanke = an xor aus if flank = 1 then rising else falling end if end if an = aus loop
Hi Ok, nagelt mich jetzt nicht auf den Syntax fest, BASCOM ist halt nicht mein Ding... vince schrieb: > So vielleicht? > > > > dim an as byte > > din aus as byte > > dim flanke as byte > > > > do > > an = pinb.x > > flanke = an xor aus > > if flank = 1 then > > rising > > else > > falling > > end if > > end if > > an = aus > > loop Nicht wirklich, eher so Variable ist nur ein Bit ! Allerdings weiß ich nicht, ob das Bit so zugeordnet werden kann. Wie gesagt, BASCOM ist nicht mein Ding. Zum Verständnis sollte es aber reichen. dim neu as bool ; damit du erkennst, welches der neue Status ist ! dim alt as bool ; und natürlich auch den alten ! dim wechsel as Bool ; das Ergebnis aus XOR ist keine definierte Flanke dim flanke_To_High as bool ; das ist Wechsel von 0 nach 1 ! dim flanke_To_Low as bool ; das ist Wechsel von 1 nach 0 ! do neu = pinb.x ; Bit einlesen, kein Byte Wechsel = neu xor alt if Wechsel = 1 then flanke_To_High = Neu and Wechsel ; kommentarlos flanke_To_low = alt and Wechsel alt=neu nur hier musst du alt neu besetzen da Äanderung vom Status end if if flanke_to_High then ; aha, Taster betätigt ; mach was Flanke_to_High = False ; Flankenmerker zurücksetzen end If loop Nun noch was zur Signallage. In der Regel werden Kontakte gegen GND gelegt, damit der interne PullUp Widerstand genutzt werden kann. Dann ist natürlich "Taster betätigt = 0", also entgegen der Denkrichtung. Damit im Programm aber mit "Taster betätigt = 1" gearbeitet werden kann drehe ich das eingelesene Bit. So ist es einfacher, den Kontakt im Programm zu bearbeiten und man kommt durch die verdrehte Logik nicht durcheinander. Gruß oldmax
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.