mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik XOR-Gate mit 8 Eingängen


Autor: Christian Illy (alloc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wollte mal fragen, ob jmd weis, ob es ein XOR-Gate mit 8 Eingängen gibt. 
Also nicht ein Bauteil mit 4 XOR-Gates mit je 2 Eingängen sondern eben 
ein Gate (/Bauteil) mit 8, damit man die Zustandsänderung von 8 Bits 
erkennen kann.

Grüße,
Chris

Autor: nop(); (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll den dessen funktion sein ? Kannst mal die Gleichung 
hinschreiben ?  So in der Art : out = in1 x in2 x in3 x in4 x in5 x in6 
x in6 x in7 x in8

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Illy wrote:

> wollte mal fragen, ob jmd weis, ob es ein XOR-Gate mit 8 Eingängen gibt.
> Also nicht ein Bauteil mit 4 XOR-Gates mit je 2 Eingängen sondern eben
> ein Gate (/Bauteil) mit 8, damit man die Zustandsänderung von 8 Bits
> erkennen kann.


Das wäre dann eine Parity-Erkennung, d.h. Du kannst damit nur erkennen, 
ob sich eine ungerade Anzahl an Bits ändert.
Alle anderen Zustandsänderungen bewirken keine Änderung des Ausgangs.


Peter

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Illy wrote:
> Hi,
>
> wollte mal fragen, ob jmd weis, ob es ein XOR-Gate mit 8 Eingängen gibt.

Exor geht eigentlich nur mit 2 Eingängen.

> Also nicht ein Bauteil mit 4 XOR-Gates mit je 2 Eingängen sondern eben
> ein Gate (/Bauteil) mit 8, damit man die Zustandsänderung von 8 Bits
> erkennen kann.

Ich nehme mal an, dass Du keinen Komparator meinst (z.B. HC688).

Da fällt mir nur ein Paritätsgenerator ein, z.B. HC280, 4531 oder 40101. 
Aber die erkennen auch nicht jede Änderung.

Vielleicht kannst Du ja mit einem Komparator HC688 tricksen, den einen 
Ports direkt an den zu prüfenden Bus anlegen, den anderen über 
RC-Glieder als zeitliche Verzögerung. Dann entsteht bei jeder Änderung 
kurzzeitig ein Unterschied, worauf der Ausgang einen Impuls abgibt.

...

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Hannes Lux (hannes)

>Exor geht eigentlich nur mit 2 Eingängen.

Nööö. Das ght mit einer X-beliebigen Anzahl.

> Also nicht ein Bauteil mit 4 XOR-Gates mit je 2 Eingängen sondern eben
> ein Gate (/Bauteil) mit 8, damit man die Zustandsänderung von 8 Bits
> erkennen kann.

Das geht so wie du geschrieben hast nur mit Speicherregister + 8fach 
XOR, also ein Vergleich auf Gleichheit oder Ungleichheit. Ein reines 
8-fach XOR würde nämlich den gleichzeitigen Wechsel von zwei Bits nicht 
erkennen. Dein 8-fach XOR kannst du aus 2 oder 4-fach XORs 
zusammenbasteln (kaskadieren). Wird dann zwar langsamer, aber geht.

>Vielleicht kannst Du ja mit einem Komparator HC688 tricksen, den einen
>Ports direkt an den zu prüfenden Bus anlegen, den anderen über
>RC-Glieder als zeitliche Verzögerung. Dann entsteht bei jeder Änderung

Sowas sollte man sich gar nicht erst angewöhnen, im Zeitalter von CPLDs 
undFPGAs schon gar nicht.

MFG
Falk

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nööö. Das ght mit einer X-beliebigen Anzahl.

Das ist sicher eine Frage der Auslegung der Definition. EXOR bei mehr 
als zwei Eingängen pro Ausgang halte ich für Paritätsprüfung.

> Sowas sollte man sich gar nicht erst angewöhnen, im Zeitalter von CPLDs
> undFPGAs schon gar nicht.

Das ist wohl wahr, aber könnte er mit CPLDs, FPGAs oder GALs umgehen, 
dann hätte sich die Frage nicht gestellt.

Wenn es nicht übermäßig schnell sein muss, dann würde ich einen 
Tiny2313 dafür einsetzen, der ist zwar dafür schlechter geeignet als ein 
CPLD, aber mit dem kann ich (im Gegensatz zum CPLD oder FPGA) umgehen. 
Das wäre dann mein erstes Programm ohne Interrupt. Einfach in einer 
Schleife den Port einlesen, mit Vorzustand vergleichen und bei Änderung 
Impuls und Impulszeit setzen und neuen Wert merken, dann noch Impulszeit 
runterzählen und ggf rücksetzen. Oder gleich den PCI verwenden, dann 
muss die Mainloop nur die Impulsdauer bearbeiten.

Da stellt sich dann allerdings die Frage, ob der AVR nicht den 
restlichen Teil der (bisher nicht genannten) Aufgebe nebenbei mit 
erledigen kann.

Ich würde mir das mit den RC-Gliedern also auch nicht antun.

...

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Exor geht eigentlich nur mit 2 Eingängen.
>
> Nööö. Das ght mit einer X-beliebigen Anzahl.

Bei einem exklusiven Oder ist der Ausgang 1, wenn die Eingänge alle 
verschieden sind. Da es nur zwei Bitzustände gibt, geht das auch nur mit 
zwei Eingängen.
Man kann sich auch andere Definitionen denken, aber da ist es dnan nicht 
eindeutig. Soll der Ausgang 1 sein, wenn alle Eingänge bis auf einen 1 
sind? Oder wenn nur genau ein Eingang 1 ist? Oder soll es, wie andere 
hier schreiben, 1 sein, wenn die Zahl an Einsen an den Eingängen 
ungerade ist?
Welche Definition auch immer gemeint ist, wenn es nicht genau zwei 
Eingänge hat, sollte man es nicht xor nennen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke es ist an der Zeit den OP mal zu fragen,
was er denn eigentlich machen will.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Rolf Magnus (Gast)

>Bei einem exklusiven Oder ist der Ausgang 1, wenn die Eingänge alle
>verschieden sind.

Das ist nur EINE Interpretation. Man kann auch sagen, dass der Ausgang 1 
ist, wenn die Anzahl der 1 am Eingang ungerade ist. Diese Interpretation 
ist auf eine beliebige Anzahl Eingänge erweiterbar, und genau das kommt 
auch raus wenn man XORs kaskadiert.

>Welche Definition auch immer gemeint ist, wenn es nicht genau zwei
>Eingänge hat, sollte man es nicht xor nennen.

Hmm, Geschmackssache. Flamewar ON. ;-)

MFG
Falk

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das ist nur EINE Interpretation.

Es ist eine von mehreren Bedingungen, die bei einem XOR gelten. Warum 
hast du die anderen, die ich noch geschrieben habe, ignoriert?  Also:

- Wenn genau ein Eingang 1 ist, ist der Ausgang 1
- Wenn genau ein Eingang nicht 1 ist, ist der Ausgang 1

Diese (und die beiden anderen Bedingungen) gelten für ein XOR. Da es 
aber kein Gatter mit mehr als zwei Eingängen geben kann, für das alles 
gilt, kann es auch kein XOR mit mehr als zwei Eingängen geben.
Letztendlich kann man sich auch den Namen anschauen: "exklusives Oder" 
hat eigentlich mit gerade/ungerade nichts zu tun. Deshalb dachte ich 
beim ersten Lesen auch gar nicht an die Parity-Variante, sondern an die, 
bei der nur genau ein Eingang 1 sein darf, damit der Ausgang 1 ist, also 
eben nur wenn (exklusiv) Eingang 1 oder Eingang 2 oder Eingang 3 oder 
... an ist.
Schon alleine weil eine "Interpretation" nicht eindeutig ist, sollte man 
"XOR" für irgendwas mit mehr als 2 Eingängen nicht verwenden.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CD4531 wäre ein Teil in CMOS. Ist ja auch schon weiter oben genannt 
worden.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Rolf Magnus (Gast)

>> Das ist nur EINE Interpretation.

>Es ist eine von mehreren Bedingungen, die bei einem XOR gelten. Warum
>hast du die anderen, die ich noch geschrieben habe, ignoriert?  Also:

Hab ich nicht ignoriert, ich will nur klar machen, dass es für ein und 
die selbe Logiktabelle mehrere "umgangssparachliche" Interpretationen 
möglich sind. Und darauf aufbauend verschiedene Interpretationen wie ein 
XOR mit 2 Eingängen auf ein XOR mit N Eingängen erweitert werden kann. 
Bin kein Mathematiker  um dan nun haarklein und 
logisch/syntakisch/whatever 100% wissenschaftlich zu formulieren.

>- Wenn genau ein Eingang 1 ist, ist der Ausgang 1
>- Wenn genau ein Eingang nicht 1 ist, ist der Ausgang 1

>Diese (und die beiden anderen Bedingungen) gelten für ein XOR. Da es

Nein, das ist die spezielle Interpretation deinerseits, welche u.a. 
verhindert, dass du dein XOR auf mehr als zwei Eingänge aufbohren 
kannst.

>aber kein Gatter mit mehr als zwei Eingängen geben kann, für das alles
>gilt, kann es auch kein XOR mit mehr als zwei Eingängen geben.

Nöö, deine Interpretation von XOR ist zu eng gefasst. Du definierst 
unnötigerweise Spezialfälle. Die offizille Definition von XOR ist 
anders, hab ich aber im Moment nicht parat.

>Schon alleine weil eine "Interpretation" nicht eindeutig ist, sollte man
>"XOR" für irgendwas mit mehr als 2 Eingängen nicht verwenden.

Na dann schreib mal die tausenden von Schriftstücke um, in denen beim 
Parity-Check von XOR über N-Bits geschrieben wird. Oder CRC, das gleiche 
Thema.

MfG
Falk

Autor: lingeling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
??naja der OP scheint kein problem mehr zu haben, hier ist wohl erst 
eines daraus geworden....

Autor: Quake (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das wirklich eine Interpretationssache? ExOR ist eine Festgelegt 
Funktion.

Alle Eingänge gleich (egal ob alle 1 oder alle 0) -> Ausgang = 1
In allen anderen Fällen -> Ausgang = 0

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quake wrote:
> Alle Eingänge gleich (egal ob alle 1 oder alle 0) -> Ausgang = 1
> In allen anderen Fällen -> Ausgang = 0
Das ist völlig falsch!

Ich kenne zwei Definitionen, von denen die eine die "altbekannte" ist, 
die für ein EXOR mit zwei Eingängen gilt. Und da ist es eben so, wie 
weiter oben schon beschrieben, dass der Ausgang nur dann logisch 1 wird, 
wenn sich die Zustände der Eingänge unterscheiden (also Kombination 01 
oder 10).

Die andere Definition bezieht sich auf EXORs mit mehr als zwei 
Eingängen, bei der gesagt wird, dass der Ausgang logisch 1 ist, wenn 
eine ungerade Anzahl von Eingängen 1 ist. Mit dieser Definition bin ich 
aber nicht ganz glücklich und suche nach wie vor eine zuverlässige 
Quelle, wo das beschrieben wird (und Wikipedia läuft bei mir nicht als 
zuverlässige Quelle). Ich denke, da gibt es auch irgendwo internationale 
Standards oder zumindest Quasi-Standards.

Fest steht: EXOR-Gatter mit mehr als zwei Eingängen sind nach meiner 
Erfahrung eher unüblich (sind mir bisher nicht als solche über den Weg 
gelaufen). Und die zweite Definition (ungerade Anzahl von Eingängen auf 
1 -> Ausgang 1) ist der klassische Parity-Generator...

Autor: Christian Illy (alloc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi alle,

erstmal danke für die fleißigen Antworten =)

Das genaue Problem, das wir mit so einem Baustein lösen wollten ist 
folgendes: Wir haben einen Knoten, der möglichst wenig Strom ziehen 
soll. Dazu wollen wir den uC schlafen legen, solange er nichts zu tun 
hat. Das Problem entsteht dann, wenn man auf Tastendrücke reagieren will 
... da der uC (ATmega16) nur 3 (oder warns 4? Jedenfalls weniger als 8 
^^) externe Ints hat, wollten wir also auf die Art alle Tasten auf 
Änderungen prüfen und den Interrupt flankengesteuert machen. Das zwei 
Tasten in entsprechend minimalem Zeitabstand gedrückt werden, so dass 
noch nicht mal ein kurzer Pegelwechsel entsteht, kann man denke ich 
ausschließen. Daher sieht der 4531 gar nicht schlecht aus, man müsste 
ihn nur noch als SMD finden ;)

Wir wissen auch, dass es ATmegas mit mehr Ints gibt ... in dem Fall 
wären dass der ATmega165, 168, 169. Allerdings sind der 165 und 169 mit 
nem 64er Gehäuse nochmal größer als der normaler ATmega16 und scheiden 
daher eher aus, und der 168er hat grade 1 IO zu wenig (8 Eingänge für 
Tasten, 8 Ausgänge für LEDs, 4 * SPI + INT, 2 * I2C mit INT = 24, der 
mega168 hat 23).

Wenn ihr noch bessere Ideen habt ... als her damit ;)

