where : ibrtses embedded
AVR as FSK modulator
the project required two frequencies around 55kHz with about 2kHz difference.
frequncy switching happens with continous phase.
there are two inputs : enable & low/high
the 8bit parallel go to a R-2R network, producing analog output.
; 55kHz FSK sinus generator
; programmed and simulated 16.Jan.99
; running at a 10MHz Quartz
; clocking DAC with 5MHz
; portb is DAC R-2R 47kOhm Ladder
;
; portd,0 is enable :=1 Tx_Enable
; one(1) is enabled
; zero(0) is disabled
;
; portd,1 is 1/0 from a UART
; one(1) means low frequency
; zero(0) means high frequency
;
; portd,2 is Amp_on to Amplifier output
; one(1) means Amp on
; zero(0) means Amp off
;
; verified with simulator :
; low frequncy:=182 cycles =54.945kHz
; high frequency:=176 cycles =56.82kHz
; low frequency sinus from sinus91.asm
; high frequency sinus from sinus88.asm
; 410 of 512 Words used
; change 19.Jan.99
; replace Sinus88.asm with Sinus89.asm
; replace Sinus91.asm with Sinus92.asm
; low frequncy:=184 cycles =54.35kHz
; high frequency:=178 cycles =56.18kHz
; change 23.june 99
; replace Sinus89.asm with Sinus87.asm, high frequency
; PD2:output switches amp on when PD2:=1, off:=PD2:=0 must follow PD0
; high frequency:=174 cycles =57.47kHz
; low frequncy:=184 cycles =54.35kHz
;...................................................
.include "1200def.inc" ; includes '.device AT90S1200' directive
rjmp init
.org OVF0addr
;.def scratch =r16 korrigiert von AN
init:
.def Temp =r16 ;temporary register korrigiert von AN
ser Temp
out DDRB,Temp ; portb:=outputs
out PORTD,Temp ; activate pullups on portd
cbi PORTD,2 ; amp:=off
ldi Temp,0x2
out DDRD,Temp ; portd:=inputs except d,2
loop:
ldi Temp,128 ; preset output
out PORTB,Temp
sbis PIND,PIND0
rjmp loop
sbi PORTD,2 ; amp:=on
;................................................
;92 samples per period:=low frequency
lo_start:
ldi Temp,128
out portb,Temp
ldi Temp,137
out portb,Temp
ldi Temp,145
out portb,Temp
ldi Temp,154
out portb,Temp
ldi Temp,162
out portb,Temp
ldi Temp,171
out portb,Temp
ldi Temp,179
out portb,Temp
ldi Temp,186
out portb,Temp
ldi Temp,194
out portb,Temp
ldi Temp,201
out portb,Temp
ldi Temp,208
out portb,Temp
ldi Temp,215
out portb,Temp
ldi Temp,221
out portb,Temp
ldi Temp,227
out portb,Temp
ldi Temp,232
out portb,Temp
ldi Temp,237
out portb,Temp
ldi Temp,241
out portb,Temp
ldi Temp,244
out portb,Temp
ldi Temp,248
out portb,Temp
ldi Temp,250
out portb,Temp
ldi Temp,252
out portb,Temp
ldi Temp,254
out portb,Temp
ldi Temp,255
out portb,Temp
; decision 1 or 0
sbis PIND,PIND1
rjmp hi_cont
lo_cont:
; ldi Temp,255 skip for test
; out portb,Temp skip for test
ldi Temp,255
out portb,Temp
ldi Temp,254
out portb,Temp
ldi Temp,252
out portb,Temp
ldi Temp,250
out portb,Temp
ldi Temp,248
out portb,Temp
ldi Temp,244
out portb,Temp
ldi Temp,241
out portb,Temp
ldi Temp,237
out portb,Temp
ldi Temp,232
out portb,Temp
ldi Temp,227
out portb,Temp
ldi Temp,221
out portb,Temp
ldi Temp,215
out portb,Temp
ldi Temp,208
out portb,Temp
ldi Temp,201
out portb,Temp
ldi Temp,194
out portb,Temp
ldi Temp,186
out portb,Temp
ldi Temp,179
out portb,Temp
ldi Temp,171
out portb,Temp
ldi Temp,162
out portb,Temp
ldi Temp,154
out portb,Temp
ldi Temp,145
out portb,Temp
ldi Temp,137
out portb,Temp
ldi Temp,128
out portb,Temp
ldi Temp,119
out portb,Temp
ldi Temp,111
out portb,Temp
ldi Temp,102
out portb,Temp
ldi Temp,94
out portb,Temp
ldi Temp,85
out portb,Temp
ldi Temp,77
out portb,Temp
ldi Temp,70
out portb,Temp
ldi Temp,62
out portb,Temp
ldi Temp,55
out portb,Temp
ldi Temp,48
out portb,Temp
ldi Temp,41
out portb,Temp
ldi Temp,35
out portb,Temp
ldi Temp,29
out portb,Temp
ldi Temp,24
out portb,Temp
ldi Temp,19
out portb,Temp
ldi Temp,15
out portb,Temp
ldi Temp,12
out portb,Temp
ldi Temp,8
out portb,Temp
ldi Temp,6
out portb,Temp
ldi Temp,4
out portb,Temp
ldi Temp,2
out portb,Temp
ldi Temp,1
out portb,Temp
; decision on/off
sbis PIND,PIND0
rjmp end_cycle
; ldi Temp,1 skip for test
; out portb,Temp skip for test
ldi Temp,1
out portb,Temp
ldi Temp,2
out portb,Temp
ldi Temp,4
out portb,Temp
ldi Temp,6
out portb,Temp
ldi Temp,8
out portb,Temp
ldi Temp,12
out portb,Temp
ldi Temp,15
out portb,Temp
ldi Temp,19
out portb,Temp
ldi Temp,24
out portb,Temp
ldi Temp,29
out portb,Temp
ldi Temp,35
out portb,Temp
ldi Temp,41
out portb,Temp
ldi Temp,48
out portb,Temp
ldi Temp,55
out portb,Temp
ldi Temp,62
out portb,Temp
ldi Temp,70
out portb,Temp
ldi Temp,77
out portb,Temp
ldi Temp,85
out portb,Temp
ldi Temp,94
out portb,Temp
ldi Temp,102
out portb,Temp
ldi Temp,111
out portb,Temp
; ldi Temp,119 skip for end
; out portb,Temp skip for end
rjmp lo_start ;
;................................................
;87 samples per period := high frequency
hi_start:
ldi Temp,128
out portb,Temp
ldi Temp,137
out portb,Temp
ldi Temp,146
out portb,Temp
ldi Temp,155
out portb,Temp
ldi Temp,164
out portb,Temp
ldi Temp,173
out portb,Temp
ldi Temp,181
out portb,Temp
ldi Temp,190
out portb,Temp
ldi Temp,197
out portb,Temp
ldi Temp,205
out portb,Temp
ldi Temp,212
out portb,Temp
ldi Temp,219
out portb,Temp
ldi Temp,225
out portb,Temp
ldi Temp,230
out portb,Temp
ldi Temp,236
out portb,Temp
ldi Temp,240
out portb,Temp
ldi Temp,244
out portb,Temp
ldi Temp,248
out portb,Temp
ldi Temp,250
out portb,Temp
ldi Temp,253
out portb,Temp
ldi Temp,254
out portb,Temp
ldi Temp,255
out portb,Temp
; decision 1 or 0
sbic PIND,PIND1
rjmp lo_cont
hi_cont:
; ldi Temp,255 skip for test
; out portb,Temp skip for test
ldi Temp,254
out portb,Temp
ldi Temp,253
out portb,Temp
ldi Temp,252
out portb,Temp
ldi Temp,249
out portb,Temp
ldi Temp,246
out portb,Temp
ldi Temp,242
out portb,Temp
ldi Temp,238
out portb,Temp
ldi Temp,233
out portb,Temp
ldi Temp,228
out portb,Temp
ldi Temp,222
out portb,Temp
ldi Temp,215
out portb,Temp
ldi Temp,208
out portb,Temp
ldi Temp,201
out portb,Temp
ldi Temp,293
out portb,Temp
ldi Temp,185
out portb,Temp
ldi Temp,177
out portb,Temp
ldi Temp,169
out portb,Temp
ldi Temp,160
out portb,Temp
ldi Temp,151
out portb,Temp
ldi Temp,142
out portb,Temp
ldi Temp,133
out portb,Temp
ldi Temp,123
out portb,Temp
ldi Temp,114
out portb,Temp
ldi Temp,105
out portb,Temp
ldi Temp,96
out portb,Temp
ldi Temp,87
out portb,Temp
ldi Temp,79
out portb,Temp
ldi Temp,71
out portb,Temp
ldi Temp,63
out portb,Temp
ldi Temp,55
out portb,Temp
ldi Temp,48
out portb,Temp
ldi Temp,41
out portb,Temp
ldi Temp,34
out portb,Temp
ldi Temp,28
out portb,Temp
ldi Temp,23
out portb,Temp
ldi Temp,18
out portb,Temp
ldi Temp,14
out portb,Temp
ldi Temp,10
out portb,Temp
ldi Temp,7
out portb,Temp
ldi Temp,4
out portb,Temp
ldi Temp,3
out portb,Temp
ldi Temp,2
out portb,Temp
ldi Temp,1
out portb,Temp
; decision on/off
sbis PIND,PIND0
rjmp end_cycle
; ldi Temp,1 skip for test
; out portb,Temp skip for test
ldi Temp,2
out portb,Temp
ldi Temp,3
out portb,Temp
ldi Temp,6
out portb,Temp
ldi Temp,8
out portb,Temp
ldi Temp,12
out portb,Temp
ldi Temp,16
out portb,Temp
ldi Temp,20
out portb,Temp
ldi Temp,26
out portb,Temp
ldi Temp,31
out portb,Temp
ldi Temp,37
out portb,Temp
ldi Temp,44
out portb,Temp
ldi Temp,51
out portb,Temp
ldi Temp,59
out portb,Temp
ldi Temp,66
out portb,Temp
ldi Temp,75
out portb,Temp
ldi Temp,83
out portb,Temp
ldi Temp,92
out portb,Temp
ldi Temp,101
out portb,Temp
ldi Temp,110
out portb,Temp
; ldi Temp,119 skip for end
; out portb,Temp skip for end
rjmp hi_start
;.................................................
;end - from minimum to mean, taken from low
end_cycle:
ldi Temp,1
out portb,Temp
ldi Temp,2
out portb,Temp
ldi Temp,3
out portb,Temp
ldi Temp,5
out portb,Temp
ldi Temp,8
out portb,Temp
ldi Temp,11
out portb,Temp
ldi Temp,15
out portb,Temp
ldi Temp,19
out portb,Temp
ldi Temp,23
out portb,Temp
ldi Temp,29
out portb,Temp
ldi Temp,34
out portb,Temp
ldi Temp,41
out portb,Temp
ldi Temp,47
out portb,Temp
ldi Temp,54
out portb,Temp
ldi Temp,61
out portb,Temp
ldi Temp,69
out portb,Temp
ldi Temp,77
out portb,Temp
ldi Temp,85
out portb,Temp
ldi Temp,93
out portb,Temp
ldi Temp,102
out portb,Temp
ldi Temp,111
out portb,Temp
ldi Temp,119
out portb,Temp
cbi PORTD,2 ;amp:=off
rjmp loop
##########################################################
disclaimer
Questions ?
Suggestions?
Feedback ?
sponsored links
AVR index
embedded software pages
home
last updated: 25.nov.99
Copyright (99,2001) Ing.Büro R.Tschaggelar