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.

ATMEGA8 klawiatura na PortD

fedzg 13 Sty 2011 23:15 1204 6
  • #1 13 Sty 2011 23:15
    fedzg
    Poziom 2  

    Witam,
    mam następujący problem na porcie D mam założoną klawiaturę 4x3. Używam polecenia GetKBD() programu BASECOM do odczytów naciśniętych klawiszy (oczywiście wcześniej zadeklarowałem Config Kbd = Portd )
    Okazuje się, że nie mogę przeczytać linii podpiętych do PortD.0 i PortD.1 a pozostałe linie czytam dobrze. Problem nie polega na podłączeniu gdyż na nóżkach procesora testerem stany widzę dobrze. Domyślam się, że problem może polegać na tym, że są do wyprowadzenia USART'a. Nie używam w programie transmisji RS .
    Czy ktoś ma jakiś pomysł?
    pozdrawiam ...

    w uzupełnieniu testowy program:

    Code:

    Config Kbd = Portd , Delay = 100
    Dim A As Byte
    Do
       A = Getkbd()
       Cls
       Lcd "Klawisz=" ; A
       Lowerline
       Lcd "Pind.0123=" ; Pind.0 ; Pind.1 ; " " ; Pind.2 ; Pind.3 ; ":"
       Waitms 500
    Loop


    na LCD w linii 2 widzę naciśnięcie klawisza w każdym rzędzie (Pin ustawia się na 0) a w linii 1 LCD dgy PinD.0 lub PinD1 ustawiają się na 0 wartość Klawisz=16
    ???

    Proszę umieścić kod w znacznikach code.
    Robak
    Code:

    0 6
  • #3 14 Sty 2011 00:36
    fedzg
    Poziom 2  

    1. portD jest 8-bitowy
    2. nie mam żadnej deklaracji Open.... Kompitalor też nie pozwala mi zamknąć nieotwartego portu (Close, Close #1, etc)

    0
  • #4 14 Sty 2011 11:11
    piotrva
    Moderator na urlopie...

    1. napisz jakiego procesora używasz, bo w pierwszej chwili myślałem, że to któryś z serii 90s2313 lub tiny2313.
    2. nie chodzi mi o programowe otwarcie portu, ale o to czy fizycznie na jakiejś płytce testowej/prototypowej nie masz podpiętego tam np. ft232, bo wiem że on czasem powodował takie problemy
    3. ogólnie schemat by się przydał jakiś tego co kolega zbudował
    4. a myślał kolega nad ręczną obsługą klawiaturki?

    0
  • #5 14 Sty 2011 16:41
    LordBlick
    VIP Zasłużony dla elektroda

    piotrva napisał:
    1. napisz jakiego procesora używasz, bo w pierwszej chwili myślałem, że to któryś z serii 90s2313 lub tiny2313.
    W temacie... ;)

    0
  • #7 14 Sty 2011 20:13
    fedzg
    Poziom 2  

    1. Do portuD podpięta jest tylko klawiatura 4x3 bez rezystorów. W deklaracjach CONFIG ...=INPUT, czy CONFIG ...=OUTPUT nie mam żadnych odniesień do portu D. Żadnych też ustawień SET/RESET pinów portu D.

    2. Teraz myślę, że kolejny raz klawiaturę 4x3 obsługiwałbym własną procedurą na nie używałbym GetKBD(). Procedura wymaga całego portu; parametry CONFIG KBD są ubogie a i tak odczyt trzeba poprawiać by nie następowało powielanie naciśnięcia klawiszy. Port 0-3 oraz 4-7 są zawsze kolumnami/wierszami przez co zmiana klawiatury wymaga "zabawy lutownicą".

    3. Dziękuję wszystkim za uwagę problem został rozwiązany, chociaż nie wiem do końca dokładnie na czym polegał - choć walczyłem z tym dwa wieczory. Wymieniałem procesor -bez sukcesu... Od pewnym momencie po odpięciu programatora wszystko działa poprawnie. Programowałem później wielokrotnie procesor i błąd nie wrócił.

    0