Grüße,
Chris


/EDIT: Sachen wie CPLDs und so fallen einfach von den Kosten her weg ...

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muß sagen, daß ich diese Definition noch nie gehört habe. Sie wurde 
mir auch an der FH nie so beigebracht. Dort gab es XOR nur für zwei 
Eingänge. Ich verstehe auch immer noch nicht, warum man die 
Parity-Berechnung XOR nennen sollte. Am ehesten wäre eine 
1-aus-n-Erkennung (wenn genau ein Eingang 1 ist) passend für die 
Bezeichnung.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Illy wrote:
> Das Problem entsteht dann, wenn man auf Tastendrücke reagieren will
> ... da der uC (ATmega16) nur 3 (oder warns 4? Jedenfalls weniger als 8
> ^^) externe Ints hat, wollten wir also auf die Art alle Tasten auf
> Änderungen prüfen und den Interrupt flankengesteuert machen.
Wenn Ihr den µC durch einen Druck auf eine (oder mehrere) von n Tasten 
aufwecken wollt, dann macht das mit nem UND-Gatter. Jeden Taster an 
einen Eingang vom UND (UND-Gatter gibts bis mindestens 8 Eingänge und 
sind beliebig erweiterbar) und  an jeweils einen beliebigen Portpin des 
µC (mit aktiviertem Pull-Up). Den Ausgang des UND-Gatters auf einen 
Interrupt-Pin. Wenn ein Taster gedrückt wird, geht der Ausgang vom UND 
auf low und kann zum Auslösen eines Level-Interrupts genutzt werden. Im 
Interrupt Handler kann man dann einfach die Portpins einlesen, an denen 
die Taster hängen, um herauszufinden, welche(r) Taster gedrückt 
wurde(n).

