Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[AtMega 8] [C/AVR Studio/PROTEUS] menu wyłancza się po ok 5s

03 Lis 2010 21:21 1229 2
  • Poziom 12  
    Mam taki problem usiłuję napisać jednopoziomowe menu w C . Niby działa ale jest ale po wejściu w menu zwiększanie działa i zmniejszanie też ale menu w symulatorze Proteus wyłancza się i przechodzi do normalnej części programu a w/g mnie powinien zostać w pętli pierwszej pozycji menu a wychodzi z niej . Kod wygląda tak:
    Code:

    void Menu(void)
    {
    uint8_t nr=1;
    while (nr!=0)
       {
       while (nr==1)
          {
          //LCD_Clear();
          LCD_GoTo(0,0); //x,y
          LCD_WriteText("1.WLANCZANIE POMPY.");


    // Zwiększanie wartości Tpompy

          if (!(KEYPIN&1<<KEYUP))
             {
             char c[2];
             //_delay_ms(100);
             if (!(KEYPIN&1<<KEYUP))
                {
                if (Tpompy<80)
                   {

                   Tpompy++;
                   LCD_GoTo(0,1);
                   utoa(Tpompy,c,10);
                   LCD_WriteText(c);
                   LCD_WriteData(0xDF);
                   LCD_WriteText('C');
                   }
                   else
                   {
                   Tpompy=0;
                   }
                }
             }
          
    // Zmniejszanie wartości Tpompy

          if (!(KEYPIN&1<<KEYDN))
             {
             _delay_ms(100);
             if (!(KEYPIN&1<<KEYDN))
                {
                if (Tpompy<80)
                   {
                   Tpompy++;
                   }
                   else
                   {
                   Tpompy=0;
                   }
                }
             }      

          }
       //_delay_ms(2000);
          
          if (!(KEYPIN&1<<MENU))
          {
    //   nr++; zaremowane co by nie poszedł dalej
    /*      }

       while (nr==2)
    //następna pozycja menu

    Nie wiem o co biega. Dodam że menu jest wywoływane z głównej pętli progtamu nie z przerwań.
  • Poziom 38  
    Parę dni temu nsvinc dał przepisz na menu poszukaj w jego postach
  • Poziom 12  
    masz na myśli Menu ja aż tak rozbudowanego menu nie potrzebuje . Potrzebujetak 1.Tpompy i pus oraz minus i np T went plus minus koniec więc moje powinno działać i działa tylko wychodzi samo z pętli a nie powinno "według mnie "

    Znalazłem błąd. miałem ustawione w programie
    Code:
    wdt_enable(WDTO_2S); //Włączenie Watchdog'a z czasem opóżnienia 2s

    a potem w pętli głównej programu
    Code:
    wdt_reset();

    natomiast nie resetował mi sie watchdog podczas gdy byłem w menu.

    Temat zamykam. Dzięki za pomoc.