综合总结Word下载.docx

上传人:b****7 文档编号:21993680 上传时间:2023-02-02 格式:DOCX 页数:12 大小:21.72KB
下载 相关 举报
综合总结Word下载.docx_第1页
第1页 / 共12页
综合总结Word下载.docx_第2页
第2页 / 共12页
综合总结Word下载.docx_第3页
第3页 / 共12页
综合总结Word下载.docx_第4页
第4页 / 共12页
综合总结Word下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

综合总结Word下载.docx

《综合总结Word下载.docx》由会员分享,可在线阅读,更多相关《综合总结Word下载.docx(12页珍藏版)》请在冰豆网上搜索。

综合总结Word下载.docx

.code

ldaMystr1@index

在电路中判断反馈的方法:

1.反馈极性的判别方法:

A.断开反馈通路,给定原输入信号一个极性;

B.根据该极性,逐步推断基本放大器中有关信号相应的极性;

C.确定反馈信号VF的极性;

D.根据输入信号VI与VF的极性,确定净输入信号VID与VI,VF的数值关系;

若|VID|<

|VI|则为负反馈,若|VID|>

|VI|则为正反馈;

2.电压反馈与电流反馈的判别方法:

A.先区分基本放大器A和反馈网络F;

B.判别F的输入端和A的输出端的连接方式;

并联的称为电压反馈;

串联的称为电流反馈.

3.并联反馈与串联反馈的判别方法:

B.判别F的输出端和A的输入端的连接方式;

并联的称为并联反馈,串联的称串联反馈;

 

BIT和AND用法:

一.BIT和AND用法的区别:

1.AND可以来判断某bit,使用mask的方法处理,会改变累加器的值,会影响标致位N,Z,会影响操作前的N,Z的标致;

2.BIT可以来判断某bit,也可以来判断N和V标致,用来判断bit位时,需要累加器,其操作和AND一样,但不会破坏寄存器值,它还可以来判断N,V,Z,但只有Z会影响到操作前的Z标致;

LDA#08H;

selectbit3forcheckingwithmask

LOOP:

BIT$12;

checkedmemory

BEQMEET;

branchonb3=0

BVCMEET;

branchonb6=0

BMILOOP;

loopifb7=1

MEET:

;

continueherewhenb3orb6orb7=0

...

二.在程序中需要暂存a值时,又不需要用其它寄存器暂存时,可以用pha和pla来处理;

ldaaccumulator+1

adcphase+1

pha;

saveintegerpartforaddresscalcs

;

//removetheintegerpartfromthephaseaccumulator

and#01Fh

staaccumulator+1

pla;

restoreintegerpartforcalc

I/O设置问题:

1.当I/O是输出时,设置的属性是ODP(只能输出高,输出低时是Float状态),且给I/O的初始化的Data是0,则对I/O作读的动作时,I/O的状态是Float及外部是什么电平,读到的就是什么电平!

2.1.当I/O是输出时,设置的属性是ODN(只能输出低,输出高时是Float状态),且给I/O的初始化的Data是1,则对I/O作读的动作时,I/O的状态是Float及外部是什么电平,读到的就是什么电平!

在Gpc或Gpc1中需要作按键sutain功能时条件:

1.需要要相应的音色包洛(envlope)中有红色的循环,否则不能有sutain效果;

:

GPC中:

D_T_TestToneLoop:

EQU$-T_ToneInstParaTable

DB10,40H

DB10,90H,D_T_TestToneLoop

DB255,00H

DB0

GPC1中:

%FirstWTInstParaPtD_WT_ORGAN,

%NextWTInstParaPt25,F0H;

label,duration(EvUnitTimems),TargetValue

%NextWTInstParaPt240,60H;

duration(EvUnitTimems),TargetValue

Organ_Loop:

%NextWTInstParaPtReturn240,60H,Organ_Loop

%NextWTInstParaPt80,00H;

%EndWTInstParaPt

2.播放前要使toneholdenable(GPC或GPC1中可以设置调用相应的函数)

