|
Мой первый блин), Перехожу на Си |
|
|
|
Oct 6 2009, 13:08
|
Частый гость
 
Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645

|
CODE #include <avr/io.h> #include <avr/interrupt.h> #include <avr/wdt.h> volatile int i = 0; int main() { PORTE = 0x01; DDRE = 0x7F;
wdt_disable();
TCNT0 = 0x00; TCCR0A = 0; TCCR0B = 3; TIFR0 = 0; TIMSK0 = 0x01; sei(); //cli(); while (1) {
if (PORTK == 255) PORTK = 0; else PORTK++;
} }
ISR(TIMER0_OVF_vect) { //TCNT0 = 0x00;
if(i++ == 0xFF55) { PORTE ^= 0x01; i = 0; } } Суть проблемы - прерывание срабатывает, но на ноге порта Е никаких изменений, а если убрать условие (if) то все норм. Чиво не так сделал? Заранее спасибо.
Причина редактирования: Нарушение правил цитирования исходников.
|
|
|
|
|
 |
Ответов
|
Oct 6 2009, 14:02
|
Частый гость
 
Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645

|
Вот дизасм - CODE +00000072: 2411 CLR R1 Clear Register +00000073: BE1F OUT 0x3F,R1 Out to I/O location +00000074: EFCF SER R28 Set Register +00000075: E2D1 LDI R29,0x21 Load immediate +00000076: BFDE OUT 0x3E,R29 Out to I/O location +00000077: BFCD OUT 0x3D,R28 Out to I/O location +00000078: E012 LDI R17,0x02 Load immediate +00000079: E0A0 LDI R26,0x00 Load immediate +0000007A: E0B2 LDI R27,0x02 Load immediate +0000007B: C001 RJMP PC+0x0002 Relative jump +0000007C: 921D ST X+,R1 Store indirect and postincrement +0000007D: 30A2 CPI R26,0x02 Compare with immediate +0000007E: 07B1 CPC R27,R17 Compare with carry +0000007F: F7E1 BRNE PC-0x03 Branch if not equal +00000080: 940E0086 CALL 0x00000086 Call subroutine +00000082: 940C0103 JMP 0x00000103 Jump +00000084: 940C0000 JMP 0x00000000 Jump +00000086: 93DF PUSH R29 Push register on stack +00000087: 93CF PUSH R28 Push register on stack +00000088: B7CD IN R28,0x3D In from I/O location +00000089: B7DE IN R29,0x3E In from I/O location +0000008A: E2EE LDI R30,0x2E Load immediate +0000008B: E0F0 LDI R31,0x00 Load immediate +0000008C: E081 LDI R24,0x01 Load immediate +0000008D: 8380 STD Z+0,R24 Store indirect with displacement +0000008E: E2ED LDI R30,0x2D Load immediate +0000008F: E0F0 LDI R31,0x00 Load immediate +00000090: E78F LDI R24,0x7F Load immediate +00000091: 8380 STD Z+0,R24 Store indirect with displacement +00000092: E188 LDI R24,0x18 Load immediate +00000093: B60F IN R0,0x3F In from I/O location +00000094: 94F8 CLI Global Interrupt Disable +00000095: 93800060 STS 0x0060,R24 Store direct to data space +00000097: 92100060 STS 0x0060,R1 Store direct to data space +00000099: BE0F OUT 0x3F,R0 Out to I/O location +0000009A: E4E6 LDI R30,0x46 Load immediate +0000009B: E0F0 LDI R31,0x00 Load immediate +0000009C: 8210 STD Z+0,R1 Store indirect with displacement +0000009D: E4E4 LDI R30,0x44 Load immediate +0000009E: E0F0 LDI R31,0x00 Load immediate +0000009F: 8210 STD Z+0,R1 Store indirect with displacement +000000A0: E4E5 LDI R30,0x45 Load immediate +000000A1: E0F0 LDI R31,0x00 Load immediate +000000A2: E085 LDI R24,0x05 Load immediate +000000A3: 8380 STD Z+0,R24 Store indirect with displacement +000000A4: E3E5 LDI R30,0x35 Load immediate +000000A5: E0F0 LDI R31,0x00 Load immediate +000000A6: 8210 STD Z+0,R1 Store indirect with displacement +000000A7: E6EE LDI R30,0x6E Load immediate +000000A8: E0F0 LDI R31,0x00 Load immediate +000000A9: E081 LDI R24,0x01 Load immediate +000000AA: 8380 STD Z+0,R24 Store indirect with displacement +000000AB: 9478 SEI Global Interrupt Enable +000000AC: E0E8 LDI R30,0x08 Load immediate +000000AD: E0F1 LDI R31,0x01 Load immediate +000000AE: 8180 LDD R24,Z+0 Load indirect with displacement +000000AF: 3F8F CPI R24,0xFF Compare with immediate +000000B0: F421 BRNE PC+0x05 Branch if not equal +000000B1: E0E8 LDI R30,0x08 Load immediate +000000B2: E0F1 LDI R31,0x01 Load immediate +000000B3: 8210 STD Z+0,R1 Store indirect with displacement +000000B4: CFF7 RJMP PC-0x0008 Relative jump +000000B5: E0E8 LDI R30,0x08 Load immediate +000000B6: E0F1 LDI R31,0x01 Load immediate +000000B7: 8180 LDD R24,Z+0 Load indirect with displacement +000000B8: 5F8F SUBI R24,0xFF Subtract immediate +000000B9: 8380 STD Z+0,R24 Store indirect with displacement +000000BA: CFF1 RJMP PC-0x000E Relative jump +000000BB: 921F PUSH R1 Push register on stack +000000BC: 920F PUSH R0 Push register on stack +000000BD: B60F IN R0,0x3F In from I/O location +000000BE: 920F PUSH R0 Push register on stack +000000BF: 2411 CLR R1 Clear Register +000000C0: 932F PUSH R18 Push register on stack +000000C1: 938F PUSH R24 Push register on stack +000000C2: 939F PUSH R25 Push register on stack +000000C3: 93AF PUSH R26 Push register on stack +000000C4: 93BF PUSH R27 Push register on stack +000000C5: 93EF PUSH R30 Push register on stack +000000C6: 93FF PUSH R31 Push register on stack +000000C7: 93DF PUSH R29 Push register on stack +000000C8: 93CF PUSH R28 Push register on stack +000000C9: D000 RCALL PC+0x0001 Relative call subroutine +000000CA: 920F PUSH R0 Push register on stack +000000CB: B7CD IN R28,0x3D In from I/O location +000000CC: B7DE IN R29,0x3E In from I/O location +000000CD: 91800200 LDS R24,0x0200 Load direct from data space +000000CF: 91900201 LDS R25,0x0201 Load direct from data space +000000D1: 839B STD Y+3,R25 Store indirect with displacement +000000D2: 838A STD Y+2,R24 Store indirect with displacement +000000D3: 8219 STD Y+1,R1 Store indirect with displacement +000000D4: 818A LDD R24,Y+2 Load indirect with displacement +000000D5: 819B LDD R25,Y+3 Load indirect with displacement +000000D6: EF2F SER R18 Set Register +000000D7: 3F80 CPI R24,0xF0 Compare with immediate +000000D8: 0792 CPC R25,R18 Compare with carry +000000D9: F411 BRNE PC+0x03 Branch if not equal +000000DA: E081 LDI R24,0x01 Load immediate +000000DB: 8389 STD Y+1,R24 Store indirect with displacement +000000DC: 818A LDD R24,Y+2 Load indirect with displacement +000000DD: 819B LDD R25,Y+3 Load indirect with displacement +000000DE: 9601 ADIW R24,0x01 Add immediate to word +000000DF: 93900201 STS 0x0201,R25 Store direct to data space +000000E1: 93800200 STS 0x0200,R24 Store direct to data space +000000E3: 8199 LDD R25,Y+1 Load indirect with displacement +000000E4: 2399 TST R25 Test for Zero or Minus +000000E5: F061 BREQ PC+0x0D Branch if equal +000000E6: E2AE LDI R26,0x2E Load immediate +000000E7: E0B0 LDI R27,0x00 Load immediate +000000E8: E2EE LDI R30,0x2E Load immediate +000000E9: E0F0 LDI R31,0x00 Load immediate +000000EA: 8190 LDD R25,Z+0 Load indirect with displacement +000000EB: E081 LDI R24,0x01 Load immediate +000000EC: 2789 EOR R24,R25 Exclusive OR +000000ED: 938C ST X,R24 Store indirect +000000EE: 92100201 STS 0x0201,R1 Store direct to data space +000000F0: 92100200 STS 0x0200,R1 Store direct to data space +000000F2: 900F POP R0 Pop register from stack +000000F3: 900F POP R0 Pop register from stack +000000F4: 900F POP R0 Pop register from stack +000000F5: 91CF POP R28 Pop register from stack +000000F6: 91DF POP R29 Pop register from stack +000000F7: 91FF POP R31 Pop register from stack +000000F8: 91EF POP R30 Pop register from stack +000000F9: 91BF POP R27 Pop register from stack +000000FA: 91AF POP R26 Pop register from stack +000000FB: 919F POP R25 Pop register from stack +000000FC: 918F POP R24 Pop register from stack +000000FD: 912F POP R18 Pop register from stack +000000FE: 900F POP R0 Pop register from stack +000000FF: BE0F OUT 0x3F,R0 Out to I/O location +00000100: 900F POP R0 Pop register from stack +00000101: 901F POP R1 Pop register from stack +00000102: 9518 RETI Interrupt return +00000103: 94F8 CLI Global Interrupt Disable +00000104: CFFF RJMP PC-0x0000 Relative jump +00000105: 90FF POP R15 Pop register from stack +00000106: BE0F OUT 0x3F,R0 Out to I/O location +00000107: 900F POP R0 Pop register from stack +00000108: 901F POP R1 Pop register from stack +00000109: 9518 RETI Interrupt return +0000010A: 921F PUSH R1 Push register on stack +0000010B: 920F PUSH R0 Push register on stack +0000010C: B60F IN R0,0x3F In from I/O location +0000010D: 920F PUSH R0 Push register on stack +0000010E: 2411 CLR R1 Clear Register +0000010F: 932F PUSH R18 Push register on stack +00000110: 938F PUSH R24 Push register on stack +00000111: 939F PUSH R25 Push register on stack +00000112: 93AF PUSH R26 Push register on stack +00000113: 93BF PUSH R27 Push register on stack +00000114: 93EF PUSH R30 Push register on stack +00000115: 93FF PUSH R31 Push register on stack +00000116: 93DF PUSH R29 Push register on stack +00000117: 93CF PUSH R28 Push register on stack +00000118: D000 RCALL PC+0x0001 Relative call subroutine +00000119: 920F PUSH R0 Push register on stack +0000011A: B7CD IN R28,0x3D In from I/O location +0000011B: B7DE IN R29,0x3E In from I/O location +0000011C: 91800200 LDS R24,0x0200 Load direct from data space +0000011E: 91900201 LDS R25,0x0201 Load direct from data space +00000120: 839B STD Y+3,R25 Store indirect with displacement +00000121: 838A STD Y+2,R24 Store indirect with displacement +00000122: 8219 STD Y+1,R1 Store indirect with displacement +00000123: 818A LDD R24,Y+2 Load indirect with displacement +00000124: 819B LDD R25,Y+3 Load indirect with displacement +00000125: EF2F SER R18 Set Register +00000126: 3F80 CPI R24,0xF0 Compare with immediate +00000127: 0792 CPC R25,R18 Compare with carry +00000128: F411 BRNE PC+0x03 Branch if not equal +00000129: E081 LDI R24,0x01 Load immediate +0000012A: 8389 STD Y+1,R24 Store indirect with displacement +0000012B: 818A LDD R24,Y+2 Load indirect with displacement +0000012C: 819B LDD R25,Y+3 Load indirect with displacement +0000012D: 9601 ADIW R24,0x01 Add immediate to word +0000012E: 93900201 STS 0x0201,R25 Store direct to data space +00000130: 93800200 STS 0x0200,R24 Store direct to data space +00000132: 8199 LDD R25,Y+1 Load indirect with displacement +00000133: 2399 TST R25 Test for Zero or Minus +00000134: F061 BREQ PC+0x0D Branch if equal +00000135: E2AE LDI R26,0x2E Load immediate +00000136: E0B0 LDI R27,0x00 Load immediate +00000137: E2EE LDI R30,0x2E Load immediate +00000138: E0F0 LDI R31,0x00 Load immediate +00000139: 8190 LDD R25,Z+0 Load indirect with displacement +0000013A: E081 LDI R24,0x01 Load immediate +0000013B: 2789 EOR R24,R25 Exclusive OR +0000013C: 938C ST X,R24 Store indirect +0000013D: 92100201 STS 0x0201,R1 Store direct to data space +0000013F: 92100000 STS 0x0000,R1 Store direct to data space +00000141: 900F POP R0 Pop register from stack +00000142: 900F POP R0 Pop register from stack +00000143: 900F POP R0 Pop register from stack +00000144: 91CF POP R28 Pop register from stack +00000145: 91DF POP R29 Pop register from stack +00000146: 91FF POP R31 Pop register from stack +00000147: 91EF POP R30 Pop register from stack +00000148: 91BF POP R27 Pop register from stack +00000149: 91AF POP R26 Pop register from stack +0000014A: 919F POP R25 Pop register from stack +0000014B: 918F POP R24 Pop register from stack +0000014C: 912F POP R18 Pop register from stack +0000014D: 900F POP R0 Pop register from stack +0000014E: BE0F OUT 0x3F,R0 Out to I/O location +0000014F: 900F POP R0 Pop register from stack +00000150: 901F POP R1 Pop register from stack +00000151: 9518 RETI Interrupt return +00000152: 94F8 CLI Global Interrupt Disable +00000153: CFFF RJMP PC-0x0000 Relative jump Может надо стек настроить? или еще что...
Причина редактирования: Нарушение правил цитирования исходников.
|
|
|
|
Сообщений в этой теме
novlev Мой первый блин) Oct 6 2009, 13:08 OLEG_BOS Цитата(novlev @ Oct 6 2009, 16:08) Чиво н... Oct 6 2009, 13:41 novlev static unsigned int i = 0; // i - и... Oct 6 2009, 13:53 Костян Цитата(novlev @ Oct 6 2009, 12:53) static... Oct 6 2009, 13:58 Ledmaster Смысл не в том, где объявлять i, а в том, что она ... Oct 6 2009, 14:04  OLEG_BOS Цитата(Ledmaster @ Oct 6 2009, 17:04) Смы... Oct 6 2009, 14:19 _Pasha Цитата(novlev @ Oct 6 2009, 16:08) Суть п... Oct 6 2009, 13:57 _Pasha нужен не дизасм, а *.lss Oct 6 2009, 14:07 novlev вот листинг, прикрепить файл не получилось.
CODEts... Oct 6 2009, 14:16 _Pasha Код18a: 80 91 00 02 lds r24, 0x0200
18e: ... Oct 6 2009, 14:24 novlev Кто такой этот "00000108 <__bad_interrupt... Oct 6 2009, 14:27 _Pasha Цитата(novlev @ Oct 6 2009, 17:27) Кто та... Oct 6 2009, 14:30 novlev Кодunsigned char i = 0x00;
ISR(TIMER0_OVF_vect... Oct 6 2009, 14:32 _Pasha Цитата(novlev @ Oct 6 2009, 17:32) и так ... Oct 6 2009, 14:37  novlev Цитата(_Pasha @ Oct 6 2009, 17:37) Объяви... Oct 6 2009, 14:48   OLEG_BOS Цитата(novlev @ Oct 6 2009, 17:48) Послед... Oct 6 2009, 15:16    novlev Цитата(OLEG_BOS @ Oct 6 2009, 18:16) ОFFT... Oct 6 2009, 17:48 Ledmaster А так?
Кодunsigned char i = 0x00;
ISR(TIMER0_O... Oct 6 2009, 14:43 INT1 Я конечно не спец по Си , но чегото бросилось в гл... Oct 6 2009, 18:31 novlev Цитата(INT1 @ Oct 6 2009, 21:31) Я конечн... Oct 6 2009, 18:46 INT1 Насколько помнится операции над портом (если мы го... Oct 6 2009, 19:08 novlev Цитата(INT1 @ Oct 6 2009, 22:08) наскольк... Oct 6 2009, 19:43 314 Попробовал Ваш пример на отладчике в AVR Studio, т... Oct 6 2009, 20:02 novlev Да, более того, статическая переменная действитель... Oct 6 2009, 20:55 singlskv Цитата(novlev @ Oct 6 2009, 17:08) CODE
... Oct 6 2009, 21:41 novlev Кодif (PORTK == 255)
PORTK = 0;
else
PORTK... Oct 6 2009, 21:46 dimka76 Цитата(novlev @ Oct 7 2009, 01:46) Предме... Oct 7 2009, 06:13 314 Как-то это все больше смахивает на какие-то внешни... Oct 7 2009, 05:49 novlev Цитата(314 @ Oct 7 2009, 08:49) И наверно... Oct 7 2009, 06:04 novlev Цитата(314 @ Oct 7 2009, 08:49) Вот Вам е... Oct 7 2009, 07:31 novlev Всем доброго времени суток, подскажите в чем подво... Oct 15 2009, 10:24 Палыч Цитата(novlev @ Oct 15 2009, 13:24) но в ... Oct 15 2009, 10:44 novlev Спасибо, пока оставлю так. Есть еще один вопрос, ч... Oct 15 2009, 11:04 Палыч Цитата(novlev @ Oct 15 2009, 14:04) что о... Oct 15 2009, 11:12  novlev Цитата(Палыч @ Oct 15 2009, 14:12) Выполн... Oct 15 2009, 11:24 novlev Снова я) Слолкнулся со следующей ситуацией - пишу ... Oct 16 2009, 12:11 novlev Для перезаписи программы, код обязательно располаг... Oct 19 2009, 07:01 novlev Подскажите пожалуйста, после записи программы с ад... Oct 19 2009, 11:28 novlev приветствую всех! Вопрос - как разместить по к... Dec 4 2009, 11:01 novlev Пробовал на асме, - указывал адрес один, а располо... Dec 4 2009, 12:09 mempfis_ Цитата(novlev @ Dec 4 2009, 15:01) привет... Dec 4 2009, 12:23 SasaVitebsk Так это - стандартно
uint8_t const __flash str_q[... Dec 4 2009, 12:38 novlev Это не совсем программное требование, простоя горо... Dec 4 2009, 12:41 novlev Понял, это наверное в IAR-е @0x2 такой синтаксис, ... Dec 4 2009, 14:20 SysRq http://www.nongnu.org/avr-libc/user-manual...#faq_... Dec 4 2009, 16:36 novlev Спасибо, я таким образом указывал адрес для кода п... Dec 11 2009, 12:31 SysRq Цитата(novlev @ Dec 11 2009, 15:31) А как... Dec 11 2009, 13:35 novlev Спасибо, получилось. В программе это выглядит след... Dec 11 2009, 13:41 SysRq Если:Цитата(novlev @ Dec 11 2009, 16:41) ... Dec 11 2009, 14:51 novlev А учитываются только 4 младших, в хексе больше и н... Dec 14 2009, 06:13 Сергей Борщ Цитата(novlev @ Dec 14 2009, 08:13) А учи... Dec 14 2009, 07:55 novlev Я просто пользовался описанием из pdf на контролле... Dec 14 2009, 11:49 Сергей Борщ Цитата(novlev @ Dec 14 2009, 13:49) Так а... Dec 14 2009, 13:08  novlev Цитата(Сергей Борщ @ Dec 14 2009, 16:08) ... Dec 14 2009, 13:46   Сергей Борщ Цитата(novlev @ Dec 14 2009, 15:46) А мож... Dec 14 2009, 13:58 novlev Столкнулся со следующей особенностью программы PON... Jan 11 2010, 13:23 uriy Хоть бы написали как это проявляется Jan 11 2010, 13:39 novlev Проявлялось забавно -
Это если вбить -Wl,--sectio... Jan 11 2010, 14:38
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|