Nefunkční while loop – příklad použití volatile

Zdravim, dosli mi sily a tak bych se opet rad poradil, nefunguje mi while po stisknuti tlacitka a vyvolani interuptu, kod :

[code]
typedef enum {false,true}boolean;

boolean zmacknuto_gen = false;

ISR ( INT4_vect )
{
if (zmacknuto_gen){
zmacknuto_gen = false;
PORTE &= ~(_BV(7)); //vynuluje, zhasne cervenou LED na PE7
lcd_clrscr();
menu_start();

			}			
			else{					
			  zmacknuto_gen = true;
			  PORTE |= _BV(7);			//nastavi, rozne LED	
			  lcd_clrscr();
			  lcd_gotoxy(1,1);		
			  lcd_puts("PROBIHA GENEROVANI");
			}

}[/code]

v debugeru vsechno slape az na to, ze se to zacykli v tomto whilu bez ohledu na stav zmacknuto_gen, stejne tak kdyz to naprogramuji do MCU :


int main(void)
{
  int i = 0;
  while(1){

    while (zmacknuto_gen){
	  PORTE |= _BV(7);		//rozne
    	for(i=1;i<200;i++)
	    _delay_ms(10);
			
	  PORTE &= ~(_BV(7));		//zhasne
	    for(i=1;i<200;i++)
	    _delay_ms(10);	
    }
  }
  return (1);
}

:arrow_right: administrator: přejmenováno z "nefunkcni while!"

:arrow_right: administrator: přesunuto z "Ostatní"

Proměnná zmacknuto_gen musí být volatile.

pomohlo, moc dekuji