3.按键Release后需要使toneholddisable(tone播放就会停止);

;

******************************************************************************************

在GPC中实例:

*******************************************************************************************

KeyStroke:

jsrF_HoldtoneCh1;

enabletonesutain

lda#7;

Playtone,A:

instrumentindex,X:

frequencyindex(0~71)

ldx#45

jsrF_PlayToneCh1

KeyRelease:

jsrF_ReleaseToneCh1;

disabletonesutain

rts

F_HoldtoneCh1:

SEI

%TestToneCh1

BCCL_Exit?

sei

LDAR_StatusCh1

AND#D_ToneHold

STAR_StatusCh1

CLI

L_Exit?

RTS

F_ReleaseToneCh1:

LDAR_StatusCh1

AND#.NOT.D_ToneHold

*********************************************************************************************

在GPC1中:

%WT1HoldEnable;

lda#1

ldx#35

jsrF_PlayWaveTableWT1;

%WT1HoldDisable;

%WT1HoldEnable.MACRO

LDAR_WTStatus1

ORA#D_WTWT1Hold

STAR_WTStatus1

.ENDM

%WT1HoldDisable.MACRO

LDA#00H

STAR_EnvCounterWT1

LDAR_WTStatus

AND#.NOT.D_WTWT1LoopPt

STAR_WTStatus

AND#.NOT.D_WTWT1Hold

.ENDM

SPC48:

SPU+SW_SPEECH:

经查,导致在SPC4中同时播放2CHMIDI和1CHSoftwareSpeech异常的原因是:

SWspeech是在TimerA的INTservice中抓PCMdata的,而MIDIdecoder是在中断外抓数据,这两个抓数据的DPTR会同时处理到P_Bank寄存器,目前的demo程式在抓MIDI数据时没有考虑到SWspeech方式会在中断内修改P_Bank值,导致在readMIDIdatafromROM时,会出现Bank值被误修改的状况,从而引起你碰到的这些现象,tracebuffer如下:

7EA623B6-BDC323LDAT_ProcessDataEventL,X23C7-A4

7EAA23B9-8540STAD_ComparatorIntEnable0040-A4

7EAD23BB-BDCB23LDAT_ProcessDataEventH,X23CF-23

7EB123BE-8541STA410041-23

7EB423C0-6C4000JMP(D_ComparatorIntEnable)040-A4

7EB90041-23

7EBA23A4-203FJSRF_GetMIDIData23A6-27;

中断外从ROM中读取MIDI数据

7EC0273F-A557LDA570057-09;

MIDIDPTR中获取Bank值

7EC32741-8D20STAP_BANK0320-09;

设置Bank地址为“09”

7EC72744-A2LDX#R_TargetCh1Integer2744-A2

7EC9IRQ->

2AD101FB-2701FA-4401F9-20

7ECE2AD1-488APHA01F8-09

7ED12AD2-8A48TXA

7ED32AD3-4898PHA01F7-04

7ED62AD4-9848TYA

7ED82AD5-48ADPHA01F6-30

7EDB2AD6-AD09LDAP_IOC_BUF0309-80

7EDF2AD9-09ORA#D_ZCJump2ADA-01

7EE12ADB-8D09STAP_IOC_BUF0309-81

7EE52ADE-A9LDA#D_ExtAND16Hz2ADF-00

7EE72AE0-2451BITR_SysStatus0051-20

7EEA2AE2-106270BPLR_InstCh12AE4-70

7EEE2B46-2086JSRF_IntServiceChA2B48-0B

7EF40B86-AD09LDAR_SpeechFlagChA0209-21

7EF80B89-29AND#R_Ch4FrameLen0B8A-37

7EFA0B8B-49EOR#D_ZCJump0B8C-01

7EFC0B8D-F071BEQR_DrumIndex

7EFE0B8F-49EOR#D_RampUpFinish0B90-20

7F000B91-F01249BEQR_Ch2FsL

7F030BA5-4C07JMPL_PlayPcmTypeChA0BA7-0D

