共2条
1/1 1 跳转至页
MEGA48,winavr MEGA48与winavr,请诸位支招.
问
MEGA48 &WinAVR(20040720) &AVRStudio(4.09Build338)
一个很简单的C文件,只要一开中断,用Studio软仿真时总有莫名其妙的跑到外中断0,或复位。查LST文件正常。是我系统问题吗?请大侠相助。谢谢!
main.c source code:
#include <AVR/io.h>
#include <AVR/signal.h>
#include <AVR/interrupt.h>
#include <AVR/wdt.h>
int
main(void)
{
cli();
//EIMSK &=0X00;
//EIFR |=0X03;
while(1)
{
sei();
wdt_reset();
sei();
sei();
sei();
}
return 0;
}
SIGNAL(SIG_INTERRUPT0)
{
}
答 1: 以前用的MEGA8,MEGA16,没有着样呀..是STUDIO版本低吗? 答 2: 应该和AVRSTUDIO无关,在AVRSTUDIO中看一下堆栈初始化对不对。应该和AVRSTUDIO无关,在AVRSTUDIO中看一下堆栈初始化对不对。 答 3: 谢谢AVR! 堆栈初始化看来是对的.LST文件如下:
main.elf: file format elf32-AVR
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000000 00800100 0000009e 00000132 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 0000009e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 00000000 00800100 0000009e 00000132 2**0
ALLOC
3 .noinit 00000000 00800100 00800100 00000132 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000132 2**0
CONTENTS
5 .stab 00000264 00000000 00000000 00000134 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 000004c4 00000000 00000000 00000398 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 19 c0 rjmp .+50 ; 0x34
2: 42 c0 rjmp .+132 ; 0x88
4: 31 c0 rjmp .+98 ; 0x68
6: 30 c0 rjmp .+96 ; 0x68
8: 2f c0 rjmp .+94 ; 0x68
a: 2e c0 rjmp .+92 ; 0x68
c: 2d c0 rjmp .+90 ; 0x68
e: 2c c0 rjmp .+88 ; 0x68
10: 2b c0 rjmp .+86 ; 0x68
12: 2a c0 rjmp .+84 ; 0x68
14: 29 c0 rjmp .+82 ; 0x68
16: 28 c0 rjmp .+80 ; 0x68
18: 27 c0 rjmp .+78 ; 0x68
1a: 26 c0 rjmp .+76 ; 0x68
1c: 25 c0 rjmp .+74 ; 0x68
1e: 24 c0 rjmp .+72 ; 0x68
20: 23 c0 rjmp .+70 ; 0x68
22: 22 c0 rjmp .+68 ; 0x68
24: 21 c0 rjmp .+66 ; 0x68
26: 20 c0 rjmp .+64 ; 0x68
28: 1f c0 rjmp .+62 ; 0x68
2a: 1e c0 rjmp .+60 ; 0x68
2c: 1d c0 rjmp .+58 ; 0x68
2e: 1c c0 rjmp .+56 ; 0x68
30: 1b c0 rjmp .+54 ; 0x68
32: 1a c0 rjmp .+52 ; 0x68
00000034 <__ctors_end>:
34: 11 24 eor r1, r1
36: 1f be out 0x3f, r1 ; 63
38: cf ef ldi r28, 0xFF ; 255
3a: d2 e0 ldi r29, 0x02 ; 2
3c: de bf out 0x3e, r29 ; 62
3e: cd bf out 0x3d, r28 ; 61
00000040 <__do_copy_data>:
40: 11 e0 ldi r17, 0x01 ; 1
42: a0 e0 ldi r26, 0x00 ; 0
44: b1 e0 ldi r27, 0x01 ; 1
46: ee e9 ldi r30, 0x9E ; 158
48: f0 e0 ldi r31, 0x00 ; 0
4a: 02 c0 rjmp .+4 ; 0x50
0000004c <.do_copy_data_loop>:
4c: 05 90 lpm r0, Z+
4e: 0d 92 st X+, r0
00000050 <.do_copy_data_start>:
50: a0 30 cpi r26, 0x00 ; 0
52: b1 07 cpc r27, r17
54: d9 f7 brne .-10 ; 0x4c
00000056 <__do_clear_bss>:
56: 11 e0 ldi r17, 0x01 ; 1
58: a0 e0 ldi r26, 0x00 ; 0
5a: b1 e0 ldi r27, 0x01 ; 1
5c: 01 c0 rjmp .+2 ; 0x60
0000005e <.do_clear_bss_loop>:
5e: 1d 92 st X+, r1
00000060 <.do_clear_bss_start>:
60: a0 30 cpi r26, 0x00 ; 0
62: b1 07 cpc r27, r17
64: e1 f7 brne .-8 ; 0x5e
66: 01 c0 rjmp .+2 ; 0x6a
00000068 <__bad_interrupt>:
68: cb cf rjmp .-106 ; 0x0
0000006a <main>:
#include <AVR/signal.h>
#include <AVR/interrupt.h>
int
main(void)
{
6a: cf ef ldi r28, 0xFF ; 255
6c: d2 e0 ldi r29, 0x02 ; 2
6e: de bf out 0x3e, r29 ; 62
70: cd bf out 0x3d, r28 ; 61
EIMSK &=0X00;
72: 8d b3 in r24, 0x1d ; 29
74: 1d ba out 0x1d, r1 ; 29
EIFR |=0X03;
76: 8c b3 in r24, 0x1c ; 28
78: 83 60 ori r24, 0x03 ; 3
7a: 8c bb out 0x1c, r24 ; 28
sei();
7c: 78 94 sei
sei();
7e: 78 94 sei
sei();
80: 78 94 sei
return 0;
}
82: 80 e0 ldi r24, 0x00 ; 0
84: 90 e0 ldi r25, 0x00 ; 0
86: 0a c0 rjmp .+20 ; 0x9c
00000088 <__vector_1>:
SIGNAL(SIG_INTERRUPT0)
{
88: 1f 92 push r1
8a: 0f 92 push r0
8c: 0f b6 in r0, 0x3f ; 63
8e: 0f 92 push r0
90: 11 24 eor r1, r1
92: 0f 90 pop r0
94: 0f be out 0x3f, r0 ; 63
96: 0f 90 pop r0
98: 1f 90 pop r1
9a: 18 95 reti
0000009c <_exit>:
9c: ff cf rjmp .-2 ; 0x9c
我怀疑STUDIO问题.换机试还是这样呵....
答 4: 我基本不用GCC的,试一下最新的测试版AVRSTUDIO4.10 beta2 我基本不用GCC的,试一下最新的测试版AVRSTUDIO4.10 beta2,但ICC和IAR生成的文件在AVRSTUDIO4.09中调试是没有问题的,我看了你生成的LST,怎么有两个地方进行堆栈初始化。
http://www.atmel.no/beta_ware/as4/b353/AVRStudio4Setup.exe
一个很简单的C文件,只要一开中断,用Studio软仿真时总有莫名其妙的跑到外中断0,或复位。查LST文件正常。是我系统问题吗?请大侠相助。谢谢!
main.c source code:
#include <AVR/io.h>
#include <AVR/signal.h>
#include <AVR/interrupt.h>
#include <AVR/wdt.h>
int
main(void)
{
cli();
//EIMSK &=0X00;
//EIFR |=0X03;
while(1)
{
sei();
wdt_reset();
sei();
sei();
sei();
}
return 0;
}
SIGNAL(SIG_INTERRUPT0)
{
}
答 1: 以前用的MEGA8,MEGA16,没有着样呀..是STUDIO版本低吗? 答 2: 应该和AVRSTUDIO无关,在AVRSTUDIO中看一下堆栈初始化对不对。应该和AVRSTUDIO无关,在AVRSTUDIO中看一下堆栈初始化对不对。 答 3: 谢谢AVR! 堆栈初始化看来是对的.LST文件如下:
main.elf: file format elf32-AVR
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000000 00800100 0000009e 00000132 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 0000009e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 00000000 00800100 0000009e 00000132 2**0
ALLOC
3 .noinit 00000000 00800100 00800100 00000132 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000132 2**0
CONTENTS
5 .stab 00000264 00000000 00000000 00000134 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 000004c4 00000000 00000000 00000398 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 19 c0 rjmp .+50 ; 0x34
2: 42 c0 rjmp .+132 ; 0x88
4: 31 c0 rjmp .+98 ; 0x68
6: 30 c0 rjmp .+96 ; 0x68
8: 2f c0 rjmp .+94 ; 0x68
a: 2e c0 rjmp .+92 ; 0x68
c: 2d c0 rjmp .+90 ; 0x68
e: 2c c0 rjmp .+88 ; 0x68
10: 2b c0 rjmp .+86 ; 0x68
12: 2a c0 rjmp .+84 ; 0x68
14: 29 c0 rjmp .+82 ; 0x68
16: 28 c0 rjmp .+80 ; 0x68
18: 27 c0 rjmp .+78 ; 0x68
1a: 26 c0 rjmp .+76 ; 0x68
1c: 25 c0 rjmp .+74 ; 0x68
1e: 24 c0 rjmp .+72 ; 0x68
20: 23 c0 rjmp .+70 ; 0x68
22: 22 c0 rjmp .+68 ; 0x68
24: 21 c0 rjmp .+66 ; 0x68
26: 20 c0 rjmp .+64 ; 0x68
28: 1f c0 rjmp .+62 ; 0x68
2a: 1e c0 rjmp .+60 ; 0x68
2c: 1d c0 rjmp .+58 ; 0x68
2e: 1c c0 rjmp .+56 ; 0x68
30: 1b c0 rjmp .+54 ; 0x68
32: 1a c0 rjmp .+52 ; 0x68
00000034 <__ctors_end>:
34: 11 24 eor r1, r1
36: 1f be out 0x3f, r1 ; 63
38: cf ef ldi r28, 0xFF ; 255
3a: d2 e0 ldi r29, 0x02 ; 2
3c: de bf out 0x3e, r29 ; 62
3e: cd bf out 0x3d, r28 ; 61
00000040 <__do_copy_data>:
40: 11 e0 ldi r17, 0x01 ; 1
42: a0 e0 ldi r26, 0x00 ; 0
44: b1 e0 ldi r27, 0x01 ; 1
46: ee e9 ldi r30, 0x9E ; 158
48: f0 e0 ldi r31, 0x00 ; 0
4a: 02 c0 rjmp .+4 ; 0x50
0000004c <.do_copy_data_loop>:
4c: 05 90 lpm r0, Z+
4e: 0d 92 st X+, r0
00000050 <.do_copy_data_start>:
50: a0 30 cpi r26, 0x00 ; 0
52: b1 07 cpc r27, r17
54: d9 f7 brne .-10 ; 0x4c
00000056 <__do_clear_bss>:
56: 11 e0 ldi r17, 0x01 ; 1
58: a0 e0 ldi r26, 0x00 ; 0
5a: b1 e0 ldi r27, 0x01 ; 1
5c: 01 c0 rjmp .+2 ; 0x60
0000005e <.do_clear_bss_loop>:
5e: 1d 92 st X+, r1
00000060 <.do_clear_bss_start>:
60: a0 30 cpi r26, 0x00 ; 0
62: b1 07 cpc r27, r17
64: e1 f7 brne .-8 ; 0x5e
66: 01 c0 rjmp .+2 ; 0x6a
00000068 <__bad_interrupt>:
68: cb cf rjmp .-106 ; 0x0
0000006a <main>:
#include <AVR/signal.h>
#include <AVR/interrupt.h>
int
main(void)
{
6a: cf ef ldi r28, 0xFF ; 255
6c: d2 e0 ldi r29, 0x02 ; 2
6e: de bf out 0x3e, r29 ; 62
70: cd bf out 0x3d, r28 ; 61
EIMSK &=0X00;
72: 8d b3 in r24, 0x1d ; 29
74: 1d ba out 0x1d, r1 ; 29
EIFR |=0X03;
76: 8c b3 in r24, 0x1c ; 28
78: 83 60 ori r24, 0x03 ; 3
7a: 8c bb out 0x1c, r24 ; 28
sei();
7c: 78 94 sei
sei();
7e: 78 94 sei
sei();
80: 78 94 sei
return 0;
}
82: 80 e0 ldi r24, 0x00 ; 0
84: 90 e0 ldi r25, 0x00 ; 0
86: 0a c0 rjmp .+20 ; 0x9c
00000088 <__vector_1>:
SIGNAL(SIG_INTERRUPT0)
{
88: 1f 92 push r1
8a: 0f 92 push r0
8c: 0f b6 in r0, 0x3f ; 63
8e: 0f 92 push r0
90: 11 24 eor r1, r1
92: 0f 90 pop r0
94: 0f be out 0x3f, r0 ; 63
96: 0f 90 pop r0
98: 1f 90 pop r1
9a: 18 95 reti
0000009c <_exit>:
9c: ff cf rjmp .-2 ; 0x9c
我怀疑STUDIO问题.换机试还是这样呵....
答 4: 我基本不用GCC的,试一下最新的测试版AVRSTUDIO4.10 beta2 我基本不用GCC的,试一下最新的测试版AVRSTUDIO4.10 beta2,但ICC和IAR生成的文件在AVRSTUDIO4.09中调试是没有问题的,我看了你生成的LST,怎么有两个地方进行堆栈初始化。
http://www.atmel.no/beta_ware/as4/b353/AVRStudio4Setup.exe
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |