
pctl  equ $fffd
bcr equ $fffe ; BCR Register
ogdbr equ $fffc ; OnCE GDB Register
ecsr equ $ffeb ; EMI Control/Status Register
edrr0 equ $ffea ; EMI Data Read Register
ebar0 equ $ffe8 ; EMI Base Address Register 0
eor0 equ $ffe9 ; EMI Offset Register
edrf equ 13 ; EMI EDRR Full flag
hrne equ 17 ; SHI FIFO Not Empty flag
hrx equ $fff3 ; SHI HRX FIFO
hcsr equ $fff1 ; SHI Control/Status Register
hi2c equ 1 ; SHI IIC Enable Control Bit
ma equ 0 ; OMR Mode A
mb equ 1 ; OMR Mode B
mc equ 4 ; OMR Mode C
gpior equ $fff7 ; GPIO Control/Data Register

gdd3 equ 11 ; direction bit for GPIO3
gdd2 equ 10 ; direction bit for GPIO3
gdd1 equ 9 ; direction bit for GPIO3
gdd0 equ 8 ; direction bit for GPIO3

gd3 equ 1 ; data bit for GPIO3
rcs equ $ffe1  ;SAI receiver control / status register
tcs equ $ffe4  ;SAI transmitter conntrol /status register
brc equ $ffe0  ;baud rate control register
rx0 equ $ffe2  ;SAI receive data register
rx1 equ $ffe3  ;SAI receive data register
tx0 equ $ffe5  ;SAI transmit data register
TX1 equ $ffe6  ;SAI transmit data register
TX2 equ $ffe7  ;SAI transmit data register
ipr equ $ffff  ;interrupt priority register
rldf equ 14
rrdf equ 15
tlde equ 14
trde equ 15


N equ 30


  org p:$0 ; bootstrap code starts at $0
  jmp start1



  org p:$2    ;stack error
  nop
  nop

   org p:$4   ;trace
   nop
   nop


   org p:$6   ;SWI
   nop
   nop

   org p:$8       ;IRQa
 ;   jmp wyjatek
    nop
    nop

   org p:$0a      ;IRQb
;    jmp wyjatek
    nop
    nop

   org p:$10      ;SAI L TX
;   jmp wyslij_l
 ;   jmp wyjatek
  ; nop
  ; nop

   org p:$12      ;SAI R TX
;   jmp wyslij_r
   ; jmp wyjatek
  ; nop
  ; nop


  org p:$14       ;SAI TX Exception
  jmp wyjatek_tx
 ;  nop
 ;  nop

  org p:$16         ;SAI L RX
 ; jmp odbierz_lewy
;  jmp wyjatek
;   nop
;   nop
  org p:$18          ;SAI R RX
;  jmp odbierz_prawy
;  jmp wyjatek
 ;  nop
 ;  nop

  org p:$1a         ;SAI RX Exception
  jmp wyjatek
;   nop
;   nop


;  org p:$4a
  ;jmp wyjatek
;  nop
;  nop

wspolczynniki:
  dc    -0.1448
  dc     0.0000
  dc    -0.0445
  dc     0.0000
  dc    -0.0538
  dc     0.0000
  dc    -0.0675
  dc     0.0000
  dc    -0.0882
  dc     0.0000
  dc    -0.1253
  dc     0.0000
  dc    -0.2111
  dc     0.0000
  dc    -0.6363
  dc          0
  dc     0.6363
  dc      0.0000
  dc     0.2111
  dc     0.0000
  dc     0.1253
  dc     0.0000
  dc     0.0882
  dc     0.0000
  dc     0.0675
  dc     0.0000
  dc     0.0538
  dc     0.0000
  dc     0.0445
  dc    0.0000
  dc    0.1448
















start1:
  ;filtr fir na


  move       #wspolczynniki,r0
  move       #0,r1
  do  #30,wsploop
  move       p:(r0)+,x0
  move       x0,y:(r1)+
