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