AVR a C premenna definovana v bloku

Hynek Sladky econf na centrum.cz
Pátek Únor 13 13:29:22 CET 2015


Ja bych to udelal takto:
{
   uint16_t tmp_counter = 2048;
   while (1) {
     // ...
   }
}

Hynek Sladky


Dne 13.2.2015 12:54, Michal Lukac napsal(a):
> Zdravim, mam takuto cast kodu:
> Tu premennu tmp_counter som chcel definovat vnutri toho bloku s tim ze 
> bude platna len v tom bloku a
> na zaciatku sa inicializuje, kvoli setreniu miesta v pamati. Lenze to 
> nefunguje prelozi sa to viz. nizsie, ako keby sa ta hodnota nemenila 
> cize to vsetko potom kompilator ignoruje
> Ked tu definiciu dam pred to while tak to funguje. chcel som len aby 
> zbytocne nezaberala miesto. Dalo by sa to aj s cyklom for v tomto 
> pripade, ale ma zaujima ked by tam malo byt while
> Da sa to nejak inak urobit?
> dik.
> michal
> uint32_t tmp32 = 0;
> uint16_t tmp16;
> while(1){
>         uint16_t tmp_counter = 2048;
>         if (bit_is_clear(ADCSRA,ADSC)) {
>             tmp16 = ADCL;
>             tmp16 |= ((uint16_t)ADCH << 8);
>             tmp32 += tmp16;
>             tmp_counter--;
>             AD_START;
>             if (tmp_counter == 0) {
>                 tmp32 >>= 5;
>                 offset_I = tmp32;
>                 utoa((unsigned int)tmp32,s_out,10);
>                 lcd_gotoxy(0,0);
>                 lcd_puts(s_out);
>                 _delay_ms(3000);
>                 lcd_clrscr();
>                 break;
>             }
>         }
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20150213/191e54cc/attachment.html>


Další informace o konferenci Hw-list