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

[avr] łączenie cyferek w jedną liczbę

misiolowaty 03 Maj 2011 17:02 1755 5
  • #1 9465690
    misiolowaty
    Poziom 13  
    Programuje i programuje mój kochany procesorek atmega 32 i jakoś nie chce mi to zadziałać. Na wstępie zaznaczę, że poświęciłem godzinę na samo przetrzepanie elektrody i googli w celu rozwiązania problemu.

    Sprawa wygląda tak:

    Wysyłam z PC kolejno 3 wartości (przez UART) z zakresu 0...9 . Procesor je odbiera i ma skleić w jedną 3 cyfrową liczbę. Gdy takową już będzie miał - ma ją wyrzucić na port (w postaci binarnej tak po prostu).

    Komunikacja działa mi z całą pewnością (i w niej nie ma co doszukiwać się powodu). Coś jest nie tak z samym programem "właściwym". Zamiana wartości pojedynczej odbieranej cyfry na wartość liczbową (czyli odjęcie wartości '0' w asci) też jest ok. Co takiego robie źle? W sumie na ten program poświęciłem około 4 godzin bez przerwy i powoli tracę nadzieje, na to, że wogóle da się coś takiego zrobić :)

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


    nie działanie objawia się tym, że procesor wysterowuje wyjście każdrazowo po otrzymaniu pojedynczej (każdej!) cyfry. Ponadto te wystawianewartości mają się nijak to wysyłanych cyfr (i liczb z nich zrobionych).

    Czy:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    To napewno dobry sposób na trzymanie programu w miejscu dopóki nie pojawi się nowa wartość??

    dodam jeszcze, że kolejne znaki wysyłam w sporym odstępie czasu (pojedynczo a nie ciurkiem :) )
  • #3 9466041
    misiolowaty
    Poziom 13  
    o rzeczywiście, nie zauważyłem. Kod teraz wygląda tak:

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


    i dalej nie działa :) - tym razem na porcie ciągle jest 0.
  • #4 9466058
    tadzik85
    Poziom 38  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    a to co ?
  • #5 9466076
    misiolowaty
    Poziom 13  
    to jest "zatrzymanie" programu na czas kiedy nie sa odbierane dane. Po odebraniu danego znaku program ma isc dalej i znowu stawac w tym miejscu.
  • #6 9466110
    tadzik85
    Poziom 38  
    bo faktycznie się zatrzyma co?

    chłopie popracuj nad składnią C

    PS. po co włączasz przerwanie?
REKLAMA