mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit der Programmierung Bascom


Autor: jay khan (janosch2405)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Roland T. (rolandt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erkläre mal genauer, was Du mit gegenseitiger Verriegelung meinst.

Autor: jay khan (janosch2405)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jay khan (janosch2405)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so ähnlich :-)

rommé!! ^^

Autor: Falk Brunner (falk)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So in etwa.

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jay khan (janosch2405)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok danke falk! werde es mal testen :-)

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde noch eine Variable mehr spendieren. Das vereinfacht die 
Abfrage und macht die Lampen nicht zum Eingabegerät.
oben:

Lampe := 0

Solange(Lampe == 0) {
  Wenn (Taste 1 gedrückt) { Lampe := 1 }
  Sonst Wenn (Taste 2 gedrückt) { Lampe := 2 }
  Sonst Wenn (Taste 3 gedrückt) { Lampe := 3 }
  Sonst Wenn (Taste 4 gedrückt) { Lampe := 4 }
}

SchalteLampeAn(Lampe)
Solange ('Reset' nicht gedrückt) { Chips essen }
SchalteLampenAus()

Zurück nach oben: in einer möglichst strukturierten Weise

Geht je nach Beschaltung auch generischer.

Autor: Paul Baumann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch eine Variante von Falk's Idee.

MfG Paul

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: bascom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: jay khan (janosch2405)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.