ATmega128 (IAR vs GCC)

Jan 13, 2004 1 Replies

Hi All!



ñ ÄÁÌÅË ÏÔ ÒÅÌÉÇÉÏÚÎÙÈ ÓÐÏÒÏ×, ÐÏÜÔÏÍÕ ÈÏÔÅÌÏÓØ ÂÙ ÕÓÌÙÛÁÔØ ÄÅÌØÎÙÊ ÓÏ×ÅÔ.
åÓÔØ ÇÏÔÏ×ÙÊ ÄÉ×ÁÊÓ, ÐÏÄ ËÏÔÏÒÙÊ ÎÁÐÉÓÁÎÁ ÐÒÏÇÒÁÍÍËÁ, ËÏÍÐÉÌÉÒÕÀÝÁÑÓÑ IAR C. ïÄÎÁËÏ, ÐÏ ÎÅËÏÔÏÒÙÍ ÐÒÉÞÉÎÁÍ (ÞÔÏ ÎÅ ×ÁÖÎÏ ÄÌÑ ÄÁÎÎÏÇÏ ×ÏÐÒÏÓÁ), ÎÕÖÎÏ ÅÅ ÐÅÒÅÂÉÌÄÉÔØ ÐÏÄ avrgcc. óÁÍÕ ÐÒÏÇÒÁÍÍËÕ Ñ ÄÏ×ÅÌ ÐÏÞÔÉ ÄÏ ÕÍÁ - ÏÎÁ ÓÏÂÉÒÁÅÔÓÑ, ÎÏ ÂÅÚ ÐÏÄÄËÒÖËÉ eeprom (ÞÔÏ ÐÏËÁ ÎÅ ÔÁË ×ÁÖÎÏ, ×ÍÅÓÔÏ ÎÅÇÏ ÓÅÊÞÁÓ ÉÓÐÏÌØÚÕÅÔÓÑ ram). HÏ ÐÒÉ ÚÁÌÉ×ËÅ É ÚÁÐÕÓËÅ ÐÒÏÇÉ, ÏÎÁ ÇÄÅ-ÔÏ ×ÅÛÁÅÔÓÑ, ÔÁË ËÁË, ×ÏÚÍÏÖÎÏ, ÎÅ ÐÏÌÕÞÁÅÔ ÏÔ×ÅÔÁ ÐÏ ÐÒÅÒÙ×ÁÎÉÀ ÏÔ UART.
ëÔÏ ÐÉÓÁÌ ÎÁ IAR É gcc ÐÏÓÏ×ÅÔÕÊÔÅ, ÐÌÉÚ, ÍÏÖÅÔ ÔÁÍ ÇÒÁÂÌÉ ËÁËÉÅ ÅÓÔØ Ó ÏÂÒÁÂÏÔËÏÊ ÐÒÅÒÙ×ÁÎÉÊ ÉÌÉ ÅÝÅ ÞÅÇÏ-ÔÏ?
ëÓÔÁÔÉ, ×ÏÔ ÚÁÍÅÔÉÌ ÅÝÅ ÏÔÌÉÞÉÑ × ÇÅÎÅÒÉÒÕÅÍÏÍ ËÏÄÅ. ÷ÏÔ, ÎÁÞÁÌÏ ÏÂÒÁÂÏÔÞÉËÁ ÐÒÅÒÙ×ÁÎÉÑ ÐÏ ÐÅÒÅÐÏÌÎÅÎÉÀ ÔÁÊÍÅÒÁ
×ÅÒÓÉÑ ÏÔ IAR


16 SIGNAL(SIG_OVERFLOW0) // 1.02 ms //2.04ms



17 { \ __nearfunc __interrupt void SIG_OVERFLOW0(); \ SIG_OVERFLOW0: \ 00000000 93FA ST -Y,R31 \ 00000002 93EA ST -Y,R30 \ 00000004 933A ST -Y,R19 \ 00000006 932A ST -Y,R18 \ 00000008 931A ST -Y,R17 \ 0000000A 930A ST -Y,R16 \ 0000000C B72F IN R18,0x3F \ 0000000E B73B IN R19,0x3B \ 00000010 E000 LDI R16,0 \ 00000012 BF0B OUT 0x3B,R16
18 TCNT0 = 0x00; \ 00000014 E000 LDI R16,0 \ 00000016 BF02 OUT 0x32,R16


×ÅÒÓÉÑ ÏÔ gcc



SIGNAL(SIG_OVERFLOW0) // 1.02 ms //2.04ms {



2e98: 1f 92 push r1
2e9a: 0f 92 push r0
2e9c: 0f b6 in r0, 0x3f ; 63
2e9e: 0f 92 push r0
2ea0: 11 24 eor r1, r1
2ea2: 8f 93 push r24
2ea4: 9f 93 push r25 TCNT0 = 0x00;
2ea6: 12 be out 0x32, r1 ; 50


þÔÏ ÚÁ in r19,0x3b × IAR'Ï×ÓËÏÍ ×ÁÒÉÁÎÔÅ? åÓÌÉ ÅÓÔØ × ÄÏËÁÈ, ÔÏ ÐÏÄÓËÁÖÉÔÅ ÓÅËÃÉÀ ËÁËÏÊ ÄÏËÉ ÞÉÔÁÔØ ÄÏ ÐÒÏÓ×ÅÔÌÅÎÉÑ. ôÁË ÖÅ ÐÒÉ×ÅÔÓÔ×ÕÀÔÓÑ ÓÓÙÌËÉ ÎÁ ÒÁÂÏÔÁÀÝÉÅ ÉÓÈÏÄÎÉËÉ ÐÏÄ gcc.


13-Jan-04 21:54 Andy Shevchenko wrote to All:

AS> сейчас используется ram). Hо при заливке и запуске проги, она где-то AS> вешается, так как, возможно, не получает ответа по прерыванию от UART. А как оно сделано? Обработчик выставляет какие-то флаги? А они объявлены volatile? Если нет - то gcc запросто закеширует флаг в регистре и будет проверять до посинения.

AS> \ 0000000E B73B IN R19,0x3B AS> \ 00000010 E000 LDI R16,0 AS> \ 00000012 BF0B OUT 0x3B,R16

AS> Что за in r19,0x3b в IAR'овском варианте? Если есть в доках, то подскажите AS> секцию какой доки читать до просветления.

Ищи в доках регистр RAMPZ.

wbr,

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required