> Das zwei
> Tasten in entsprechend minimalem Zeitabstand gedrückt werden, so dass
> noch nicht mal ein kurzer Pegelwechsel entsteht, kann man denke ich
> ausschließen.
Das gleichzeitige Drücken mehrerer Taster erschlägt die Methode von oben 
auch...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Illy wrote:
> Hi alle,
>

> hat. Das Problem entsteht dann, wenn man auf Tastendrücke reagieren will
> ... da der uC (ATmega16) nur 3 (oder warns 4? Jedenfalls weniger als 8
> ^^) externe Ints hat, wollten wir also auf die Art alle Tasten auf
> Änderungen prüfen und den Interrupt flankengesteuert machen.

(Dachte ichs mir doch, dass der OP nach dem falschen Teil
sucht)

Hängt davon ab, wie die Tasten angeschlossen sind:
* sind sie High-Activ, dann die einzelnen Tasten mit Dioden
  in einer Oder Verknüpfung zusammenführen und auf einen
  Interrupt legen (oder einen ODER Baustein mit entsprechend
  vielen Eingängen nehmen)
* sind sie low-Active, dann die einzelnen Tasten über ein
  UND mit entsprechend vielen Eingängen zusammenführen und
  von dort ab auf den Interrupt Eingang

In keinem Fall wird aber ein XOR mit 8 Eingängen (egal welche
logische Definition benutzt wird) benötigt.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, wenn der OP mal gleich mit der wirklichen Beschreibung seiner 
Aufgabenstellung rausgerückt wäre, dann wäre uns eine interessante 
Diskussion entgangen...

