Forum: Mikrocontroller und Digitale Elektronik Eingaenge in Reihe schalten


von Dietmar (Gast)


Lesenswert?

hallo jungs,

habe heute ein brett vor dem kopf.

habe 2 atmegas8 amlaufen mit lcd usw.

der eine schickt seine daten an den anderen, zb schalter am atmega1 
ausgaenge vom atmega2 werden geschaltet, schalter Atmega2 werden auf LCD 
vom atmega1 angezeigt, alles super, aber ich habe eine blockade 
momentan,
habe schon im forum gesucht aber nichts gefunden. ich moechte 2 
ausgaenge in reihe schalten. siehe beispiel unten.

beispiel
If Pind.6 = 1 Then
     Adresse = 1
     Print Adresse

  End If

  If Pind.7 = 1 Then
     Adresse = 2
     Print Adresse
   End If

d.6 =1 und D.7=1 = Adresse = 3

ich danke fuer eure hilfe jetzt schon mal im Vorrau,
Dietmar

Die Rechtschreibung lassen wir heute mal weg, habe schon Kopfschmerzen 
davon.

von Klaus W. (mfgkw)


Lesenswert?

Vielleicht habe ich es richtig verstanden:
1
  Adresse = 0
2
3
  If Pind.6 = 1 Then
4
     Adresse = Adresse + 1
5
     Print Adresse
6
7
  End If
8
9
  If Pind.7 = 1 Then
10
     Adresse = Adresse + 2
11
     Print Adresse
12
   End If

Jetzt ist Adresse 0, 1, 2, oder 3; je nachdem ob keiner
oder Pin6 oder Pin7 oder beide an sind.

Gute Besserung!

von kurz (Gast)


Lesenswert?

Mal im Groben so:

ergebnis = 1 +2
print ergebnis


oder ist das zu einfach?

von Klaus W. (mfgkw)


Lesenswert?

Die Print... gehören natürlich noch aus den If-Blöcken raus,
dafür ein Print ganz am Ende.

von Dietmar (Gast)


Lesenswert?

das ja richtig,

aber ich moechte es ja so machen
 eingang  adr
   1       1
   2       2
  1+2      3
   2       4
usw.

binaer halt und bei eingang 1+2 =3 ist momentan die blockade bei mir.

von Dietmar (Gast)


Lesenswert?

das ist richtig ist ja auch nur ein beispiel weil print befehl kommt am 
ende da ergebnis ja sonnst falsch waehre.

von bix (Gast)


Lesenswert?

Vielleicht so?

If (Pind.7 = 0) and (Pind.6 = 1) Then
     Adresse = 1
End If

If (Pind.7 = 1) and (Pind.6 = 0) Then
     Adresse = 2
End If

If (Pind.7 = 1) and (Pind.6 = 1) Then
     Adresse = 3
End If

Print Adresse

Gruß bix

von Klaus W. (mfgkw)


Lesenswert?

Dietmar schrieb:
> das ja richtig,
>
> aber ich moechte es ja so machen
>  eingang  adr
>    1       1
>    2       2
>   1+2      3
>    2       4
> usw.
>
> binaer halt und bei eingang 1+2 =3 ist momentan die blockade bei mir.

Was denn nun?
eingang 2 soll 2 geben oder 4?

Mal angenommen, deine Pind.6 und Pind.7 sind jeweils ein Bit.
Dann kann es doch nur 4 Zustände geben:
1
  Pind.6  | Pind.7 | Adresse (falls ich es richtig verstanden habe)
2
----------+--------+------------------------------------------------
3
    0     |   0    | 0
4
    1     |   0    | 1
5
    0     |   1    | 2
6
    0     |   0    | 3

Dann kannst du es nach meinem Vorschlag machen, oder dem von bix,
oder ganz kurz:
1
Adresse = Pind.6 + 2*Pid.7

Ansonsten habe ich die Frage immer noch nicht verstanden.

von H.Joachim S. (crazyhorse)


Lesenswert?

0 & 0 =0? Oder doch =3?

So schnell kann es gehen mit der Vertipperei...:-)
"Was denn nun?
eingang 2 soll 2 geben oder 4?"

von Klaus W. (mfgkw)


Lesenswert?

ok, so soll die Tabelle aussehen:
1
  Pind.6  | Pind.7 | Adresse (falls ich es richtig verstanden habe)
2
----------+--------+------------------------------------------------
3
    0     |   0    | 0
4
    1     |   0    | 1
5
    0     |   1    | 2
6
    1     |   1    | 3

Hoffe ich...

von Dietmar (Gast)


Lesenswert?

habe mich vertippt 1 2 4 usw

von Stefan P. (form)


Lesenswert?

Adresse = (Pind & 0xC0) >> 5;

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.