mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom 2 Pineingänge an 1 Ausgang


Autor: Reinhard Schmaderer (reini)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich komm da nicht weiter.
Ich will ne Fernbedienungsempfänger bauen.
es Funst alles bestens, bis auf folgendes Problem ich muß 2 Leitungen 
(Pinc.5 + Pinc.4) zur selben Zeit an 1 Ausgang (Portc.1) schalten mein 
Code haut irgentwie nicht hin.

 Case 8
      Portc.1 = Pinc.5
      Portc.1 = Pinc.4
      Waitms 200
      Portc.0 = 0
      Locate 1 , 10
      Lcd "P9"

Kann mir da jemand helfen?

mfg
reini

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schreib mal genaum, was du willst...
Wenn eine H und eine L ist, können irgendwie nicht beide auf den Ausgang 
gehen :-)
In deinem Code bestimmt ausserdem nur PINC.4 den Zustand (ganz kurz auch 
mal PINC.5)

Autor: Reinhard Schmaderer (reini)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Also PinC.5 und PinC.4 sind High, PinC.1 ist Low. Am Gerät sind 2 
Taster, die ich durch den Atmega 8 ersetzen will. Das Kabel C.5 kommt 
vom Gerät, geht zu Taster 1 und am Kabel C.1 zurück. Das Kabel C.4 kommt 
vom Gerät, geht zu Taster 2 und am Kabel C.1 zurück. Das Gerät erkennt 
mit Hilfe der 2 Taster nun 3 verschiedene Befehle, nämlich Taste 1 
gedrücht, Taste 2 gedrückt und Taste 1 + 2 gleichzeitig gedrückt! Da ich 
nun beide Tasten ersetzen will habe ich eben Kabel C.5 an PinC.5, Kabel 
C.4 an PinC.4 und Kabel C.1 An PinC.1 des Atmega angeschlossen und 
wollte die 3 Schaltzustände mit dem Atmega machen. Es funst mit Befehl 1 
oder 2 bestens, nur eben nicht mit 3 (also beide gedrückt).

mfg
reini

Autor: Moi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne mich mit Bascom nicht aus, aber müsste es nicht so heißen:

 Case 8
      Portc.1 = Pinc.5 + Pinc.4
      Waitms 200
      Portc.0 = 0
      Locate 1 , 10
      Lcd "P9"

Autor: Moi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vergiss, was ich geschrieben habe!!!

Autor: Moi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tatsache ist, dass es so nicht funktionieren ist. Und Tatsache ist, das 
wohl keiner versteht, was Du wirklich willst.

Eine Skizze wäre da sehr hilfrei.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo, mal mal ein Bild.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also PinC.5 und PinC.4 sind High, PinC.1 ist Low. Am Gerät sind 2
Taster, die ich durch den Atmega 8 ersetzen will. Das Kabel C.5 kommt
vom Gerät, geht zu Taster 1 und am Kabel C.1 zurück. Das Kabel C.4 kommt
vom Gerät, geht zu Taster 2 und am Kabel C.1 zurück. Das Gerät erkennt
mit Hilfe der 2 Taster nun 3 verschiedene Befehle, nämlich Taste 1
gedrücht, Taste 2 gedrückt und Taste 1 + 2 gleichzeitig gedrückt! Da ich
nun beide Tasten ersetzen will habe ich eben Kabel C.5 an PinC.5, Kabel
C.4 an PinC.4 und Kabel C.1 An PinC.1 des Atmega angeschlossen und
wollte die 3 Schaltzustände mit dem Atmega machen. Es funst mit Befehl 1
oder 2 bestens, nur eben nicht mit 3 (also beide gedrückt).

Mein Text2Schematic Konverter ist gerade abgestürzt... :(

Auf dieselbe Fläche passt locker ein Bild mit dem Schaltplan.
Das ist das anerkannte Kommunikationmittel unter Elektronikern.

Mein Vorschlag: Mal ein Bild, mach ein Foto und poste das.
Dann wird dir geholfen.

Autor: JHeidi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke Du betrachtest die Schaltung verkehrt herum. Meiner Meinung 
nach kommt der High-Pegel (oder Low, je nachdem) vom Kabel C.1 und wird 
über die Taster an die Kabel C.4 und C.5 gegeben. Nur auf diese Weise 
können 3 Schaltzustände erkannt werden.
Nach Deiner Ansicht, dass das Kabel C.1 der Eingang (am Gerät) ist, hast 
Du die beiden Tasten einfach ODER-verknüpft.
Die ATmega-Pins C4 und C5 müssen also Ausgänge sein und nicht Eingänge. 
Also in etwa so sollte es funktionieren:
Ddrc = &B11111100  
'PortC.0 = Eingang , PortC.1 = Eingang , PortC.2 - PortC.7 = Ausgänge


Portc = &B00000011
'Pullup-Widerstände an den Eingängen aktivieren für Taster die nach Masse schalten
'Ausgänge auf L setzen

   Main:

      If Pinc.0 = 0 Then
      Set Portc.4
      Else
      Reset Portc.4
      End If

      If Pinc.1 = 0 Then
      Set Portc.5
      Else
      Reset Portb.1
      End If


   Goto Main


Auf diese Weise sind die Ausgänge High solange die Taster gedrückt sind. 
Um den dritten Schaltzustand musst Du Dir auch keine Gedanken machen. 
Das funktioniert quasi nebenbei.

Jürgen

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.