Aber es ist ja immer das selbe: Das, worauf es ankommt, behält der 
Fragensteller für sich!

Karl Heinz hat natürlich völlig recht: Meine Version setzt voraus, dass 
die Taster Low-Side angeschlossen sind. Sind sie High-Side 
angeschlossen, muss man entsprechend anstelle des UND ein ODER nehmen.

Autor: Christian Illy (alloc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:
> ...
> (Dachte ichs mir doch, dass der OP nach dem falschen Teil
> sucht)
> ...

Danke, aber solche Einschätzungen darf ich vllt auch noch machen ... Ein 
AND oder OR bringt uns nichts. Denn wenn ein Taster gedrückt wird und 
gedrückt gehalten wird (aus welchem Grund auch immer ... vllt ein 
Schalter dran und kein Taster) erkennt man nicht mehr wenn ein weiterer 
gedrückt wurde. Da der uC aber nicht Tagelang im active-mode laufen 
soll, nur weil ein Eingang gehalten wird, muss eben auch eine weitere 
Zustandsänderung erkennbar sein.

Chris

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Änderungen prüfen und den Interrupt flankengesteuert machen.

Ein flankengesteuerter Interrupt am AVR spart keinen Strom.

Um Strom zu sparen, musst Du den Power-Down-Sleep einschalten. Und in 
diesem Sleep wird kein Flanken-Interrupt erkannt. Da braucht es schon 
den Level-Interrupt.

Aber so richtig stromsparend wirds mit dem Mega16 auch noch nicht. Ein 
modernerer AVR ist da sparsamer und hat dann auch noch 
Pin-Change-Interrupt.

...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du brauchst für Dein Problem nicht einmal einen flankenempfindlichen 
Eingang. Es reicht ein pegelempfindlicher INT. Allerdings muß Deine 
Interruptroutine einen zusätzlichen Portpin so nachführen, daß der INT 
immer wieder inaktiv geschaltet wird. Der Portpin wird dazu mit auf den 
4531 geschaltet.
Das hatte ich mal vor zwanzig Jahren bei einem schlichten 8051 so 
gemacht, um nicht permanent die Tasten neu einlesen zu müssen.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe nicht direkt was beizutragen, aber einen anderen Denkansatz:

Wenn wir ein Oder Gatter haben. 2 Eingänge -> 1 Ausgang, dann lässt sich 
dieses mit 2 Transistoren realisieren.

Ein Oder-Gatter mit mehr als 2 Eingängen ist einfach nur eine 
"Hintereinander"schaltung von solchen. (Einfacher Vgl. 
Mehrfachsteckdosenleiste...)

Kann man XOR Gatter "hintereinander"hängen? Ja
Haben sie dann die Funktion eines Parity Generators, bzw. stimmt die 
Funktion dann mit dem zweiten "inoffiziellen" Satz* überein? Ich grübel 
noch.

Denn eigentlich sollte jedes Gatter nach diesem "Verfahren" in der 
Anzahl der Eingänge "erweiterbar" sein.

*
johnny-m:
> Die andere Definition bezieht sich auf EXORs mit mehr als zwei
> Eingängen, bei der gesagt wird, dass der Ausgang logisch 1 ist, wenn
> eine ungerade Anzahl von Eingängen 1 ist.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Illy wrote:

> Da der uC aber nicht Tagelang im active-mode laufen
> soll, nur weil ein Eingang gehalten wird, muss eben auch eine weitere
> Zustandsänderung erkennbar sein.

Darf die Reaktion leicht verzögert sein? Du kannst den Controller 
Timer-gestützt ab und zu mal aufwachen lassen um nachzusehen. Wenn man 
das ein paarmal die Sekunde macht, fällt das im Stromverbrauch nicht 
gross auf. Dann ggf. ist auch eine pinsparende Matrix verwendbar.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich ist ein EXOR  auch für mehr als 2 Eingänge eindeutig 
definiert:

Z.B. für 3 boolsche Variablen:
a EXOR b EXOR c = (a EXOR b) EXOR c = a EXOR (b EXOR c)

Quelle: Informatik Grundstudium 1. Semester

Thorsten

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thorsten wrote:
> Natürlich ist ein EXOR  auch für mehr als 2 Eingänge eindeutig
> definiert:
>
> Z.B. für 3 boolsche Variablen:
> a EXOR b EXOR c = (a EXOR b) EXOR c = a EXOR (b EXOR c)
Das ist aber eben KEIN einzelnes EXOR mit drei Eingängen, sondern es 
sind (wie Du ja auch selbst schreibst) zwei EXOR mit je zwei Eingängen 
hintereinander...

> Quelle: Informatik Grundstudium 1. Semester
Oh, ein ganz schlauer...

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Johannes M. (johnny-m)

>Das ist aber eben KEIN einzelnes EXOR mit drei Eingängen, sondern es
>sind (wie Du ja auch selbst schreibst) zwei EXOR mit je zwei Eingängen
>hintereinander...

Und? Es ist dennoch ein XOR. Genauso wie es UND mit mehr als zwei 
Eingängen gibt. Wie bereits mehrfach gesagt, du verrenst dich auf die 
falsche Interpretation.

MfG
Falk

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christian:

ev. solltest Du einen anderen AVR andenken:

Der ATmega 164 ist der Nachfolger des ATmega16.
Für Dich wichtige Features sind:

* Wake-on-Pin-change
  weckt den AVR auf, sobald sich der Pegel an einem Pin ändert.
  macht genau das, was Du mit Deinem EXOR vorhast.

* geringere Stromaufnahme als der mega16.

* ggf. bei Deiner Anwendung auch sehr nützlich:
  der Watchdog-Timer erzeugt nicht nur einen Reset, sondern kann auch
  als externer (leider nicht sehr genauer) Timer fungieren, der den
  ATmega164 auch aus den Tiefschlafmodi periodisch wecken kann.


Gruß, Stefan

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh sorry, hat ja Hannes Lux schon angedeutet ...

Gruß, Stefan

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk wrote:
> Und? Es ist dennoch ein XOR. Genauso wie es UND mit mehr als zwei
> Eingängen gibt. Wie bereits mehrfach gesagt, du verrenst dich auf die
> falsche Interpretation.
Dann solltest Du vielleicht noch mal meinen Beitrag von 15:17 lesen. 
Dann wirst Du vielleicht merken, dass ich mich keineswegs "verrenne". 
Die Kombination ist eine andere als z.B. bei UND- und 
ODER-Verknüpfungen. UNDs und ODERs können parallel verarbeitet (und 
verknüpft) werden, während das bei EXORs nur sukzessive geht (der 
Ausgang eines EXOR geht auf den Eingang des nächsten). Deshalb bereitet 
mir lediglich die Interpretation als "Ein EXOR-Gatter mit mehr als zwei 
Eingängen" etwas Bauchschmerzen. Ich glaub, wir müssen mal einen 
EXORzisten zu Rate ziehen.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Johannes M. (johnny-m)

>ODER-Verknüpfungen. UNDs und ODERs können parallel verarbeitet (und
>verknüpft) werden, während das bei EXORs nur sukzessive geht (der
>Ausgang eines EXOR geht auf den Eingang des nächsten). Deshalb bereitet

Stimmt nicht. Die kann man auch parallel verarbeiten und dann 
zusammenfassen. Es gilt das Kommutativgesetz. Siehe das Posting des 
"ganz Schlauen".

>mir lediglich die Interpretation als "Ein EXOR-Gatter mit mehr als zwei
>Eingängen" etwas Bauchschmerzen. Ich glaub, wir müssen mal einen
>EXORzisten zu Rate ziehen.

;-)

