www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Dip-Schalter


Autor: PiCus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
nachdem ich mich schon mit meiner Frage im falschen Forum gemeldet
habe, dann hier nochmal meine Frage:

ich habe mit einem 8515 eine Relaisschaltung aufgebaut mit der ich 8
Tasten an Portd abfrage und den entsprechenden Pin an Portd setze und
mit der selben Taste rücksetze. Soweit so gut und läuft.

Nun möchte ich aber die Relais auch mit einer Funkfernsteuerung
ein/ausschlten und wollte ein Programm schreiben dass im Prinzip das
gleiche macht, Tastefunk - Relais x und das Ganze im gleichen Professor
mit einem DIP-Schalter. Also DIP-Schalter an Porta und Binär einstellen
damit ich praktisch 15 Unterprogramme anspringen könnte. Nur kann ich
den DIP-Schalter nicht einlesen. Wenn ich jeden einezeln einstelle 0001
oder 0010 oder 0100 oder 1000 geht's, nur wenn's dann 0011 sein soll
geht's immer in die falsche Richtung.

Also wie muss das Programm aussehen damit dass geht.

Ich hab BASCOM AVR 1.1.7.7 undalles andere läutf mit meinen
Basicprogrammen.

Gruss PiCus

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

frag nicht einzeln die Eingange ab, sondern les den Port ein und
maskier die anderen Bits aus.

Danach eine switch case Abfrage und fertig.

Mfg

Dirk

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann poste doch mal Deinen Code - zumindest den Teil, in dem Du den
Dip-Schalter versuchst einzulesen.

Autor: PiCus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein Teil des Codes

'-----------------------------------------
'----- Menu Auswahl
'-----------------------------------------
'Upperline
Lcd "Auswahl:"
Locate 2 , 6
Lcd "Menue"
Wait 1 :
Menue:
Do
    Debounce Pina.0 , 0 , Menue
    Debounce Pina.1 , 0 , Rast_menue
    Debounce Pina.2 , 0 , Tast_menue
    'Debounce Pina.3 , 0 , Rast_u_Tast
Loop
'Goto Menue

ich sollte noch hinzu fügen, ich möchte einen HT624 Decoder anschiessen
der auch seine Ausgänge Binär ausgibt, um damit dann 16 "Befehle" o.ä.
auszugeben.

Da Menu sollte praktisch beim Einschalten oder Reset abgearbeitet
werden, um das dazu gehörende Programm zu starten.

Also DIP-Schalter Einstellen, Spannung anlegen und das eingestellte
Programm starten.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Debounce ist zum Lesen eines DIP-Schalters nicht wirklich nötig - der
wird ja nicht permanent umgeschaltet, sondern liefert feste Pegel.

Autor: PiCus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, für eure Gedanken aber der Tip von Dirk hat gefruchtet,
guckst du

Do
   Cls
   Switch = Pina
   Select Case Switch
      Case &B11111110 : Lcd "Relais 1"
      Case &B11111101 : Lcd "Relais 2"
      Case &B11111100 : Lcd "Relais 3"
      Case &B11111011 : Lcd "Relais 4"
      Case &B11111010 : Lcd "Relais 5"
      Case &B11111001 : Lcd "Relais 6"
      Case &B11111000 : Lcd "Relais 7"
      Case &B11110111 : Lcd "Relais 8"
   End Select
   Wait 1
Loop

das LCD is nur zum Kontollieren. Manchmal braucht man einen leichten
Schag auf den Hinterkopf.

Bis zum nächsten mal. Ich versuche nun das Projekt mit dem RC5 Code zu
erweitern, kann sein dass ich dann wieder mal hilfe brauch, denn alles
was ich bbis jetzt an Code gefunden und probiert habe hat bei nicht
funktioniert.

Also schönen Feierabend und bis dann
PiCus

PS.: bin immer per emil zu erreichen.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

die Bascomfunktion GETRC5 funktioniert sehr simpel (leider ohne
Togglebit). Im Bascom Ordner befindet sich eine Demo.
Hardwarebeschaltung findest du in der Bascomhilfe.

Es liegt zu 99% meistens daran das die FB kein RC5 sendet. Nimm eine
lernbare Fernbedienung.

Die Zuordnungtabelle koenntest du dann auch fuer die RC5 FB nehmen.


Mfg
Dirk

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@PiCUS:

Dein Programm funktioniert nur solange, wie Du die anderen Portbits
nicht anderweitig benutzt / beschaltest. Besser Du maskierst die
DIP-Schalter-Pins aus, wie schon vorgeschlagen.

Stefan

Autor: PiCus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan:

Ich brauche momentan den Port nur für den DIP-SChalter. Meinst mit
ausmaskieren Portx = &B00001111 ?

@Dirk:

ich hab schon so manches gelesen über den RC5 Code und habe auch ein
paar beispiele getestet mit dem 90S1200, 90S2313, 90S8515 aber keine
hat gefunzt, könnte an der Sony FB gelegen haben, die soll ein aunderes
Format haben.

Mal noch ne Frage, wie oft kann ich eigendlich einen Professor
programmieren bis er den Geist aufgibt. Auf meinem Testboard habe ich
einen 8515 der nun so ca 500 programmierungen hinter sich hat. Wie
macht das sich bemerkbar wenn er nicht mehr will ??

ok dann bis nachdem Wochenende, denn dass gehört meiner Familie.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ausmaskieren ist nicht die Zuweisung eines Wertes, sondern die logische
verANDung eines Wertes.

In Deinem Beispiel also

   Switch = Pina AND &B1111

   Select Case Switch
      Case &B1110 : Lcd "Relais 1"
      Case &B1101 : Lcd "Relais 2"
   ... etc

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Picus:

>Ich brauche momentan den Port nur für den DIP-SChalter. Meinst mit
>ausmaskieren Portx = &B00001111 ?

Das mag momentan ok sein. Auf lange Sicht kann daraus aber ein
versteckter Bug werden, wenn Du irgendwann die restlichen Pins noch
verwendest, bei der Erweiterung in einem Jahr oder auch beim nächsten
Projekt. Dann wird die Fehlersuche umso komplizierter: wer sucht schon
in einem Sourcecode, der jahrelang problemlos funktioniert hat?

So wie es Rufus beschrieben hat, kannst Du den Code dagegen problemlos
wiederverwenden. Und nebenbei ist er auch besser lesbar, weil in der
case-Anweisung nur die Bits stehen, die auch "echte" DIL-Schalter
sind.

Viele Grüße, Stefan

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.