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..!
@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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.