MfG
Falk

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johannes:

EXOR ist zunächst mal eine boolesche Operation, kein Gatter. Wie ein 
(Mehrfach-)EXOR letztendlich in Hardware oder Software implementiert 
wird, ist egal, solange das Ergebnis mit der mathematischen Lösung 
übereinstimmt.

Das kann z.B. durch Kaskadieren mehrerer EXOR-Gatter mit 2 Eingängen 
erfolgen oder einer "Blackbox" mit n Eingängen, die am Ausgang, mit 
welchen Mitteln auch immer, das korrekte Ergebnis liefert.

Thorsten

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon Küppers wrote:
> Kann man XOR Gatter "hintereinander"hängen? Ja
> Haben sie dann die Funktion eines Parity Generators, bzw. stimmt die
> Funktion dann mit dem zweiten "inoffiziellen" Satz* überein? Ich grübel
> noch.
Ich hab das grad mal spaßeshalber durchgespielt (für 4 Eingänge, für 
mehr hatte ich keine Zeit...): Es scheint tatsächlich als Parity 
Generator zu funktionieren. Hatte bisher keinen Anlass, mir da großartig 
Gedanken drüber zu machen. Also ist die Erweiterung (wenn man jetzt mal 
davon absieht, dass es eben nur durch sukzessive Verknüpfungen geht) 
tatsächlich in Übereinstimmung mit der Beschreibung...

