2 RN3AUS
Саш, сделал твой синтезатор - приятная штучка. Спасибо большое.
Есть один момент при формировании WSPR-15 (но думаю и в остальных модах будет так же) при изменении тона ненадолго пропадает сигнал. Усилителю мощности это просто "мозг выносит".  

Рутины записи частоты и фазы сейчас выглядят так:
; 
; read in 4 characters from the serial link
;
read_4:
      rcall   get_char      ; read and ignore bits 32..24
      rcall   get_char      ; read bits 23..16
      mov      r26,r16
      rcall   get_char      ; read bits 15..8
      mov      r25,r16
      rcall   get_char      ; read bits 7..0
      mov      r24,r16
      clr      r17
      out      PORTB,r17
      ret
; read 4 character from the serial link and add to phase accumulator
; ---- Первый байт игнорируется, второй - младший байт, третий - средний, четвертый - старший байт.
read_ph_4:
      rcall   get_char      ; read and ignore bits 32..24 
      rcall   get_char      ; read bits 7 ..0   
      mov      r20,r16                              
      rcall   get_char      ; read bits 15..8
      mov      r21,r16                     
      rcall   get_char      ; read bits 23..16
      mov      r22,r16                           
      ret                              
Не слишком красиво. По идее нужно буферизировать. Я к сожалению не знаю ассемблера атмеловского и самого процессора, но если можно найти еще 3 регистра для буфера, то должно быть примерно так:
; 
;    r40,r41,r42 буферные регистры
;
; 
; read in 4 characters from the serial link
;
read_4:
      rcall   get_char      ; read and ignore bits 32..24
      rcall   get_char      ; read bits 23..16
      mov      r42,r16                ;пишем в буфер
      rcall   get_char      ; read bits 15..8
      mov      r41,r16                 ;пишем в буфер
      rcall   get_char      ; read bits 7..0
      mov      r40,r16                 ;пишем в буфер
                            cli                                                     ;запрещаем прерывания
                            mov                      r24,r40                ;быстренько грузим куда надо, начиная с младших разрядов
                            mov                      r25,r41
                            mov                      r26,r42
                            sei                                                   ;разрешаем прерывания
      clr      r17
      out      PORTB,r17
      ret
; и тоже самое для фазы
; read 4 character from the serial link and add to phase accumulator
; ---- Первый байт игнорируется, второй - младший байт, третий - средний, четвертый - старший байт.
read_ph_4:
      rcall   get_char      ; read and ignore bits 32..24 
      rcall   get_char      ; read bits 7 ..0   
      mov          r40,r16                              
      rcall   get_char      ; read bits 15..8
      mov      r41,r16                     
      rcall   get_char      ; read bits 23..16
      mov      r42,r16      
      cli                                                     ;запрещаем прерывания
                            mov                      r20,r40                ;быстренько грузим куда надо, начиная с младших разрядов
                            mov                      r21,r41
                            mov                      r22,r42
                            sei                                                   ;разрешаем прерывания            
      ret                              
Возможно и не поможет... Там надо еще смотреть как обрабатывается прерывание по UART, но на это мне уже интеллекта не хватит.  
