Forum: Mikrocontroller und Digitale Elektronik Problem mit der Programmierung Bascom


von jay k. (janosch2405)


Lesenswert?

Hallo freunde der Programmierung!!

Ich veruche mich an der Programmierung eines ATmega8 mit Bascom. 
Eigentlich klappt auch alles ganz gut! Nur jetzt will ich eine 
gegenseitige verrigelung programmieren! hab schon etliches versucht hab 
aber keine lösung dafür gefunden! Könnt ihr mir helfen? denke das das 
doch kein Problem für euch sein wird! :-) So wie ich euch kenne

DANKE DANKE DANKE

Jan

von Roland T. (rolandt)


Lesenswert?

Erkläre mal genauer, was Du mit gegenseitiger Verriegelung meinst.

von jay k. (janosch2405)


Lesenswert?

Eigentlich ganz einfach! will mit 4 tastern 4 ausgänge ansteuern! und 
wenn ich einen taster drücke kann man mit den anderen Tastern nicht mehr 
die jeweiligen ausgänge ansteuern erst nach einem Reset z.B. wie eine 
Schützverriegelung.. quasi..

von Falk B. (falk)


Lesenswert?

@ Jan Bölting (janosch2405)

>Eigentlich ganz einfach! will mit 4 tastern 4 ausgänge ansteuern! und
>wenn ich einen taster drücke kann man mit den anderen Tastern nicht mehr
>die jeweiligen ausgänge ansteuern erst nach einem Reset z.B. wie eine
>Schützverriegelung.. quasi..

Für Jeopardy? ;-)

MfG
Falk

von jay k. (janosch2405)


Lesenswert?

so ähnlich :-)

rommé!! ^^

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

So in etwa.

von AVRFan (Gast)


Lesenswert?

Das kann ja wohl nicht so schwer sein, dass mans nicht mit ein bisschen 
Überlegung hinkriegen kann.

In Endlosschleife packen:


IF (alle Lichter aus)
  {
  {Tastenzustände abfragen}

  IF (Taste A gedrückt) {Licht A einschalten}
  IF (Taste B gedrückt) {Licht B einschalten}
  IF (Taste C gedrückt) {Licht C einschalten}
  IF (Taste D gedrückt) {Licht D einschalten}
  }


Sobald irgendein Licht an ist, werden die Tasten einfach nicht mehr 
abgefragt - das ist die geniale Idee :-).

Zum Rücksetzen brauchst Du nur eine Master-Taste vorsehen, die alle 
Lichter ausschaltet.

von Falk B. (falk)


Lesenswert?

@ AVRFan (Gast)

>Das kann ja wohl nicht so schwer sein, dass mans nicht mit ein bisschen
>Überlegung hinkriegen kann.

Dann MACH es mal ganze real und praktisch nutzbar!

Dein Pseudocode kann das nämlich nicht.

MfG
Falk

von jay k. (janosch2405)


Lesenswert?

ok danke falk! werde es mal testen :-)

von AVRFan (Gast)


Lesenswert?

>Dann MACH es mal ganze real und praktisch nutzbar!

Ist das mein oder Jans Projekt?

>Dein Pseudocode kann das nämlich nicht.

Der soll auch kein fertiges Programm sein, sondern das Prinzip 
verdeutlichen. Diese Aufgabe erfüllt er, denk ich.

Nochmal das Prinzip: Man fragt in einer Endlosschleife periodisch (z. B. 
timergesteuert alle 20 ms --> Entprellungsproblem gelöst) ab, ob ein 
Taster gedrückt wurde.  Wenn ja, schaltet man sofort das zugehörige 
Licht ein.  Die Tastenabfrage findet jedoch nur statt, solange noch 
kein Licht an ist.  Rücksetzen aller Lichter auf "aus" mit einem 
gesonderten Taster.

Fertig.

von Kai G. (runtimeterror)


Lesenswert?