@Falk:
Wie willst Du die denn "parallel" verarbeiten? Es geht doch eigentlich 
nur ein EXOR nach dem anderen, da das Ergebnis (der Ausgang) des einen 
jeweils mit dem Eingang des nächsten verknüpft werden muss. Die 
Reihenfolge ist dabei natürlich egal...

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thorsten wrote:
> EXOR ist zunächst mal eine boolesche Operation, kein Gatter. Wie ein
> (Mehrfach-)EXOR letztendlich in Hardware oder Software implementiert
> wird, ist egal, solange das Ergebnis mit der mathematischen Lösung
> übereinstimmt.
Das bestreite ich auch gar nicht. Aber ich habe bisher keine 
verlässliche Quelle gefunden, die wirklich bestätigt, dass sich eine 
Kaskadierung von EXOR-Verknüpfungen auch EXOR(TM) schimpfen darf...

Klar, es wäre die einzig sinnvolle Erweiterung des EXOR mit zwei 
Eingängen. Und demzufolge wäre es schon logisch...

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie willst Du die denn "parallel" verarbeiten? Es geht doch eigentlich
> nur ein EXOR nach dem anderen, da das Ergebnis (der Ausgang) des einen
> jeweils mit dem Eingang des nächsten verknüpft werden muss.

