Forum: Mikrocontroller und Digitale Elektronik SAB80C537-16 Initialisierung der seriellen Schnittstelle bei 16MHz-Takt


von Siggi (Gast)


Lesenswert?

Ich möchte einen 80C535 (12MHz) austauschen und durch einen SAB80C537-16 
ersetzen (mit 16MHz Takt).
Wie muss ich die serielle initialisieren ( Assembler oder C ) damit sie 
mit 9600Baud arbeitet. Habe im Manual zum Controller nichts gefunden. 
Sie gehen immer nur auf den 12MHz Typ ein.

von jack (Gast)


Lesenswert?

Bei 16Mhz geht nur Timer2.

Reloadwerte:
mov RCAP2L, #CCh
mov RCAP2H, #FFh

Das ergibt 9615 Baud.

von Peter D. (peda)


Lesenswert?

Siggi wrote:
> Ich möchte einen 80C535 (12MHz) austauschen und durch einen SAB80C537-16
> ersetzen (mit 16MHz Takt).

Den MC austauschen ändert garnichts, der läuft dann auch mit 12MHz.
Du mußt noch den Quarz tauschen.


> Wie muss ich die serielle initialisieren ( Assembler oder C ) damit sie
> mit 9600Baud arbeitet. Habe im Manual zum Controller nichts gefunden.

Das ist aber komisch, in meinen 8051-Manuals steht immer auch die Formel 
drin für jeden x-beliebigen Quarz.

Man muß dann noch den prozentualen Fehler ausrechnen, wenn man kein 
Baudratenquarz (14,7456MHz) nimmt.


Als Programmierer sollte man seine Angst vor Formeln und Rechnen 
schleunigst ablegen.
In der Regel muß man einfach nur die Formel hinschreiben und überläßt 
dem Compiler (Präprozessor) das Ausrechnen.


Peter

von Siggi (Gast)


Lesenswert?

Das mit dem Quarz und Timer ist selbsverständlich. Ich dachte nur das es 
auch hier eine Möglichkeit gibt (so wie beim 80535, durch setzen der 
Bits "BD und SMOD") eine PC Kompatible Baudrate zu erzeugen ohne das ich 
einen Timer benutzen muss.

von Peter D. (peda)


Lesenswert?

Siggi wrote:
> Das mit dem Quarz und Timer ist selbsverständlich. Ich dachte nur das es
> auch hier eine Möglichkeit gibt (so wie beim 80535, durch setzen der
> Bits "BD und SMOD") eine PC Kompatible Baudrate zu erzeugen ohne das ich
> einen Timer benutzen muss.


Nimm die Formel aus dem Datenblatt, berechne den Teilerwert und dann die 
Abweichung zum nächsten ganzzahligen Wert. Die sollte besser 1% sein, 
mindestens aber unter 2%.

Oder nimm besser gleich nen Baudratenquarz, der Unterschied in der 
CPU-Leistung von 16MHz zu 14,7456MHz ist nicht merkbar.


Peter

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.