7F060D07-AD06LDAR_DacChA0206-47

7F0A0D0A-8D41STAP_DAC_A20341-47

7F0E0D0D-A650LDXR_ChASpeechAddrB0050-07;

TimerA中断内读取PCMdata,从SpeechDPTR中获取Bank值

7F110D0F-8E20STXP_BANK0320-07;

设置Bank地址为“07”,MIDI的Bank地址被修改

7F150D12-A2LDX#D_ExtAND16Hz0D13-00

7F170D14-A14ELDA(R_ChASpeechAddrL,X)A47D-44

7F1D0D16-C9CMP#810D17-81

7F1F0D18-F00ABEQR_Ch1VolCtl

7F210D1A-C9CMP#D_MixLCtl0D1B-FF

7F230D1C-D0034CBNED_TimerByFcpu

7F260D21-8D06STAR_DacChA0206-44

7F2A0D24-E64EINCR_ChASpeechAddrL004E-7E

7F2F0D26-D00EE6BNER_Ch1DPTNB

7F320D36-60ADRTS2B48-0B

7F382B49-AD09LDAP_IOC_BUF0309-81

7F3C2B4C-29AND#FE2B4D-FE

7F3E2B4E-8D09STAP_IOC_BUF0309-80

7F422B51-68A8PLA01F6-30

7F462B52-A868TAY

7F482B53-68AAPLA01F7-04

7F4C2B54-AA68TAX

7F4E2B55-688DPLA01F8-09

7F522B56-8D54STAP_INT_TimerA_Clr0354-09

7F562B59-4048RTI01FB-27

7F5C2744-A2LDX#R_TargetCh1Integer2744-A2

7F5EIRQ->

2B5A01FB-2701FA-4401F9-20

7F632B5A-488APHA01F8-09

7F662B5B-8A48TXA

7F682B5C-4898PHA01F7-04

7F6B2B5D-9848TYA

7F6D2B5E-48A5PHA01F6-30

7F702B5F-A559LDAR_MIDIStatus0059-C0

7F732B61-29AND#D_ExtIntEnable2B62-80

7F752B63-F02DBEQR_Ch3DPTNH

7F772B65-E65CINCR_DTCounter005C-01

7F7C2B67-A55CLDAR_DTCounter005C-01

7F7F2B69-C55DCMPR_TempoIndex005D-14

7F822B6B-D025A9BNER_Ch3DPTRH

7F852B92-C652DECR_1024IntCnt0052-03

7F8A2B94-D025A9BNER_Ch3DPTRH

7F8D2BBB-AD09LDAP_IOC_BUF0309-80

7F912BBE-49EOR#D_ExtIntEnable2BBF-80

7F932BC0-8D09STAP_IOC_BUF0309-00

7F972BC3-68A8PLA01F6-30

7F9B2BC4-A868TAY

7F9D2BC5-68AAPLA01F7-04

7FA12BC6-AA68TAX

7FA32BC7-688DPLA01F8-09

7FA72BC8-8D57STAP_INT_1024_Clr0357-09

7FAB2BCB-4048RTI01FB-27

7FB12744-A2LDX#D_ExtAND16Hz2745-00

7FB32746-A155LDA(R_MIDIDPTR,X)A3D1-C2;

退出TimerA中断Speechservice后,从ROM中读取MIDI数据

7FB92748-8558STAR_MIDIData0058-C2;

因Bank地址被修改,读取MIDIdata为07A3D1(bank7)的值,非09A3D1(bank9)

7FBC274A-E655INCR_MIDIDPTR0055-D2

7FC1274C-D012E6BNER_Ch2FsL

7FC42760-60A2RTS23A6-27

7FCA23A7-A458LDYR_MIDIData0058-C2

7FCD23A9-203FJSRF_GetMIDIData23AB-27

7FD3273F-A557LDA570057-09

7FD62741-8D20STAP_BANK0320-09

7FDA2744-A2LDX#D_ExtAND16Hz2745-00

7FDC2746-A155LDA(R_MIDIDPTR,X)A3D2-00