4-Input XOR = (2-Input-XOR) XOR (2-Input-XOR).
Laufzeit wächst mit O(log2), nicht linear.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johannes:

Gegenfrage: Darf sich deiner Meinung nach ein Mehrfach-UND/ODER-Gatter 
noch UND bzw. ODER schimpfen? Das lässt sich genauso durch kaskadieren 
implementieren.

Thorsten

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thorsten wrote:
> Gegenfrage: Darf sich deiner Meinung nach ein Mehrfach-UND/ODER-Gatter
> noch UND bzw. ODER schimpfen? Das lässt sich genauso durch kaskadieren
> implementieren.
Richtig, es lässt sich genau so implementieren. Aber im Gegensatz zum 
EXOR eben auch anders.

Zur Verdeutlichung meines Begriffs-Problems:
EXOR heißt "Exklusiv-ODER". Das wiederum heißt, es handelt sich um eine 
ODER-Verknüpfung, die aber im Gegensatz zum "normalen" ODER 
ausschließlich (lat. "exklusiv") das "echte" ODER (also der eine 
ODER der andere, aber eben nicht beide) auswertet. Und das macht so 
gesehen nur dann Sinn, wenn es nur zwei Eingänge gibt. Denn was hat 
exklusiv-ODER (also entweder der eine ODER der andere) mit "Anzahl der 
gesetzten Eingänge ist ungerade" zu tun?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, "die Alternative" heißt ja auch "der andere Weg", es gibt also 
immer nur eine Alternative. Das relativiert dann die Aussagen 
hochgebildeter Leute, die von mehreren Alternativen reden...

Also: Stimmung, Konfetti...

...

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Johannes M. (johnny-m)

>Wie willst Du die denn "parallel" verarbeiten? Es geht doch eigentlich
>nur ein EXOR nach dem anderen, da das Ergebnis (der Ausgang) des einen

Indem du einen 1-Bit ROM mit N Adressbits nimmst und den Inhalt 
entsprechend programmierst. So macht es jedes FPGA.

>jeweils mit dem Eingang des nächsten verknüpft werden muss. Die

Nein, das geht ganz analog zum UND, dort kann man auch Teilsummen bilden 
und dann zusammenfassen.

MfG
Falk

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk wrote:
>>jeweils mit dem Eingang des nächsten verknüpft werden muss. Die
>
> Nein, das geht ganz analog zum UND, dort kann man auch Teilsummen bilden
> und dann zusammenfassen.
Das ist mir schon klar.

Allerdings ist mein Hauptproblem nach wie vor die Begrifflichkeit (s. 
mein Posting von 18:10). Ich kann dem 
"Mehr-als-zwei-Eingangsgrößen-"EXOR"" den Titel "EXOR" nicht zuerkennen. 
Wenn jemand in der Lage ist, mir (also einem Elektrotechniker...) zu 
erklären, was das oben beschriebene mit der ursprünglichen Bedeutung des 
Begriffes "Exklusiv-ODER" zu tun hat, dann möge er das bitte tun!

Thanx...

Autor: mr. tietze schenk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Lösung eures Problems ist folgendes

