• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 裸奔实验中遇到问题了,求各位指教!! 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 5172
精华: 0
发帖: 20
金钱: 195 两
威望: 191 点
综合积分: 40 分
注册时间: 2009-04-13
最后登录: 2013-01-11
楼主  发表于: 2009-04-25 00:57

 裸奔实验中遇到问题了,求各位指教!!

图片:
我在做定时器的中断实验,发现定时器0老是不能中断,我用INTOFFSET0来判断是否发生了TIMER0的溢出中断,发现INTOFFSET0的值一直是0  。
请问一下定时器计数减到0的时候是不是就会发生中断,我的设置是不是设置错了,求各位帮忙看一下,谢谢!
级别: 新手上路
UID: 5172
精华: 0
发帖: 20
金钱: 195 两
威望: 191 点
综合积分: 40 分
注册时间: 2009-04-13
最后登录: 2013-01-11
1楼  发表于: 2009-04-25 03:24
最后用SRCPND寄存器检测到TIME0没有发生中断。。。但USBD位却被置1了。。。奇怪!!
级别: 新手上路
UID: 5172
精华: 0
发帖: 20
金钱: 195 两
威望: 191 点
综合积分: 40 分
注册时间: 2009-04-13
最后登录: 2013-01-11
2楼  发表于: 2009-04-25 04:19
图片:
图片:
对于2440的中断系统我不是很了解,望各位指教一个。。
到底2440什么条件下才响应ISR中断?

A:当CPSR位的 I 位被置0;当INTMSK相应的中断位未被屏蔽;当INTMOD相应中断位被置0(ISR模式);中断源出现(这时SRCPND相应位被置位);        

这时候就CPU就会响应中断(这是我之前的理解)

B:当CPSR位的 I 位被置0;当INTMSK相应的中断位未被屏蔽;当INTMOD相应中断源位被置0(ISR模式);中断源出现(这时SRCPND相应位被置位);

并且   优先级仲裁器PRIORITY设置为当前中断源优先级为最高,这时INTPND相应的中断源位就会被置1。CPU会跟据INTPND相应的中断源位响应中断。

我想应该按B的理解才是正确的吧。但我想不通一个问题,就是优先级仲裁器PRIORITY中有两个位的优先级顺序是不可改变的(相对于5个优先级顺序来说)。对仲裁器ARBITER6来说,它管着仲裁器ARBITER0~ARBITER5,其中ARBITER0的优先级总是最高,ARBITER5的优先级总是最低,那么。。。ARBITER0管着的中断源EIT0~EIT3总是比ARBITER2管着的TIMER0~UART2高。

那么,如果从B去理解,问题顺之而来,就是TIMER0如何才能产生中断呢?它的优先级永远不可能最高,这时INTPND就不会置位,CPU就不会响TIMER0的中断。。。

求各位大侠解答在下的疑难,谢谢
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2009-04-25 07:57
先拿示波器看看TIMER0(GPB0)的输出是不是和你想的一样
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 3278
精华: 0
发帖: 61
金钱: 600 两
威望: 576 点
综合积分: 122 分
注册时间: 2009-01-03
最后登录: 2011-03-07
4楼  发表于: 2009-04-25 11:26
我不知道那些宏是怎么定义的,但为什么timer0 的ISR里面有个死循环while(1),那不是永远都不能从ISR中返回吗?
感觉程序整个逻辑都好像不对
级别: 侠客
UID: 3278
精华: 0
发帖: 61
金钱: 600 两
威望: 576 点
综合积分: 122 分
注册时间: 2009-01-03
最后登录: 2011-03-07
5楼  发表于: 2009-04-25 17:06
引用第2楼dzqqqq于2009-04-25 04:19发表的  :
对于2440的中断系统我不是很了解,望各位指教一个。。
到底2440什么条件下才响应ISR中断?

A:当CPSR位的 I 位被置0;当INTMSK相应的中断位未被屏蔽;当INTMOD相应中断位被置0(ISR模式);中断源出现(这时SRCPND相应位被置位);        

.......


当两个以上的中断源同时发出中断时,才应用到以上的仲裁机制;若某一时刻,只有一个中断源发出中断,自然不需要这种机制了。
所以如果只有timer0的中断触发了,而该中断源又没有被Mask起来,那么INTPND相应bit为1
级别: 新手上路
UID: 5172
精华: 0
发帖: 20
金钱: 195 两
威望: 191 点
综合积分: 40 分
注册时间: 2009-04-13
最后登录: 2013-01-11
6楼  发表于: 2009-04-26 15:38

 回 5楼(raycome) 的帖子

哦,原来如此~~
级别: 新手上路
UID: 5172
精华: 0
发帖: 20
金钱: 195 两
威望: 191 点
综合积分: 40 分
注册时间: 2009-04-13
最后登录: 2013-01-11
7楼  发表于: 2009-04-26 15:51
图片:
图片:
我试着将程序下到NOR FLASH中运行,还是一样的问题。。。
之后下了一个光盘里的2440test_N35.bin来测试(这个程序很大,下了一分钟左右),没事,再下回我的程序,发现无法下载,出现flash ID DOES NOT MACH.
这次惨了,SUPPER VIVI没了。。。   
旧问题未解决,新问题出现。。折腾啊~~
    
级别: 侠客
UID: 3278
精华: 0
发帖: 61
金钱: 600 两
威望: 576 点
综合积分: 122 分
注册时间: 2009-01-03
最后登录: 2011-03-07
8楼  发表于: 2009-04-26 16:07
你应该先找出程序的问题
级别: 新手上路
UID: 5172
精华: 0
发帖: 20
金钱: 195 两
威望: 191 点
综合积分: 40 分
注册时间: 2009-04-13
最后登录: 2013-01-11
9楼  发表于: 2009-04-26 18:45
引用第8楼raycome于2009-04-26 16:07发表的  :
你应该先找出程序的问题

可以下回SUPPER VIVI了,刚才FLASH ID 识别错误怀疑是并口线接触不好导致的。。。
我发现不用SUPPER VIVI下载到RAM 中的0X30000000地址运行,而直接下到NOR FLASH 的0x00000000地址运行,TIMER0可以产生中断(蜂鸣响了一声就停了,但这时串口0用不了,我是用板上的指示灯判别的)
当用SUPPER VIVI 下载时,蜂鸣器一直响(证明没有发生中断,但这时串口0可以使用,在超级终端可以看到串口输出的字符),而且我发现SRCPND寄存器的第25位(INT_USBD)是一直被置位的,即使我清了无数次的SRCPND。

不知道SUPPER VIVI里对2440的中断进行了怎样的调度。。。
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go