Forum: Mikrocontroller und Digitale Elektronik Welchen Quarz im AT90CAN128 bei RS232, CAN und PWM?


von Thomas L. (thomasblue)


Lesenswert?

Hallo Forum,
ich werde mich mit dem AT90CAN128 beschäftigen und frage mich, welchen 
Quarz man am Besten wählt, um später mit entsprechendem Prescaler "gute" 
Taktraten für verschiedene Schnittstellen/Module zu erhalten. Diese 
wären RS232 mit 38400 Baud, 500 kbit/s Highspeed CAN und PWM mit 1kHz.

Für RS232 ist ja wohl ein Quarz mit einem vielfachem von 1,8432 Mhz 
(warum eigentlich?), also zB. 14,7456 Mhz am Besten geeignet. Jedoch 
klappt dann 500 kbit/s Highspeed CAN mit nicht mehr sauber.

- Für Highspeed CAN ist ja ein 16 Mhz Quarz eigentlich Pflicht.
- RS232 würde dann mit einer Baud Rate von 9600 bis 38400 noch gehen 
(Baud Raten Fehler 0,2% - 0,6%)

Wie sieht das dann jetzt mit einem 1kHz PWM Signal aus? Über den 
Prescaler bekomme ich doch kein 1kHz PWM Signal mehr zu stande.
Kann ich irgendwie einen anderen Takt einstellen nur für das PWM?

von Thomas L. (thomasblue)


Lesenswert?

Wen es interessiert: Für das Erzeugen eines PWM Signals spielt 
eigentlich der Takt des µC nur eine untergeordnete Rolle. Man nimmt 
einfach einen Timer des µC, bei dem man den maximalen Wert des 
Timercounters einstellen kann. Dies ist dann die Frequenz. Die Formel 
zur Berechnung findet man im Datenblatt im Kapitel über Timer.

von Wilhelm F. (Gast)


Lesenswert?

Thomas L. schrieb:

> Für RS232 ist ja wohl ein Quarz mit einem vielfachem von 1,8432 Mhz
> (warum eigentlich?), also zB. 14,7456 Mhz am Besten geeignet. Jedoch
> klappt dann 500 kbit/s Highspeed CAN mit nicht mehr sauber.

Dann teile mal die 1,8432MHz fortlaufend durch 2, und schaue, was da 
heraus kommt. Irgendwann ein Vielfaches einer bekannten Baudrate. Viele 
µC teilen diesen Takt intern z.B. durch 16 oder 32, und mit einem 
einstellbaren Timer kommt man da oft auf glatte übliche Baudraten, z.B. 
9600 oder 38400.

CAN und RS232 ergeben oft einen Widerspruch, so daß man gelegentlich 
einen Kompromiß suchen muß. Z.B. kann man für den CAN noch eine glatte 
Quarzfrequenz wählen, so daß man bei RS232 eine geringfügige 
Baudratenabweichung bekommt. In einem SAB80C517A z.B. bekomme ich mit 
einem 12MHz-Quarz einerseits ein exaktes Timing von 1ms für den 
Timerinterrupt, andererseits aber für die Baudrate 9600 tatsächlich 
9615,38Baud, das sind 0,16% Abweichung. Damit funktioniert er aber noch 
ganz gut und fehlerfrei.

CAN hat einen langen Frame, das darf nicht so stark abweichen, denn pro 
bit addiert sich der zeitliche Fehler. Die bits werden auch an mehreren 
Stellen getestet, da darf sich nicht viel verschieben. Das ist aber auch 
das einzige, wo CAN etwas empfindlich ist. Bei RS232 mit nur 8 bit ist 
es nicht ganz so tragisch. Bei 0,16% je bit gelangt man da im letzten 
bit maximal bei 2% Fehler (Verschiebung) an, das macht in der Regel gar 
nichts. RS232 verträgt etwa maximal 1% Fehler in der Zeitbasis, darüber 
sollte man aber nicht kommen.

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.