Q=(E1 && #E2) || (#E1 && E2)
Q=(E1 && #E2 && #E3) || (#E1 && E2 && #E3) || (#E1 && #E2 && E3)
usw...

&& := Und
|| := Oder
# := nicht

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johannes:

Du solltest vielleicht weniger an der sprachlichen Definition des Wortes 
"exklusiv" festhalten und stattdessen die mathematische Definition des 
Exklusiven-ODERs akzeptieren und verwenden. Die boolesche Algebra stammt 
von einem Mathematiker und nicht von einem Sprachwissenschaftler.

Thorsten

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thorsten wrote:
> Die boolesche Algebra stammt
> von einem Mathematiker und nicht von einem Sprachwissenschaftler.
Eben deswegen wundert mich eigentlich die inkonsequente Erweiterung. 
Sprachwissenschaftlern traue ich im Gegensatz dazu eigentlich fast alles 
zu...

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
XOR ist mathematisch nur als Operator mit zwei Operanden definiert. 
Alles andere ist Ansichtssache, und das Konzept von einem "XOR mit 
mehreren Eingängen" ist nicht so weit verbreitet dass man da irgend 
einen Konsens annehmen könnte, deshalb sollte man einfach genauer sagen 
was man meint. Die Diskussion ist also irgendwie sinnlos.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die Diskussion ist also irgendwie sinnlos.

Ohhhhr, schade...
Keine Stimmung, Konfetti einsammeln... ;-)

...

(das war ein Trollpost...)

Autor: Bobby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> XOR ist mathematisch nur als Operator mit zwei Operanden definiert.

Das stimmt; aber das gleiche gilt auch für AND und OR.

Mathematisch : a & b & c ist nur eine Abkürzung für (a & b) & c
oder a & (b & c). Das gilt weil & assoziativ ist.
Das gleiche gilt für ODER, aber auch für XOR.

(a ^ b) ^ c == a ^ (b ^ c) == a ^ b ^ c

Mehrfach-XOR ist also sehrwohl definiert, aber als Logikschaltkreis 
nicht so einfach zu bauen.
Dass es als Logikbaustein Mehrfach-UND sowie Mehrfach-ODER gibt, 
verdanken wir im Wesentlichen der Einfachheit der Implementierung als 
TTL-Multi-Emitter-Transistor.

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Spannende Sache dass, ich schlag mich da mal noch in kein eindeutiges 
Lager, aber zwei Sachen:

Simon Küppers wrote (18.07.2007 16:29):
> Denn eigentlich sollte jedes Gatter nach diesem "Verfahren" in der
> Anzahl der Eingänge "erweiterbar" sein.

Nein, NAND und NOR lässt sich nicht nach diesem Verfahren erweitern.

Falk wrote (18.07.2007 11:02)
>Na dann schreib mal die tausenden von Schriftstücke um, in denen beim
>Parity-Check von XOR über N-Bits geschrieben wird. Oder CRC, das gleiche

Bitte daran zu denken das es sehr wohl ohne diese Diskussion in jedem 
Fall möglich ist ZWEI mehrbittige Zahlen via XOR bitweise zu 
vergleichen, was sehr viel häufiger vorkommt.

Ich kram zur Sicherheit aber schonmal meinen "Haarspalter der 
überlegenen Schnitthaltigkeit" +13 aus dem Rucksack. -wiebel

Autor: ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, aber laut Wolfram (Mathematica)

http://mathworld.wolfram.com/XOR.html

Scheint das ja doch eindeutig zu sein.

Dann kann ich mein Schneidwerkzeug ja wieder einpacken. -wiebel

Autor: Christian Illy (alloc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Kleinwort wrote:
> Der ATmega 164 ist der Nachfolger des ATmega16.

Hi Stefan,

danke für den Hinweis. Den 164er hatte ich gar nicht bemerkt (hab in 
meiner Excel-Tabelle geschaut, das ist übersichtlicher als direkt auf 
der HP ;) ). Allerdings scheint der aber relativ schwer erhältlich zu 
sein?
Den 168er zb bekommt man wenigstens bei CSD, und das sogar zu nem 
vernünftigen Preis =)
Haben uns auch entschieden den jetzt zu nehmen und werden einfach die 
Ausgänge über ein Schieberegister ansteuern. Der 168er spart dafür ja 
auch wieder ein wenig Platz ;)

Grüße,
Chris

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.