AVR a C premenna definovana v bloku

Zuffa Jan ZuffaJ na cgc.sk
Pátek Únor 13 13:31:25 CET 2015


Alebo zavolat ten while vo funkcii

j.

From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Hynek Sladky
Sent: Friday, February 13, 2015 1:29 PM
To: HW-news
Subject: Re: AVR a C premenna definovana v bloku

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/f0a7b827/attachment-0001.html>


Další informace o konferenci Hw-list