AVR a C premenna definovana v bloku

Jan Smrz jan.smrz na email.cz
Pátek Únor 13 13:06:34 CET 2015


Promenna tmp_counter se vam inicializuje pri kazdem pruchodu while cyklu na 
2048. Aby vam to fungovalo, musi se inicializovat jen jednou a to pred vstupem 
to cyklu, tedy pred while.
Kompilator tmp_count ignoruje, protoze hodnota tmp_count v podmince vzdy 2047.


J.S.



On 02/13/2015 12:54 PM, Michal Lukac wrote:
> 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;
>             }
>         }
>    245:         if (bit_is_clear(ADCSRA,ADSC)) {
> 0000015E  SBIC 0x06,6        Skip if bit in I/O register cleared
> 0000015F  RJMP PC-0x0001        Relative jump
>    246:             tmp16 = ADCL;
> 00000160  IN R24,0x04        In from I/O location
>    247:             tmp16 |= ((uint16_t)ADCH << 8);
> 00000161  IN R24,0x05        In from I/O location
>    250:             AD_START;
> 00000162  SBI 0x06,6        Set bit in I/O register
> 00000163  RJMP PC-0x0005        Relative jump
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20150213/eb62f6cb/attachment.html>


Další informace o konferenci Hw-list