logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Dlaczego kod się zapętla w jednym miejscu?

Wajder 12 Gru 2017 11:40 852 7
REKLAMA
  • #1 16885370
    Wajder
    Poziom 6  
    Witam :)
    Mam mały kłopot - mam kod, który mniej więcej wygląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    kłopot jest taki, że zamiast kontynuować dalej do point2 program zapętla point albo stopuje i nic dalej nie idzie.
    Co trzeba dopisać do kodu by po sprawdzeniach w point kontynuowało do point2 ?
    Z góry dziękuję:)
  • REKLAMA
  • #2 16885395
    Loker
    Poziom 39  
    A co to jest:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    ? Wywołanie funkcji, jakieś makro?
  • REKLAMA
  • #3 16886118
    Wajder
    Poziom 6  
    Loker napisał:
    A co to jest:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    ? Wywołanie funkcji, jakieś makro?

    kroki_prawo();
    kroki_lewo();  

    to wywołanie funkcji poruszania się silnika krokowego w daną stronę, która po 1 wykonaniu zmienia int step +1 .
  • REKLAMA
  • #4 16886148
    JacekCz
    Poziom 42  
    Loker napisał:
    A co to jest:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    ? Wywołanie funkcji, jakieś makro?


    Kolega napisał "Nie lubię teorii, jak już to połączenie jej z praktyką " ... szkoda, że praktyka też jakby cienko ...

    Moderowany przez tmf:

    3.1.11. Nie wysyłaj wiadomości, które nic nie wnoszą do dyskusji.

  • REKLAMA
  • #5 16886180
    sawitar
    Poziom 18  
    Nie ma możliwości aby funkcja point2() się nie wykonała po wyjściu z point().
    Brakuje trochę kodu ale wróżka powiedziała mi ze problemem jest to ze point() nie wychodzi a jedyne co wolasz to kroki_lewo() lub kroki_prawo() tam wiec szukaj problemu.

    Jak dla mnie to point i point2() są bardzo podobne. Naprawdę muszą to być dwie rozdzielne funkcje?
    Wartością domyślną 'step' jest 1 a nie jest łapana w żadnym z twoich warunków.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Z twojego fragmentu kodu niewiele więcej da się wyczytać.
  • #6 16886182
    Wajder
    Poziom 6  
    Moderowany przez tmf:

    Część dotyczącą usuniętych postów wyciąłem.


    @sawitar
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    to jest cały mój kod.
  • Pomocny post
    #7 16886667
    sawitar
    Poziom 18  
    W funkcji s_right jest błąd (jest: PORTC = (1<<PC3))

    Co więcej ten kod jest niestabilny.
    Funkcja s_right oraz s_left zawsze wykonują 4 kroki. Podczas gdy wartość początkowa 'steps' to 2. A więc po wykonaniu funkcji s_right zmienna steps przyjmie wartość -2. Przy tej implementacji 'steps' musi zawsze być wielokrotnością 4.

    Mam jeszcze dwie uwagi:
    - formatowanie kodu
    - Nie dało by się tego sparametryzować, wrzycić konfiguracji portu do jakiejś tabeli?
    - Brakuje oczywiscie petli która wykona wymagana ilosc kroków, bo kod który podałeś zawsze wykonuje 4 kroki
  • #8 16895168
    Wajder
    Poziom 6  
    sawitar napisał:
    W funkcji s_right jest błąd (jest: PORTC = (1<<PC3))

    Co więcej ten kod jest niestabilny.
    Funkcja s_right oraz s_left zawsze wykonują 4 kroki. Podczas gdy wartość początkowa 'steps' to 2. A więc po wykonaniu funkcji s_right zmienna steps przyjmie wartość -2. Przy tej implementacji 'steps' musi zawsze być wielokrotnością 4.

    Mam jeszcze dwie uwagi:
    - formatowanie kodu
    - Nie dało by się tego sparametryzować, wrzycić konfiguracji portu do jakiejś tabeli?
    - Brakuje oczywiscie petli która wykona wymagana ilosc kroków, bo kod który podałeś zawsze wykonuje 4 kroki

    Dzięki twojej wypowiedzi coś zaświeciło mi się w tyle głowy :D Możliwe, że to lampka nocna ale mam nadzieję na coś innego :)
    Cytat:
    - Nie dało by się tego sparametryzować, wrzycić konfiguracji portu do jakiejś tabeli?

    Nie potrafię jeszcze tego zrobić :) Jak na razie piszę amatorsko ^^ Ale trochę nauki i to ogarnę, ale to w swoim czasie.
    Dzięki wszystkim za wypowiedzi ! Dużo mi pomogły :)
REKLAMA