Baud Rate: bits per second for transmit/receive
The baud rate is used to set the rate for data transfer when the clock frequencies are not the same between the communicating devices. In order to communicate then, in our case this case via UART, the baud rate acts as an agreed upon speed.
Formally, calculating the Baud Rate and UBRR0 for Asynchronous Normal Mode on the Atmega324p reguires the following calculations (from the datasheet's chapter on USART):
Where UBRR0 is the baud rate "value" based on Fosc (Clock Frequency in our case 1MHz) and the chosen Baud Rate.
In Human, this means we want to choose a rate of communication based on our clock speed that results in the lowest possible error rate. Error rates create communication errors from stutters, to gibberish, to complete failure to receive or transmit. Luckily for us there is a handy table to calculating this in the data sheet as well:
This is just one of the tables in the datasheet for Baud Rate and UBRR0 calculations. This is the one we need because we are running the Atmega324p at a low speed of 1Mhz (left column).
We are not running in Double Speed Operation Mode so the U2Xn value will be 0. More details on that can be found in the data sheet.
We want a very low error error rate. Anything above .2% is generally considered unacceptable.
The highest Baud Rate that leaves us with is 4800. A 4800 baud rate gives a UBRR value of 12. 12 in Hex is 0x0c. So we are going to use UBRR0L = 0x0c in our UART code and then tell our machine's serial console to communicate at the same baud rate with the command screen /dev/tty.usbserial-FTF539ZI 4800.