Hallo Zusammen,
zur Zeit arbeite ich an einem Projekt, bei dem ich von einem AT89c5131
Daten zu einem anderen AT89c5131 über die serielle Schnittstelle
schicken will.
(Datenblatt AT89c5131A-M:
http://www.datasheetcatalog.org/datasheet2/b/0dg0f53fro9asl4j6ur7gy5jrzfy.pdf)
Ich habe mir dazu auch schon ein Beispiel von Atmel angeschaut:
http://www.atmel.com/dyn/resources/prod_documents/doc4346.pdf (Seite 17)
Aber leider gelang es mir nicht so ganz das zu verstehen und oder zum
Laufen zu bringen.
Angeschlossen habe ich die beiden µCs wie folgt: Vom Sender-µC gehe ich
vom Port 2 (Out) der Seriellen Schnittstelle an den Port 3 (In) der
S-Schnittstelle des Empfangs-MC.
Meine bisherigen Ergebnisse sind so:
Ich kann Daten senden. Der Empfangs µC empfängt auch jedese mal ein
Byte, wenn ich eins sende. Aber leider sind die Daten Schrott. Eine 0
wird zur 128, eine 1 zu 127, eine 2 zu 63, eine 3 zu 126...
ABER: Wenn ich beide µCs resete, und wieder die gleichen Werte sende
(0,1,2,3...), dann wird am Empfangs-µC auch wieder genau das Gleiche wie
zuvor empfangen (128,127,63,126...)
Hier nun mal mein Code: Ich habe Ihn mit Ride von Raisonance
geschrieben:
Sender:
im Moment ist für mich erst mal wichtig, dass ich überhaupt mal Daten
über die Serielle Schnittstelle an den zweiten µC schicken kann und die
auch noch als Daten ankommen.
Allerdings muss ich dann später auch ohne den Timer1 auskommen, da ich
den anderweitig im Projekt brauche! Wenn mir also einer sagen kann, wie
ich SCON, PCON und das ganze Zeugs konfigurieren muss (ich verstehs im
AT89c5131A-M-Datenblatt einfach nicht), dann wäre ich euch sehr
verbunden!!
Also bereits im Voraus vielen Dank für Eure Mühe! Ich hoffe ich habe
alles wichtige erwähnt. Falls Ihr Fragen habt, sagt mir bescheid!
MfG
Andreas
Was hast du an P2? LEDs? Die werden bei 8051ern für gewöhnlich lowaktiv
angesteuert, kann es sein, dass du ne leuchtende LED mit einer logischen
Eins assoziierst? :)
Ralf
Dann sollte es richtig rüberkommen, wenn die LEDs wie ich vermute
lowaktiv angesteuert werden.
Wegen dem Timer 1, dann nimm den internen Baudratengenerator, auf Seite
73 im aktuellen Datenblatt findest du die Formel für die Berechnung, auf
Seite 75 ne Tabelle mit Werten für das BRL-Register. Die Werte kann man
ja leicht auf andere Frequenzen umrechnen...
Ralf
moin moin,
@Ralf
>>Timer 2 has 3 operating modes: capture, auto reload and Baud Rate >>Generator.
These modes are selected by the combination of RCLK, TCLK and >>CP/RL2 (T2CON).
@Stephan
bei Erik gibs doch "nur" Timer0&1...
mfg
Pieter
@Pieter:
Ja, okay, das ist ne Standardfunktion vom T2, aber das Teil hat doch
einen separaten Baudratengenerator, dann kann (und sollte) er gleich den
nehmen :)
Ralf
@Pieter,
darum ging es :
>> Wenn mir also einer sagen kann, wie ich SCON, PCON und das ganze Zeugs>> konfigurieren muss (ich verstehs im AT89c5131A-M-Datenblatt einfach>> nicht),
das kann der Generator.
Das dann umzumodeln ist ja keine Hürde.
moin moin,
beim 5131AM verwende ich als XTAL 24MHz wegen USB. Dann ist Essig mit
z.B. 115200 mit dem BRG zu erreichen. Mit Timer2 gehts dann aber immer
noch.
mfg
Pieter
moin moin,
@Stephan,
nur das Timer2 ganz anders als Timer0/1 konfiguriert wird ...8-(
mfg
Pieter
PS: Das Problem im MASM51 ist behoben, neue Version gibts Montag...
@Peter,
schön zu hören,....
Wollte Dir ja eigentlich mal das Beispiel senden.
Aber hier ist schon wieder DRAMA !!
Sicher ist Timer 2 anders. Captureregister....
Aber er will ja auch erst später den Timer freimachen.
Problem gelöst!
An meinem Sender-µC war der Max232N hinüber... deshalb hat der Schrott
gesendet.
Und die Konfiguration der Baudrate hab ich nun auch.
trotzdem danke!
mfg
Andreas