Forum: Mikrocontroller und Digitale Elektronik Zwei AT89S8252 per 2(4-)-Draht verbinden?


von Nicolas K. (nico33hh)


Lesenswert?

Hallöchen!

Wenn ich zwei AT89S8252 mit einander verbinden will und nur +5V, GND und 
noch 2 weitere Leitungen (also insgesamt 4 Adern) zur Verfügung habe und 
NICHT den UART (RS232) benutzen will, wie stellt man das am 
geschicktesten an?
Beide µC's sollen jeweils 1 Byte senden (und natürlich auch empfangen) 
können.

Hintergrund:
Ich suche eine elegante Möglichkeit mit möglichst wenig Programmcode, um 
mit einem AT89S8252 ein Tastenfeld für ein Codeschloss abzufragen (das 
ist kein Problem und steht auch schon) und jede gedrückte Taste (als ein 
Byte) dann über das Kabel an den zweiten (Haupt-)µC zu senden, der den 
Wert dann auswertet.
Andersherum soll aber der zweite µC auch ein Byte an den ersten µC mit 
dem Tastaturfeld schicken können, so daß dort Status-LEDs, 
Tastenfeldbeleuchtung u.ä. angesteuert werden können.
Das Ganze natürlich ohne Kollisions-Fehler...

Bevor die Frage aufkommt:
Ich habe noch mehrere AT89S8252 und arbeite gern mit ihnen. Deswegen 
diese µC-Wahl... ;-)

Bin mal gespannt auf Eure Ideen...

Schoinen (nächtlichen) Gruß -

  Nico  :o)


P.S.: Dieses Forum finde ich echt klasse..!

von dernixwois (Gast)


Lesenswert?

@Nicolas K.

Wie wäre es wenn Du es mit I2C probierst.
Weiß jetzt nicht ob der AT89S8252 Hardwareseitig I2C unterstützt, sonst 
müsstest Du es Softwaremäßig nach bilden wobei die Pinauswahl für SDA 
und SCL frei wählen kannst.

von Peter D. (peda)


Lesenswert?

Am besten, Du nimmst einen Draht pro Richtung, dann gibts auch keine 
Kollision.

Die Datenbits schickst Du als unterschiedlich lange High-Pulse mit Pause 
dazwischen zum reinschieben, z.B. 10µs = 0, 20µs = 1.

Die Pulslänge macht der Sender mit ner Delayloop (DJNZ).
Die Pulsdauer zählt dann bequem der Empfänger mit T0 im Gate-Modus 
(INT0).

Eventuell noch nen extra langen Impuls (40µs) als Startbit.


Peter

von Matthias (Gast)


Lesenswert?

Ich würde bei so geringen Datenaufkommen asynchon arbeiten, also eine 
UART per Software nachbilden (Startbit, Deine n-Datenbits, Stoppbit).

Bei 8051 relativ einfach. Empfang: Mit Int0 auf fallende Flanke 
triggern, dann die halbe Bitzeit warten und einen Timer mit Zyklus der 
Bitzeit setzen und nun n-mal den Pegel abtasten. Damit sollten einige 
hundert Baud drin sein, bei Dir dürften aber auch 50 Baud ausreichen.

Asynchon zu senden dürfte überhaupt kein Problem sein.

Der 89S8252 hat leider keine PWM/PCA-Unit. Mit AT89C51xxx könntest Du 
eine PCA-UART per Software realisieren. Die entsprechende Anleitung 
findest Du auf den Atmelseiten.

Gruß Matthias

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.