Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

PIC18F46K22 - Rezystory podciągające i niedziałająca klawiatura matrycowa

Leeoonek 03 Gru 2014 22:25 1317 3
  • #1 03 Gru 2014 22:25
    Leeoonek
    Poziom 9  

    Zaledwie kilka dni temu napisałem temat dotyczący wyświetlacza alfanumerycznego. Ze wstydem przychodzę ponownie, ponieważ znów trafiłem na problem, który ciężko mi rozwiązać. Mianowicie chodzi o klawiarurę matrycową i wyświetlanie na wyświetlaczu cyfr, które zostałyby wskazane przez użytkownika. Teoretycznie temat bardzo prosty, niemniej nie mogę sobie z jakiegoś powodu z nim poradzić

    Schemat ideowy jest dziecinnie prosty, umieściłem w nim jedynie ową klawiaturę, kontroler oraz rezystory podciągające, kwestie zasilania, wyświetlacza działają prawidłowo, w związku z czym ich nie umieszczałem ich na schemacie. Gdyby jednak była taka potrzeba oczywiście rozrysuje całość.



    Sam kod jest stosunkowo prosty, umieszczam go poniżej

    Kod: c
    Zaloguj się, aby zobaczyć kod


    kod do biblioteki KL.h
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Wszystko wydaje się stosunkowo łatwe i wedle wiedzy którą posiadam powinno pracować poprawnie. Niestety uruchamiając układ dostaje na wyjściu z góry cyfrę jeden. Sprawdzając kod krokowo zauważyłem, że jest to spowodowane tym, iż pierwszy warunek dotyczący wejścia z pierwszej kolumny wyświetlacza zostaje automatycznie spełniony (czyli że wykrywa tam stan niski), choć tak być nie powinno. Stan wysoki powinien utrzymywać się aż do czasu naciśnięcia klawisza, co powodowałoby zmianę na stan niski, następnie spełnienie warunku etc.
    Na początku pomyślałem o uszkodzonych portach kontrolera, niestety sprawdzając je jako wyjścia działają poprawnie (sprawdziłem to poprzez zasilanie diody). Wiem też, że napięcie na portach wynosi około 4,95V (sprawdziłem multimetrem), dlatego też nie rozumiem tej sytuacji.

    Pozdrawiam
    Karol

    0 3
  • Pomocny post
    #2 03 Gru 2014 23:00
    michcior
    Poziom 30  

    Rzuciłem okiem w jakiś swój trochę już stary kod na 18F14k22 i widzę że stan czytam np tak:

    PORTCbits.RC0

    Ty używasz LAT*, które służą do zapisu stanu wyjść, tak mam to zrobione. Ponadto, dla wszystkich wejść które mają kanał A/D wyłączam to funkcjonalność tak:

    ANSELbits.ANS4=0;


    BTW: ten kod do pobranie pod poniższym linkiem (sterowanie oświetleniem)

    0
  • #3 04 Gru 2014 07:35
    94075
    Użytkownik usunął konto  
  • #4 04 Gru 2014 18:18
    Leeoonek
    Poziom 9  

    Faktycznie źle zadeklarowałem porty, wszystko teraz pięknie śmiga, dziekuje wszystkim, temat do zamknięcia : )

    0