Divider (nur Mega)

 

Die Funktionen Serial_Init() und Serial_Init_IRQ bekommen als Baudratenparameter einen Teiler (divider) der den Baudratentakt aus dem Prozessortakt ableitet. Der Prozessortakt beträgt 14,7456 MHz bei Mega32, Mega128 und 16 MHz bei dem Mega128 CAN.

 

Laut dem Atmel Prozessor Handbuch wird folgende Formel angewendet um einen divider für eine Baudrate zu ermitteln:

 

divider = (Prozessortakt / Baudrate / 16 ) -1

 

Beispiel: 15 = (14745600 / 57600 / 16 ) -1

 

 Es ist schwieriger aus dem 16 MHz Takt des Mega128 CAN die Standard Baudraten abzuleiten. Daher sind die divider Tabellen der Prozessoren leicht unterschiedlich.

 

 

DoubleClock Modus

 

Wenn man das High-Bit setzt, wird der DoubleClock Modus eingeschaltet. Man muss dann denn doppelten Wert als divider eintragen. Für 57600 Baud kann man z.B. statt 0f Hex (dezimal 15) auch 801e Hex (= 8000 Hex + 2 * 15) benutzen. Für MIDI (31250 Baud) bekäme man einen divider = (14745600 / 31250 / 16 ) -1 = 28,49 . Da man nur ganzzahlige Werte übergeben kann, bekommt man im DoubleClock Modus einen besseren Wert: 8039 Hex (= 8000 Hex + 2 * 28,5).

 

 

Tabelle divider Definitionen 14,7456 MHz (Mega32, Mega128):

 

divider

Definition

Baudrate


 


3071

SR_BD300

300bps

1535

SR_BD600

600bps

767

SR_BD1200

1200bps

383

SR_BD2400

2400bps

191

SR_BD4800

4800bps

95

SR_BD9600

9600bps

63

SR_BD14400

14400bps

47

SR_BD19200

19200bps

31

SR_BD28800

28800bps

8039 (Hex)

SR_BDMIDI

31250bps

23

SR_BD38400

38400bps

15

SR_BD57600

57600bps

11

SR_BD76800

76800bps

7

SR_BD115200

115200bps

3

SR_BD230400

230400bps

 

 

Tabelle divider Definitionen 16 MHz (Mega128 CAN):

 

divider

Definition

Baudrate


 


3332

SR_BD300

300bps

1666

SR_BD600

600bps

832

SR_BD1200

1200bps

416

SR_BD2400

2400bps

207

SR_BD4800

4800bps

103

SR_BD9600

9600bps

68

SR_BD14400

14400bps

51

SR_BD19200

19200bps

34

SR_BD28800

28800bps

31

SR_BDMIDI

31250bps

25

SR_BD38400

38400bps

8022 (Hex)

SR_BD57600

57600bps

12

SR_BD76800

76800bps

6

SR_BD125000

125000bps

3

SR_BD250000

250000bps