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.