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

Wyświetlacz LED 4 cyfry i ATmega32A: sprawdzenie stanu, podłączenie, szybki program testowy

Oblako 31 Sie 2022 17:52 816 7
  • #1 20169602
    Oblako
    Poziom 6  
    Cześć wszystkim kupiłem zestaw uruchomieniowym avr z mikrokontrolerem atmega32a. Chciałem się zabrać za naukę z ekranem led 4 cyfrowym ale on na nic nie reaguje, pytanie jest takie czy ja cos zepsułem czy otrzymałem niedziałający ekran led.

    Czy jest jakaś dobra osoba która podpowie mi jak to sprawdzić jakimś szybkiem programem w c + jak to podłączyć.
    https://serwis.avt.pl/manuals/AVT5311.pdf - oto dokumentacja do tego zestawu.


    Próbowałem przetestować to na takim programie:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 20169678
    jarekgol
    Poziom 38  
    Na tych schematach led 7seg masz sterowane sygnałami SIN A,B,C itd + K0,1,2 itd. Natomiast nie wynika ze schematu żeby były podłączone do procesora. Być może musisz je połączyć kabelkami na złączy J10.
    Podaj sobie na piny K masę i na któryś SIN daj +5V (najlepiej przez opornik rzędu 100 Omów), zobacz czy coś się zapali.
  • #3 20169688
    landy13
    Poziom 31  
    ATmega32 na porcie C ma fabrycznie włączony JTAG. Jeśli chcesz używać portu C, musisz wyłączyć JTAGa fusebitem.
  • #4 20169724
    tmf
    VIP Zasłużony dla elektroda
    Ponieważ rozwiązanie już padło, pozwolę sobie tak przy okazji odnieść się do:
    Oblako napisał:
    Cześć wszystkim kupiłem zestaw uruchomieniowym avr z mikrokontrolerem atmega32a.

    Za taką cenę to mogłeś kupić np. curiosity nano, które ma wbudowany programator/debugger i pełno różnych sheldów z arduino (w tym z 7seg. LED) do nauki. Miałbyś wygodniej, więcej i lepiej by ci się uczyło mając możliwość prześledzenia co robi program w gotowych układzie.
    Przy okazji ten program, który wkleiłeś to twoje dzieło? Kilka uwag:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Sterowanie wyświetlaczem raczej zrób w przerwaniu timera. Ponadto blokowanie przerwań w przerwaniu jest bez sensu, bo one już są zablokowane. Kolejna sprawa - nigdy nie używaj delay w przerwaniu. W przypadku wyświetlacza LED wszystko możesz zrobić przy pomocy przerwania ovf i comp timera.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Taki zapis powoduje umieszczenie stałych w pamięci SRAM, czego wolałbyś uniknąć. Dlatego lepiej albo zastosować nowsze AVR, albo użyć _flash. Tak, czy siak, warto też dodać const, bo są to stałe, więc zawsze dodatkowa kontrola przy pomocy const nie zaszkodzi.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Unikaj takich zapisów o ile nie są niezbędne. W pewnych sytuacjach to może prowadzić do kłopotów, jeśli pozostałe bity rejestru nie są wszećniej użyte, a w twoim przypadku nie są to zapis:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    jest po prostu czytelniejszy i bezpieczniejszy.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    cli/sei jest tu zbędne. Ponadto wcześniejsza uwaga dotycząca |= też ma zastosowanie.
  • #5 20169776
    Oblako
    Poziom 6  
    Ok zaczęło działać podłączyłem to tak:

    DP -> PD2
    K0..K3 -> GND
    A..G ->PC0..PC3,PC4..7

    Pali sie wszystko.

    A załóżmy że marzy mi się aby na tym ekraniku zliczało mi się ile razy nacisnąłem przyciskiem.
    Jest mi ktoś z Was w stanie pomóc?

    Np KEY podepne pod PA0

    Dodano po 33 [minuty]:

    Oblako napisał:
    Ok zaczęło działać podłączyłem to tak:

    DP -> PD2
    K0..K3 -> GND
    A..G ->PC0..PC3,PC4..7

    Pali sie wszystko.

    A załóżmy że marzy mi się aby na tym ekraniku zliczało mi się ile razy nacisnąłem przyciskiem.
    Jest mi ktoś z Was w stanie pomóc?

    Np KEY podepne pod PA0






    Mam takie cos do obsługi przycisku i zapalanie/gaszenia 3 lampek

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #6 20169832
    tmf
    VIP Zasłużony dla elektroda
    Oblako napisał:
    A załóżmy że marzy mi się aby na tym ekraniku zliczało mi się ile razy nacisnąłem przyciskiem.
    Jest mi ktoś z Was w stanie pomóc?

    Ściągnij darmowe przykłady do książek z mojej stopki - są do pobrania z ftp wydawnictwa. I sobie analizuj.
    Sporo przykładów, różnej jakości znajdziesz też przez google.

    Dodano po 2 [minuty]:

    Oblako napisał:
    Mam takie cos do obsługi przycisku i zapalanie/gaszenia 3 lampek

    Najpierw porządnie napisz sterowanie tymi wyświetlaczami LED, potem komplikuj. Inaczej wyjdzie z tego...
    Te #define do wszystkiego to też proszenie się o kłopoty, jeśli nie rozumiesz w 100% jak to działa i jakie mogą być nieoczekiwane konsekwencje takiego kodu.
  • #7 20169844
    Oblako
    Poziom 6  
    tmf napisał:
    Oblako napisał:
    A załóżmy że marzy mi się aby na tym ekraniku zliczało mi się ile razy nacisnąłem przyciskiem.
    Jest mi ktoś z Was w stanie pomóc?

    Ściągnij darmowe przykłady do książek z mojej stopki - są do pobrania z ftp wydawnictwa. I sobie analizuj.
    Sporo przykładów, różnej jakości znajdziesz też przez google.

    Dodano po 2 [minuty]:

    Oblako napisał:
    Mam takie cos do obsługi przycisku i zapalanie/gaszenia 3 lampek

    Najpierw porządnie napisz sterowanie tymi wyświetlaczami LED, potem komplikuj. Inaczej wyjdzie z tego...
    Te #define do wszystkiego to też proszenie się o kłopoty, jeśli nie rozumiesz w 100% jak to działa i jakie mogą być nieoczekiwane konsekwencje takiego kodu.




    Mnie bardziej przerasta co z czym połączyć, niby łącze tak jak pisze a to nie działa i nie rozumiem z czego to wynika ..

    Dodano po 15 [minuty]:

    tmf napisał:

    Najpierw porządnie napisz sterowanie tymi wyświetlaczami LED, potem komplikuj. Inaczej wyjdzie z tego...
    Te #define do wszystkiego to też proszenie się o kłopoty, jeśli nie rozumiesz w 100% jak to działa i jakie mogą być nieoczekiwane konsekwencje takiego kodu.


    ok zostało mi coś takiego ale za nic nie wiem jak to podłączyć
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Wyświetlacz LED 4 cyfry i ATmega32A: sprawdzenie stanu, podłączenie, szybki program testowy
  • #8 20170483
    jarekgol
    Poziom 38  
    Zrób sobie najpierw obsługę jednego wyświetlacza, czyli napisz funkcje
    Kod: Arduino
    Zaloguj się, aby zobaczyć kod

    która po wywołaniu wystawi Ci na piny które połączysz z SIN... takie kombinacje, które wyświetlą doby znak.
    Możesz ją zrobić w oparciu o
    switch() {case} 
    lub lepiej o tablicę znaków (zdaje się tak próbowałeś) Pamiętaj żeby skofigurować użyte piny jako wyjścia.
    Potem zrób przycisk. Na początek prosta pętla która przepisze stan przycisku na jakiś bezpośredni LED. Wciskasz, trzymasz, led się zmienia. Wcześniej możesz pomigać sobie tym ledem na delayu, żeby się oswoić.
    Potem musisz wykrywać wciśniecie i puszczenie przycisku, pomyśleć o eliminacja drgań zestyków, i jak wykryjesz puszczenie, zwiększać zmienną i przekazywać ją do wyświetl().
    Na koniec zrobić multipleksacje wyświetlaczy i wyciągać z większej zmiennej dziesiątki tysięcy, tysiące, setki itd... i wrzucać je na kolejne wyświetlacze lub użyć gotowej funkcji itoa() Możesz też na początku wyświetlać w hexie, łatwiej, dlatego napisałem argument funkcji do 0xF

    Jeżeli chcesz odczytywać przycisk przerwaniem, zobacz do czego w tym procesorze jest podłączone INT0 i do tego pinu musisz dać przycisk. Pamiętaj że przycisk daje sygnał "w jedną stronę" w drugą musi być opornik lub włączony pull-up/down w procesorze.
REKLAMA