wsploop:

  move      #0.59,a
  move a,y:31







    movep #$260035,x:pctl    ; uaktywnij PLL i ustaw 50MHz
    movep #$000A01,x:rcs     ;uaktywnij SAI

    movep #$000203,x:tcs     ;uaktywnij SAI
  ;  movep #$000101,x:brc     ;uaktywnij preskaler


    movep #$000c00,x:ipr
    andi   #$0fc,mr   ;wlacz przerwania





      move #0,r0      ;poczatek bufora probek
      move #0,r4      ;pocz. buf. wsp.
      move #N-1,m0    ;arytm. mod N dla rej. adres
      move m0,m4      ;dotycz. obu buforow

      move #$100,r3
      move #$1,N3
      move #$140,r2
      move #$1,N2
      move #$0ff,m3
      move #$0ff,m2
      MOVE #16,N0
      MOVE #16,N1

      move #32,r1      ;poczatek bufora probek
      move #0,r5      ;pocz. buf. wsp.
      move #N-1,m1    ;arytm. mod N dla rej. adres
      move m1,m5      ;dotycz. obu buforow






;      do #128,przes
;      nop
;      move (r4)+
;      nop
;przes:



petla:
    nop
    jset #rldf,x:rcs,odbierz_lewy
    nop
    jset #rrdf,x:rcs,odbierz_prawy

    nop
    jmp petla




   wyjatek:
    bset #gdd1,x:gpior
  nop
  nop
  bclr #gdd1,x:gpior

   move x:rcs,a2
   move x:rx0,a2
 ; nop
 ; nop
 ; nop
 ; nop

   rti


   wyjatek_tx:
  bclr #gdd1,x:gpior

  bset #gdd1,x:gpior
   move x:tcs,a2
   move a2,x:tx0
 ; nop
 ; nop
 ; nop
 ; nop

   rti





odbierz_lewy:
 ; ORI   #$03,mr   ;wYlacz przerwania


 ; bCLR #gdd1,x:gpior
    move x:rx0,a
    MOVE A,X:TX1
    move a,x:(r0)               ;zapisz probke do pamieci
    clr a    x:(r0)+,x0      y:(r4)+,y0
    do  #N-1,splot
      mac x0,y0,a    x:(r0)+,x0   y:(r4)+,y0
splot:
    macr x0,y0,a   (r0)-

    move a,x0            ;xh
        move a,x:tx0
;    MOVE Y:31,Y0
 ;   MPY X0,Y0,A
  ;  MOVE A,X0

    move y:(r2)+N2,y0    ; cosinus
    clr b
    mac  x0,y0,b        ;B=Xh * cos
    move x:(r0+N),x0    ;xd
;    MOVE Y:31,Y1
;    MPY X0,Y1,A
;    MOVE A,X0
    move y:(r3)+N3,y0   ;sinus
    move b,a
    macr x0,y0,a



    nop
;    move a,x:tx0
  ;   bSET #gdd1,x:gpior

  ;      andi   #$0fc,mr   ;wlacz przerwania


    jmp petla
   rti




odbierz_prawy:

    move x:rx0,a
    MOVE A,X:TX1
    move a,x:(r1)               ;zapisz probke do pamieci
    clr a    x:(r1)+,x0      y:(r5)+,y0
    do  #N-1,splot1
      mac x0,y0,a    x:(r1)+,x0   y:(r5)+,y0
splot1:
    macr x0,y0,a   (r1)-
    move a,x0            ;xh
    move y:(r2),y0    ; cosinus
    clr b
    mac  x0,y0,b
    move x:(r1+N),x0    ;xd
    move y:(r3),y0   ;sinus
    move b,a
    macr x0,y0,a



    nop
    move a,x:tx0
  ;   bSET #gdd1,x:gpior

  ;      andi   #$0fc,mr   ;wlacz przerwania






   jmp petla
   rti




