Usart Settings

There is some confusion concerning how usart settings should be made.

During assembly, the typical error message looks like

atmega16.asm(26): warning: Use of undefined or forward referenced symbol 'TXEN0' in .equ/.set

The symbol naming is based upon Atmel’s naming conventions. If the controller has only one usart module, it is named either usart or usart0. Newer Atmegas use the 0 regardless of the real number of usart modules, older ones omit the 0 completely. You definitely have to check the datasheet.

The following controllers use the old schema, they need the usart file:

8515def.inc:.equ    RXEN    = 4 ; Receiver Enable
8535def.inc:.equ    RXEN    = 4 ; Receiver Enable
m103def.inc:.equ    RXEN    = 4 ; Receiver Enable
m163def.inc:.equ    RXEN    = 4 ; Receiver Enable
m16Adef.inc:.equ    RXEN    = 4 ; Receiver Enable
m16def.inc:.equ RXEN    = 4 ; Receiver Enable
m323def.inc:.equ    RXEN    = 4 ; Receiver Enable
m32Adef.inc:.equ    RXEN    = 4 ; Receiver Enable
m32def.inc:.equ RXEN    = 4 ; Receiver Enable
m8515def.inc:.equ   RXEN    = 4 ; Receiver Enable
m8535def.inc:.equ   RXEN    = 4 ; Receiver Enable
m8Adef.inc:.equ RXEN    = 4 ; Receiver Enable
m8def.inc:.equ  RXEN    = 4 ; Receiver Enable
pwm216def.inc:.equ  RXEN    = 4 ; Receiver Enable
pwm2Bdef.inc:.equ   RXEN    = 4 ; Receiver Enable
pwm2def.inc:.equ    RXEN    = 4 ; Receiver Enable
pwm316def.inc:.equ  RXEN    = 4 ; Receiver Enable
pwm3Bdef.inc:.equ   RXEN    = 4 ; Receiver Enable
pwm3def.inc:.equ    RXEN    = 4 ; Receiver Enable

All others use a number.

A simple approach that works in most cases is as follows: delete/change all occurrences of the 0 character in the following excerpt from your version of the template.asm file.

.include "drivers/usart_0.asm"

Please note, that the file is named drivers/usart.asm not drivers/usart_.asm.

Similar changes are needed for the other usart modules (e.g. usart3).