|
8 | 8 | * UART Baud Rate Configuration for Z8F082A |
9 | 9 | * |
10 | 10 | * The Z8F082A internal RC oscillator varies between parts (~5.5 MHz typical). |
11 | | - * Using 19200 baud provides better tolerance for clock variation than 115200. |
| 11 | + * Using 9600 baud provides the BEST tolerance for clock variation. |
12 | 12 | * |
13 | 13 | * IMPORTANT: avrdude command must specify matching baud rate: |
14 | | - * avrdude -c stk500v1 -b 19200 -P /dev/ttyUSB0 ... |
| 14 | + * avrdude -c stk500v1 -b 9600 -P COM3 ... |
15 | 15 | * |
16 | | - * Clock Frequency Options: |
17 | | - * 5.5296 MHz (Internal RC): BRG = 18 for 19200 baud (exact) |
18 | | - * 18.432 MHz (Crystal): BRG = 60 for 19200 baud (exact) |
19 | | - * 20.0 MHz (Crystal): BRG = 65 for 19200 baud (0.16% error) |
| 16 | + * Clock Frequency Options (BRG values for 9600 baud): |
| 17 | + * 5.5296 MHz (Internal RC): BRG = 36 for 9600 baud (exact) |
| 18 | + * 18.432 MHz (Crystal): BRG = 120 for 9600 baud (exact) |
| 19 | + * 20.0 MHz (Crystal): BRG = 130 for 9600 baud (0.16% error) |
20 | 20 | */ |
21 | 21 |
|
22 | 22 | /* System clock frequency - adjust to match your actual oscillator */ |
23 | 23 | #define SYSTEM_CLOCK_HZ 5529600UL /* 5.5296 MHz internal oscillator */ |
24 | 24 |
|
25 | | -/* Baud rate - using 19200 for better tolerance with RC oscillator */ |
26 | | -#define BAUD_RATE 19200UL |
| 25 | +/* Baud rate - using 9600 for MAXIMUM tolerance with RC oscillator variation */ |
| 26 | +#define BAUD_RATE 9600UL |
27 | 27 |
|
28 | 28 | /* Calculate baud rate divisor: BRG = (freq + baud*8) / (baud * 16) */ |
29 | 29 | #define BRG_VALUE ((SYSTEM_CLOCK_HZ + BAUD_RATE * 8UL) / (BAUD_RATE * 16UL)) |
30 | 30 |
|
31 | 31 | void init_uart0(void) |
32 | 32 | { |
33 | 33 | /* Initialize UART0 for STK500 communication |
34 | | - * BRG = (5529600 + 19200*8) / (19200*16) = 5683200 / 307200 = 18 |
35 | | - * Actual baud = 5529600 / (16 * 18) = 19200 (exact!) |
| 34 | + * BRG = (5529600 + 9600*8) / (9600*16) = 5606400 / 153600 = 36 |
| 35 | + * Actual baud = 5529600 / (16 * 36) = 9600 (exact!) |
36 | 36 | */ |
37 | 37 |
|
38 | 38 | /* Set baud rate generator */ |
|
0 commit comments