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

Przeniesienie kodu napisanego w Bascomie na C

100 20 Sie 2011 12:07 1610 12
REKLAMA
  • #1 9843567
    100
    Poziom 14  
    Witam

    Tak jak w temacie mam napisałem program w bascomie który ma za zadanie zapalać cztery diody led po odebraniu po RS232 cyfr od 1-4 i chodzi to bez problemu ,ale teraz gdy uczę się języka C postanowiłem ten sam program przenieść na C i już nie jest tak dobrze.Objaw jest taki gdy wyśle 1-Zapalają się i gasną diody "STROBO I KULA" gdy 2-Tak sama 3-Też a gdy wyśle 4-To dioda "KULA" dział prawidłowo.
    Co może być przyczyną takiej pracy programu. Wszelkie propozycje zmian w kodzie mile widziane.
    Poniżej dodaje screny kodu w Bascomi,C i Biblioteki do odbieranie znaków w Uarta.

    Kod w Bascomie

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Kod w C

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



    Biblioteka LukiUart.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 9843652
    phoszek
    Poziom 16  
    Witam

    Po szybkim przeanalizowaniu kodu stwierdziłem, że problem tkwi w instrukcji switch. Popraw kod dodając na końcu każdej instrukcji 'case' polecenie - 'break;' i napisz czy pomogło.
  • REKLAMA
  • #3 9843697
    100
    Poziom 14  
    Trochę pomogło ale nadal nie jest to co trzeba.
  • #4 9843701
    phoszek
    Poziom 16  
    To znaczy, że jak jest? Wróżką nie jestem :) I możesz od razu pokazać czy dobrze kod zmodyfikowałeś.
  • #5 9843728
    100
    Poziom 14  
    Tzn Dwie ostatnie diody pracują ale jak np ostatnia się pali i chce zapalić dodatkowo trzecią do ta ostatnia gasnie i dopiero gdy jeszcze raz wyśle 3 to wtedy zapali się trzecia dioda w Bascomie tego czegoś nie było.

    Ponizej kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #6 9843905
    gaskoin
    Poziom 38  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Raczej był dał:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #7 9843940
    100
    Poziom 14  
    Pomogło dzięki gaskoin Narażie nie zamykam tematy ponieważ muszę jeszcze dodać do tego kodu obsługę RC5 i mogę mieć jakieś problemy.

    Dodano po 2 [godziny] 49 [minuty]:

    No niestety z Ir też mam problem wszystko jest dobrze jak zakomentuje fragment
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    Wtedy wszystkie funkcje z pilota działają tak jak trzeba a gdy ten fragment jest widoczny to już pilot nie działa.

    Poniżej kod ze zmianami:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #9 9844883
    100
    Poziom 14  
    Problem rozwiązany zmieniłem funkcje odbierania znaku na taką
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #10 9844939
    gaskoin
    Poziom 38  
    Przecież w nocie masz wyraźnie:

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


    Funkcje z pilota nie działają bo ta funkcja jest blokująca, więc powinno się to robić na przerwaniach jak zasugerował LordBlick, to co Ty napisałeś jest źle
  • #11 9845016
    100
    Poziom 14  
    Ale też chodzi.
  • #13 10340073
    100
    Poziom 14  
    Witam tak jak doradził jeden z kolegów dałem przerwanie i cały program chodzi bez zmiany funkcji do odbioru z UART.Temat zamykam.
REKLAMA