Ich würde noch eine Variable mehr spendieren. Das vereinfacht die 
Abfrage und macht die Lampen nicht zum Eingabegerät.
1
oben:
2
3
Lampe := 0
4
5
Solange(Lampe == 0) {
6
  Wenn (Taste 1 gedrückt) { Lampe := 1 }
7
  Sonst Wenn (Taste 2 gedrückt) { Lampe := 2 }
8
  Sonst Wenn (Taste 3 gedrückt) { Lampe := 3 }
9
  Sonst Wenn (Taste 4 gedrückt) { Lampe := 4 }
10
}
11
12
SchalteLampeAn(Lampe)
13
Solange ('Reset' nicht gedrückt) { Chips essen }
14
SchalteLampenAus()
15
16
Zurück nach oben: in einer möglichst strukturierten Weise

Geht je nach Beschaltung auch generischer.

von Paul Baumann (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch eine Variante von Falk's Idee.

MfG Paul

von Falk B. (falk)


Lesenswert?

@  Paul Baumann (Gast)

>Dateianhang: Verriegel_4_Tasten.bas (906 Bytes, 3 Downloads)

>Hier noch eine Variante von Falk's Idee.

Ähh, und was soll das? Und vor allem, hast das mal durch BASCOM gejagt? 
Der Compiler meckert garantiert. Und einen Fehler hast du auch 
eingebaut, der Pull-Up für PB0 fehlt jetzt . . .

Nur Einmal mit  . . .

MfG
Falk

von Paul Baumann (Gast)


Lesenswert?

Na klar habe ich das durch den Compiler gejagt. ...und er hat nicht mal 
gemeckert. Deinen Code habe ich dagegen nicht heil durchgebracht. Das 
war der der Grund für: "Was soll das?" ;-)

MfG Paul

von Falk B. (falk)


Lesenswert?

@ Paul Baumann (Gast)

>Na klar habe ich das durch den Compiler gejagt. ...und er hat nicht mal
>gemeckert. Deinen Code habe ich dagegen nicht heil durchgebracht. Das

???
Ich hab ihn auch compiliert. Was meckert dein BSCOM denn?

MFG
Falk

von Paul Baumann (Gast)


Lesenswert?

Loop expected, hat er gesagt. Ich habe Deinen Code nun direkt 
abgespeichert
und es geht fehlerfrei. Wahrscheinlich hatte ich vorhin bei "Copy und 
Paste" ein Stück abgesägt.

Entschuldige ein paar Mal

MfG Paul

von AVRFan (Gast)


Lesenswert?

>Ich würde noch eine Variable mehr spendieren. Das vereinfacht die
>Abfrage und macht die Lampen nicht zum Eingabegerät.

Deine Variante mit der Lampen-Variable hat noch einen Vorteil: Sollten 
mal  zwei Taster zum exakt gleichen Zeitpunkt gedrückt werden, geht dann 
trotzdem garantiert nur eine Lampe an (bei Deinem Code haben in diesem 
Fall die "höheren" Priorität vor den niedrigeren).

von Falk B. (falk)


Lesenswert?

@ AVRFan (Gast)

>Deine Variante mit der Lampen-Variable hat noch einen Vorteil: Sollten
>mal  zwei Taster zum exakt gleichen Zeitpunkt gedrückt werden, geht dann
>trotzdem garantiert nur eine Lampe an (bei Deinem Code haben in diesem
>Fall die "höheren" Priorität vor den niedrigeren).

Werfe er eine Blick auf meinen Code.

MfG
Falk

von AVRFan (Gast)


Lesenswert?

>Werfe er eine Blick auf meinen Code.

Ist ja gut, habs nun auch gesehen, die "elseif"s in Deinem voll 
lauffähigen und schlechthin als hervorragend zu bezeichnenden Code ;-) 
gewährleisten diese Funktionalität ebenfalls.

von bascom (Gast)


Lesenswert?

Diese Routine dient dazu das immer
Nur Eine Taste In Funktion Ist , Also
Alle Tasten Sind Gegeneinander Verriegelt.
http://bascom-forum.de/index.php/topic,10.msg3146.html#msg3146

von jay k. (janosch2405)


Lesenswert?

Danke Falk!! jetzt das ganze nur fürn ATMega8 :-)

und alles in Binär.. :-) muß das erstmal alles raffen sorry! :-)

bin blutiger Anfänger... aber irgendwann muß man ja mal anfangen..

DANKE DANKE

JAn

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.