WinAVR

Apr 05, 2004 23 Replies
úÄÒÁ×ÓÔ×ÕÊ, Harry!

Monday April 12 2004 09:13, you (2:5020/400) wrote to me:

AG>> ÷ gcc libc ÅÓÔØ ÔÏÖÅ: AG>> delay (uint8_t mS); // × ÍÉÌÌÉÓÅËÕÎÄÁÈ

HZ> ï! á ËÁË ÜÔÏ ÏÎÏ Ë ÍÉÌÌÉÓÅËÕÎÄÁÍ ÐÒÉ×ÑÚÙ×ÁÅÔÓÑ? ïÔËÕÄÁ ËÏÍÐÉÌÑÔÏÒ HZ> ÚÎÁÅÔ ÓËÏÌØËÏ ÔÁËÔÏ× ÍÉÌÌÉÓÅËÕÎÄÁ?

õ×Ù ÍÎÅ! ñ ÎÅÓËÏÌØËÏ ÐpÏÇÎÁÌ. ÷ ÚÁÇÏÌÏ×ÏÞÎÙÈ ÆÁÊÌÁÈ ÅÓÔØ ÔÏÌØËÏ Ä×Á ÍÁËpÏÓÁ, ËÏÔÏpÙÅ ÐpÉ×ÅÌ Alex Mogilnikov. á ÔÏ, ËÏÔÏpÙÊ × ÍÉÌÌÉÓÅËÕÎÄÁÈ, ÎÉÖÅ. ó ÐpÏÐÏÚÁÌÁÍÉ ÎÁÓÞÅÔ ÐpÅÏÄÏÌÅÎÉÑ ÔpÁÂÌÏ×. äÕÍÁÀ, ÞÔÏ ÏÆÏpÍÉÔØ ÓÉÅ ÁËÉ ÍÁËpÏÓ ÎÅ ÓÌÏÖÎÏ. ëÕÓÏÞÅË ÉÚ ÍÁÎÁ:

Macro definitions will include the same assembler code whenever they are referenced. This may not be acceptable for larger routines. In this case you may define a C stub function, containing nothing other than your assembler code.

void delay(uint8_t ms) { uint16_t cnt; asm volatile ( "\n" "L_dl1%=:" "\n\t" "mov %A0, %A2" "\n\t" "mov %B0, %B2" "\n" "L_dl2%=:" "\n\t" "sbiw %A0, 1" "\n\t" "brne L_dl2%=" "\n\t" "dec %1" "\n\t" "brne L_dl1%=" "\n\t" : "=&w" (cnt) : "r" (ms), "r" (delay_count) ); }

The purpose of this function is to delay the program execution by a specified number of milliseconds using a counting loop. The global 16 bit variable delay count must contain the CPU clock frequency in Hertz divided by 4000 and must have been set before calling this routine for the first time. As described in the clobber section, the routine uses a local variable to hold a temporary value.

Alex

úÄÒÁ×ÓÔ×ÕÊ, Alexander!

Sunday April 11 2004 21:26, you (2:5020/400) wrote to me:

AG>> ÷ gcc libc ÅÓÔØ ÔÏÖÅ: AG>> delay (uint8_t mS); // × ÍÉÌÌÉÓÅËÕÎÄÁÈ

AD> ðÏÄÏÂÎÙÅ ÆÕÎËÃÉÉ _ÏÂÙÞÎÏ_ ÏÂÅÓÐÅÞÉ×ÁÀÔ ÚÁÄÅÒÖËÕ Ó ÔÏÞÎÏÓÔØÀ ÄÏ AD> Ë×ÁÎÔÁ ÐÌÁÎÉÒÏ×ÝÉËÁ (ÄÅÓÑÔËÉ ÍÓ).

ë Ó×ÅÄÅÎÀÉ ÐpÉÍÕ, ÎÏ ÐpÉ ÞÅÍ ÐÌÁÎÉpÏ×ÝÉË-ÔÏ? ï pÔÏÓ pÅÞÉ ÎÅ ÂÙÌÏ. =) ñ ÎÉËÏÇÄÁ ÎÅ ÉÓÐÏÌØÚÏ×ÁÌ ÚÁÄÅpÖËÕ ÉÚ ÓÔÁÎÄÁpÔÎÏÊ ÐÏÓÔÁ×ËÉ.

