/ b; c: {! v {6 j5 `& W6 ?% `. K# J! J8 C! J' {8 b
static void ad7606_gpio_setup(ad7606 *ad) {/ P2 L# X- F C
/*Set the AD7606_PAR_BUSY to the input mode*/ 9 ~% Z0 V: \+ q7 g' \7 X% t( Q //初始化5.11、5.9 、 5.5为中断口0 ]! z5 x8 u4 F" _" y; ?
GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1, GPIO_DIR_INPUT); - {9 ?: b6 f& M7 l7 u GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2, GPIO_DIR_INPUT);& @5 K. E) {" ?7 \" S" s
GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C, GPIO_DIR_INPUT);2 I+ E0 y* l4 R* _4 z; D
//GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY, GPIO_DIR_INPUT); " ^* w' k; L Z& Y9 C /*Set the AD7606_PAR_BUSY to the Falling Edge Interrupt*/ ) ?( a4 z+ R6 R GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1, GPIO_INT_TYPE_FALLEDGE);; n: b) B8 Q( k7 e" Q4 @
GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2, GPIO_INT_TYPE_FALLEDGE); ; G- j6 F2 I- H5 B GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C, GPIO_INT_TYPE_FALLEDGE);& p1 y/ s- Z) `! D8 n
//GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY, GPIO_INT_TYPE_FALLEDGE);% Q$ q* S: K+ ]7 M/ e; H
/*The interrupt setting allows AD7606_PAR_BUSY_GPIO_BANK*/ i" Y s3 v4 o. @! d
GPIOBankIntEnable(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_GPIO_BANK); 4 v9 ^0 T( H! o" ~5 M- X( I5 s1 x4 p
GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_RESET, GPIO_DIR_OUTPUT); 8 r" K) f! d8 I+ O( p1 o: x: C GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_RESET, GPIO_PIN_HIGH);- S6 v1 M9 Q) L2 f3 y
Task_sleep(1000);0 ~9 R" f, U. j
GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_RESET, GPIO_PIN_LOW);, _; L0 G9 S* w/ X7 k
Task_sleep(1000);+ i5 U# u) N, a1 `# J4 h
$ x# ~1 j m) T /*Set the AD7606_PAR_CONVST to output mode*/ : y V6 }, M9 Z GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_CONVST, GPIO_DIR_OUTPUT); : D. q, ^7 ^8 i" [- z2 n8 y4 f GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_CONVST, GPIO_PIN_LOW); . D. n5 I% t3 N4 l I ! e8 M4 O% g1 R GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_RD, GPIO_DIR_OUTPUT); ! P e7 T# r' ]' R9 V, _$ t1 d GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_RD, GPIO_PIN_HIGH);2 V! V' x7 O: J( h$ T* s5 T; o
( S8 V T2 R8 r- a+ C. r. R} 7 u x3 b2 b- \. N6 H$ D1 c ' X k( q8 O: {: |9 B' w' v4 B( K5 P% E: O" f
static void ad7606_busy_hwi(UArg ad_addr) {" J Y% v9 t2 }7 ^6 `# l
3 B7 d9 B) ~0 c p. a3 Z; z
+ N# x& Y$ L# Q! B
/* Disable the interrupts for pins of bank AD7606_PAR_BUSY in GPIO.*/ " n: ]! w& } x- c, j GPIOBankIntDisable(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_GPIO_BANK); //用仿真器debug,发现程序能进入这里。( S" u% a Q( d4 I+ E3 F. o2 M7 J
2 T7 n: ` Z2 r7 b( ?9 G! ]$ b1 I- \! x if(GPIOPinIntStatus(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1) == GPIO_INT_PEND)* }+ T7 M7 A. H$ J u
{ ; |2 m: ]% Q0 t6 ~& I# {! C GPIOPinIntClear(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1); //问题是:用仿真器debug,发现程序不能进入这里。 4 L3 r! a, K# G4 V6 \/ L3 k- ~: F cs_addr = SOC_EMIFA_CS5_ADDR ; $ P! f* P( n$ C' l y, R! B/ F internal = 0 ; 0 w D3 B0 c* C; m, i2 I int_flag[0] = 1 ; 6 c0 X9 o8 u* q( P8 j% { } # F/ f" S: ?! K9 `- O5 q4 g if(GPIOPinIntStatus(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2) == GPIO_INT_PEND)/ U1 g- Y+ y+ g- r9 z
{ # k6 q" h7 F9 y GPIOPinIntClear(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2); //问题是:用仿真器debug,发现程序不能进入这里。' d! p, h/ ^0 _5 P: m% |+ X
cs_addr = SOC_EMIFA_CS4_ADDR ; * l, X0 \% ]0 c$ H5 a2 a& P9 r internal = 6 ; ; Z' x$ c2 D* M( n; [0 z int_flag[1] = 1 ; 6 h+ @4 f4 X+ Y e } 8 Q G: b' f$ b" d1 d4 p. s if(GPIOPinIntStatus(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C) == GPIO_INT_PEND) 5 F: E$ e( f$ O2 Z" Z0 u& g { - O: s O# R4 E y GPIOPinIntClear(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C); //问题是:用仿真器debug,发现程序不能进入这里。 8 ~: f2 E! t( Z% G A9 T7 d cs_addr = SOC_EMIFA_CS2_ADDR ; " r% I/ Q! y! U$ f3 F1 D internal = 12 ;7 H7 ]4 {) z! T
int_flag[2] = 1 ;5 r' {% a+ y& b5 U5 @, E
}3 I# E; E2 Y1 T8 h0 p5 c
$ W `- g, D% l |0 a
GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_CONVST, GPIO_PIN_LOW);% b5 A0 D, V1 m8 _7 A6 `
/ j9 }: O& X* t2 S3 b/ L
GPIOBankIntEnable(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_GPIO_BANK);9 X6 }8 F3 ~8 S+ J" S: h0 M4 N
} % o- k {) j' r2 Q6 A- N; Z 8 J+ W' G4 A) E& W7 ^作者: vtinf 时间: 2016-8-31 16:53
INTSTAT45状态如图 . I# n9 {" U% G& `$ v[attach]1368[/attach]& ?# l& j {8 l; p1 \