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

Wyswietlacz widmowy na atmega8 - wyswietla tylko 1/3 okregu

lotnik95 03 Gru 2017 18:58 609 5
REKLAMA
  • #1 16865866
    lotnik95
    Poziom 8  
    Witam, skonstruowalem zegar widmowy, udalo mi sie zaprogramowac napis (wyglada przyzwoicie) ale pojawil sie problem, wyswietla mi sie, tzn gdy wlaczam diody na wyliczonych pozycjach (do 60) jest okej, natomiast gdy probuje wyswietlic cos na wyzszych katach (powyzej 60) jest problem i nie wyswietla sie nic, dziwna sprawa bo programowo robie tak samo (moge napisac pojedynczego ifa, gdy ustawie do wyswietlania 1, jest okej, gdy zmienie przykladowo na 100, juz nic nie wyswietla).
    Ogolna struktura programu dosc znana w internecie (odmierzenie czasu pelnego obrotu przez przerwanie od fototranzystora, podzielenie na 180 co daje nam 2 stopnie na pozycje, inicjowanie timerow wartoscia pelnego obrotu/180 i wlaczanie w tym momencie odpowiednich diod na chwile)
    Zalacze kod, moze jest ktos w stanie udzielic mi odpowiedzi czemu tak sie dzieje, pomóc? (jesli trzeba to oczywiscie odplatnie)

    Co ciekawe, gdy wyswietlam tylko do pozycji 60 jest okej, gdy ustawie wyswietlanie np na pozycjach ponizej 60 i jakas pozyca powyzej 60, to nie wyswietla sie nic (nie potrafie tego ogarnac)

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 16866051
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 16866178
    lotnik95
    Poziom 8  
    dzieki za wskazowke, tylko problem polega na tym ze jak stosuje switch... case to wogole nic sie nie zapala,

    siedze nad tym caly weekend i nie potrafie zrozumiec co jest napisane nie tak
  • REKLAMA
  • #4 16866224
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #5 16866258
    lotnik95
    Poziom 8  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #6 16866462
    BlueDraco
    Specjalista - Mikrokontrolery
    Napisz to od nowa, z tablicami i bez żadnych switch ani if. Nie używaj delay. Po prostu zapisz w tablicy dane do wyświetlenia w kolejnych krokach. Dlaczego deklarujesz dane o małych zakresach jako int?
    W Twoim kodzie zaświecanie kolejnych diod nie następuje równocześnie. Po zaświeceniu ostatniej czekasz podobno 5us i zaczynasz gasić. Po co? Zgasić i zapalić kolejne powinieneś po odliczeniu kolejnego odcinka czasu przez timer - to wszystko powinno się odbywać w przerwaniu timera, a nie w pętli , wykonywanej nie wiadomo ile razy dla każdego kroku i nie wiadomu w którym miejscu przerywanej.
REKLAMA