7FE22748-8558STAR_MIDIData0058-00

7FE5274A-E655INCR_MIDIDPTR0055-D3

7FEA274C-D012E6BNER_Ch2FsL

7FED2760-60A2RTS23AB-27

7FF323AC-78A5SEI

7FF523AD-A558LDAR_MIDIData0058-00

7FF823AF-855ASTAR_DeltaTime005A-00

7FFB23B1-845BSTY5B005B-C2

7FFE23B3-5860CLI

解决方法是:

在中断外读取MIDIdata时做中断保护,防止因P_Bank被修改导致的数据读取错误,如下:

F_GetMIDIData:

sei;

Jasonadd05-10-19屏蔽中断,防止MIDI数据读取时bank值被误置

LDAR_MIDIDPTR+2;

Bank

STAP_BANK

LDX#0

LDA(R_MIDIDPTR,X);

Fetchdatafrommemory

STAR_MIDIData

cli;

Jasonadd05-10-19数据正确读取后打开中断

INCR_MIDIDPTR

BNEL_NotOverFlow?

ifLowByteaddroverflow,INCHighByteaddr

INCR_MIDIDPTR+1;

HighByteaddress

LDAR_MIDIDPTR+1

CMP#C0H;

reachC000H(BFFFH)

BCCL_NotOverFlow?

IfR_MIDIDPTR+1<

C0H

LDA#0;

returnto8000H

STAR_MIDIDPTR

LDA#80H;

ifHighByte=C0H,gotonextbankfrom8000Hforeverybank!

STAR_MIDIDPTR+1

INCR_MIDIDPTR+2

L_NotOverFlow?

GPC816channel问题:

当用midichannel16来播放midi时,在现有的demo中存在下面的问题:

可能会丢掉音色;

注要原因是demo中定义:

%RAM_ALLOCR_InstCh1,15

%RAM_ALLOCR_DrumIndex,1

测16channel的音色号和鼓的index用,测可能会出问题;

当16channel用来表示Event时则没有这种问题:

GPC电流问题:

1、客户问到用spcPiggback测试客户demo程序,发现sleep是有大电流问题400uA以上(用ROSC);

2、我达接电路测试,电流是10UA以下(用crystal);

3、用OTP测试,电流在4Ua以下;

4、客户程序种没有Float的状态;

5、真正原因是spcpiggback应用中:

用ROSC是其10K电阻需要断开,来节约能源;

当10K电阻没有断开时,则会有大电流低消耗;

6、在Crystal时,则不需要断开10K电阻;

Spds301sleep和wakeup问题:

1.GPDS30X使用的是Sunplus自訂的SerialInterface,由於這套protocol可以連續寫或讀,因此SIOprotocol中,數據傳送中不需要等到Stopbit才開始處理數據,就像你使用SIO在做連續讀取/寫入SerialSRAM(SPRS512)時,也不需要等到Stopbit才開始傳送數據一樣.當MCU送完command後,後面跟著的30bytes送完之後,GDS30X就會開始執行command,不需要等到Stopbit.DS301收到sleepcommand後,在數十us的時間內就會進入sleepmode,時間的確短了一些.DS302已經延長了收到sleepcommand後進入sleep的時間,因此DS302應該不會有此問題.

2.送Sleep命令后,SPDS301sleep后,由于有改变SDA/SCk或32768没有关,则会唤醒GPDS301,此问

题可以通过修改软件解决;

3、在送sleepcommand后不要送Stop就可以解决一般的唤醒问题;

4、在spds301唤醒过程相当于Reset过程,所有需要校频率和其它设置;

5、进行校频时,可以采用两种方法:

A、自动校频(需要32768),只能校频使PWM输出到8KHz;

B、手动校频,可以向GPDS30X的Timer中送频率数,这种方法可以时PWM输出到任意值,建议最大不超12KHz;

手动校频时可以采用:

LDA#2H;

timer初值高

STAR_PWM_Timer_High

LDA#67H;

timer初值低

STAR_PWM_Tim

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1