Alex

úÄÒÁ×ÓÔ×ÕÊ, Alexander!

Tuesday April 13 2004 22:41, you (2:5020/400) wrote to me:

AD> ÔÁËÔÏ×ÏÊ ÄÌÑ ×ÙÞÉÓÌÅÎÉÊ (ÄÏËÉ ÎÁ ÒÁÂÏÔÅ :-(( ). á × libc AD> ÓÏÍÎÉÔÅÌØÎÏ...

óÍÅÀ Õ×ÅpÉÔØ, ÞÔÏ × ÔÁËÔÁÈ...

HÅÌÏÇÉÞÎÙÍ ÂÙÌÏ ÂÙ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÔÁÊÍÅpÁ × ÓÔÁÎÄÁpÔÎÏÊ LIBC. ôÁÊÍÅp - ÓÅÊ pÅÓÕpÓ ÎÅ Ñ×ÌÑÅÔÓÑ ÉÚÂÙÔÏÞÎÙÍ, ÞÔÏÂÙ ÅÇÏ ÚÁÐÏÄÌÑÎÓËÉ ÜËÓÐpÏÐpÉÉpÏ×ÁÔØ Õ ÄÅ×ÅÌÏÐÅpÁ, ÔÅÍ ÂÏÌÅÅ ÄÌÑ Æ-ÃÉÉ ÔÉÐÁ delay() ÉÍÅÀÝÅÊ ÍÉÚÅpÎÕÀ ÓÔÏÉÍÏÓÔØ pÅÁÌÉÚÁÃÉÉ ÓÁÍÏÓÔÏÑÔÅÌØÎÏ.

Alex

Hello, Alex! You wrote to Alexander Derazhne on Thu, 15 Apr 2004 00:31:46 +0400:

AD>> ÔÁËÔÏ×ÏÊ ÄÌÑ ×ÙÞÉÓÌÅÎÉÊ (ÄÏËÉ ÎÁ ÒÁÂÏÔÅ :-(( ). á × libc AD>> ÓÏÍÎÉÔÅÌØÎÏ...

AG> óÍÅÀ Õ×ÅpÉÔØ, ÞÔÏ × ÔÁËÔÁÈ...

ðÒÉģÔÓÑ ÐÏ×ÅÒÉÔØ, ÉÂÏ ÎÅÔÕ Õ ÍÅÎÑ ÄÏËÉ ÎÁ ÜÔÕ ÒÅÁÌÉÚÁÃÉÀ libc.

AG> HÅÌÏÇÉÞÎÙÍ ÂÙÌÏ ÂÙ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÔÁÊÍÅpÁ × ÓÔÁÎÄÁpÔÎÏÊ LIBC. AG> ôÁÊÍÅp - ÓÅÊ pÅÓÕpÓ ÎÅ Ñ×ÌÑÅÔÓÑ ÉÚÂÙÔÏÞÎÙÍ, ÞÔÏÂÙ ÅÇÏ ÚÁÐÏÄÌÑÎÓËÉ AG> ÜËÓÐpÏÐpÉÉpÏ×ÁÔØ Õ ÄÅ×ÅÌÏÐÅpÁ, ÔÅÍ ÂÏÌÅÅ ÄÌÑ Æ-ÃÉÉ ÔÉÐÁ delay() AG> ÉÍÅÀÝÅÊ ÍÉÚÅpÎÕÀ ÓÔÏÉÍÏÓÔØ pÅÁÌÉÚÁÃÉÉ ÓÁÍÏÓÔÏÑÔÅÌØÎÏ.

÷ÏÏÂÝÅ-ÔÏ ÂÉÂÌÉÏÔÅËÁ ÍÎÏÇÏ ÞÅÇÏ ÏÔÂÉÒÁÅÔ. íÏÖÅÔ (ÔÏÞÎÅÅ, "ÍÏÇÌÏ" - ÍÙ ×ÅÄØ ÄÏÇÏ×ÏÒÉÌÉÓØ, ÞÔÏ ÔÙ ÐÒÁ×) ÂÙÔØ É ÔÁË, ÞÔÏ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÄÁÎÎÏÊ ÆÕÎËÃÉÉ ÎÕÖÎÏ ÐÏÄËÌÀÞÉÔØ Åݣ É ÉÎÉÃÉÁÌÉÚÁÃÉÀ ÔÁÊÍÅÒÁ É ÂÏÌØÛÅ ÉÍ ÎÅ ÐÏÌØÚÏ×ÁÔØÓÑ, ËÒÏÍÅ ËÁË ÞÅÒÅÚ ÂÉÂÌÉÏÔÅÞÎÙÅ-ÖÅ ÆÕÎËÃÉÉ. ÷ ÔÏÊ-ÖÅ VxWorks ÔÁËÏÅ ÓÐÌÏÛØ É ÒÑÄÏÍ. óÌÕÞÁÅÔÓÑ ÄÁÖÅ Ä×ÏÊÎÁÑ ÉÎÉÃÉÁÌÉÚÁÃÉÑ - ÓÎÁÞÁÌÁ ÎÕÖÎÏ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÐÏÄÓÉÓÔÅÍÕ "×ÏÏÂÝÅ", Á ÐÏÔÏÍ ÏÔÄÅÌØÎÏ ÉÚ ËÏÎÔÅËÓÔÁ ËÁÖÄÏÊ ÚÁÄÁÞÉ, ËÏÔÏÒÁÑ ÂÕÄÅÔ ÜÔÉÍ ÐÏÌØÚÏ×ÁÔØÓÑ. îÁ ÜÔÉ ÇÒÁÂÌÉ Ñ ÎÁÓÔÕÐÉÌ Ó RPC (ÚÁÂÙÌ Ï ×ÔÏÒÏÊ ÉÎÉÃÉÁÌÉÚÁÃÉÉ) , ÐÏÔÏÍ ÎÅÄÅÌÀ ÇÌÀË ÉÓËÁÌ. ÷ òáæïó (RT-11) ÂÙÌÉ "ÍÎÏÇÏÚÁÄÁÞÎÙÅ ÍÏÎÉÔÏÒÙ", ÓÉÒÅÞØ, ÍÎÏÇÏÚÁÄÁÞÎÙÅ ÑÄÒÁ ïó. ôÏÌØËÏ ÎÅ ÚÁÒÁÂÏÔÁÌÉ ÏÎÉ Õ ÎÁÓ ÎÁ ü-60, ÐÏËÁ ËÔÏ-ÔÏ ÓÌÕÞÁÊÎÏ ÐÌÅÞÏÍ ËÌÁ×ÉÛÕ ×ËÌÀÞÅÎÉÑ ÁÐÐÁÒÁÔÎÏÇÏ ÓÅÔÅ×ÏÇÏ ÔÁÊÍÅÒÁ ÎÅ ÚÁÄÅÌ :-)))))). ôÁË-ÞÔÏ ÓÌÕÞÁÉ ÒÁÚÎÙÅ ÂÙ×ÁÀÔ. þÅÍ ÄÁÌØÛÅ, ÔÅÍ ÂÏÌØÛÅ Ñ ÕÂÅÖÄÁÀÓØ, ÞÔÏ ÄÏÄÕÍÙ×ÁÔØ ÞÔÏ-ÔÏ ÚÁ ÄÒÕÇÉÈ ÒÁÚÒÁÂÏÔÞÉËÏ× "ÉÚ ÓÏÏÂÒÁÖÅÎÉÊ ÒÁÚÕÍÎÏÓÔÉ" ÎÅ ÓÔÏÉÔ. åÓÌÉ ÞÔÏ-ÔÏ ÎÅ ÏÇÏ×ÏÒÅÎÏ Ñ×ÎÏ, ÔÏ ×ÏÚÍÏÖÎÏ ×ӣ. :-|

Alexander,Derazhne@adic,kiev,ua (replace commas with dots) Alexander Derazhne

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required