Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Ламерски въпрос !
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=12631
Страница 1 от 1

Автор:  haliobabalio [ Сря Яну 22, 2014 12:28 pm ]
Заглавие:  Ламерски въпрос !

Искам да питам някой ако може да ми помогне .
Дава ми грешка MikroC (7 433 Not enough RAM for call stack __Lib_Delays.c)

Прикачени файлове:
MyProject1.c [2.79 KiB]
250 пъти

Автор:  Vesko [ Сря Яну 22, 2014 12:43 pm ]
Заглавие:  Re: Ламерски въпрос !

Надали е добра идея в ISR-a да викаш функции за писане по LSD. При PIC стацк ресусрса май беше ограничен.

Автор:  ike [ Сря Яну 22, 2014 12:53 pm ]
Заглавие:  Re: Ламерски въпрос !

Това е за друга платформа, но ще те насочи, как по принцип трябва да изглежда програмата ти: http://www.ti.com/lit/an/slaa294a/slaa294a.pdf

Автор:  haliobabalio [ Сря Яну 22, 2014 2:40 pm ]
Заглавие:  Re: Ламерски въпрос !

haliobabalio написа:
Искам да питам някой ако може да ми помогне .
Дава ми грешка MikroC (7 433 Not enough RAM for call stack __Lib_Delays.c)

Просто исках да си направя меню с ротари енкодер ако някой може да ми помогне

Автор:  Vesko [ Сря Яну 22, 2014 2:57 pm ]
Заглавие:  Re: Ламерски въпрос !

Например в ISR-a само записваш новата позиция за меню-то, без да го рисужаш. А в main накрая слагаш нещо подобно.

while(1)
{
if(new_position != last position)
{
last_postion = new_position);
draw_menu(last_posotion);
}
}

Автор:  haliobabalio [ Чет Фев 06, 2014 12:43 pm ]
Заглавие:  Re: Ламерски въпрос !

Vesko написа:
Например в ISR-a само записваш новата позиция за меню-то, без да го рисужаш. А в main накрая слагаш нещо подобно.

while(1)
{
if(new_position != last position)
{
last_postion = new_position);
draw_menu(last_posotion);
}
}


Значи мерси много на теб и колегата
преработих кода по прочетох малко а сега като избера примерно Меню 1 и ми мига сигурно от while(1)
как да го променя?
ето качвам новия код

Прикачени файлове:
ro2.c [2.24 KiB]
235 пъти

Автор:  michev [ Чет Фев 06, 2014 3:31 pm ]
Заглавие:  Re: Ламерски въпрос !

Ами ако се придържаме към това което си написал, може да се модифицира до следния вариант, който няма да ти "мига" :)
Само промените -
Код:
void interrupt(){
..
    if(encoder_counter<4)    encoder_counter++;
..
}
...
void Main() {
   unsigned char last_state = 0;
...
  init();
  Lcd_Out(1, 1, " Menu  ");

  while(1) {
     if (last_state != encoder_counter) {
        last_state = encoder_counter;

        switch(encoder_counter){
           case 1:
                 Lcd_Out(1, 1, " Menu 1 ");
           break;
           case 2:
                 Lcd_Out(1, 1, " Menu 2 ");
           break;
           case 3:
                 Lcd_Out(1, 1, " Menu 3 ");
           break;
           case 4:
                 Lcd_Out(1, 1, " Menu 4 ");
           break;
          }
    }
}

Автор:  haliobabalio [ Пет Фев 07, 2014 11:11 am ]
Заглавие:  Re: Ламерски въпрос !

Значи всичко е 6 Благодаря ти много
и искам да питам как сега да си сторя под менюта
с бутона от енкодера :)
тоест как да :
if(encoder_counter == 1) и тук какво се пишеше май && if(бутона на енкодера 1,1,)
void Menu1();
нещо такова май
аз си го написах :)

if(Button(&PORTB, 4, 1, 1) && encoder_counter == 1){

но все пак Благодаря
надявам се и за напред ако има нещо да помагате :)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/