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

bascom i dwie klawiatury

robusta 25 Lut 2004 14:31 3904 9
  • #1 518715
    robusta
    Poziom 15  
    Witam,
    bardzo bym potrzebował użyć dwóch klawiatur matrycowych w bascomie AVR, procek to pewnie dam mega8535 i przykładowo:

    $crystal = 4000000
    $regfile = "m8535.dat"
    Config Kbd = Portb
    Config Kbd = Porta
    Dim B As Byte
    Do
      B = Getkbd()
    Loop
    End


    Kompilacja w Bascomie nie wykazuje żadnych błędów - nie mam puki co możliwości sprawdzenia czy to sprzętowo zadziała :( więc pytam mistrzów...
    Nie za bardzo tylko mogę objąć umysłem jak zinterpretuje, z której klawiatury przyszło info o wciśniętym klawiszu...
    Proszę Was o jakąś pomoc - czy to może działać??
    Ewentualnie jak inaczej?
    Pozdrawiam
    Przemo

    Przeniesiono z Programowanie Ogólne. - arnoldziq
  • #2 518805
    elektryk
    Poziom 42  
    Nie mam żadnej praktyki z bascomem ale jak na mój 'gust' to nie ma szansy działać. Skoro procedura obslugi odczytu klawisz jest tylko jedna to tylko jedne przypisanie Config Kbd = Portb może być aktywne naraz. Może by dało się zrobić taką sekwencji: przypisz klawiature, odczytaj klawisz, przypisz druga klawiature, odczytaj klawisz, ale to proszenie się o kłopoty bo nawet trudno przewidzieć jaki będzie efekt.
  • #3 519629
    yarpen2
    Poziom 22  
    tak jak to jest na pewno nie zadziała. W twoim programie klawiatura będzie podpięta pod port a i tyle. Drugiej nie będzie. Chyba że sobie napiszesz jakąś procedurkę która będzie kontrolować obie naraz ale wtedy do odczytu nie będziesz korzystał z funkcji getkbd(). Poczytaj opis Bascoma.
  • #4 519827
    robusta
    Poziom 15  
    zapytałem twórcę - Mark Alberts potwierdza, że to nie będzie działać. Config Kbd.... i getkbd obsługują tylko jedną matrycę w systemie.
    Pozdrawiam
    Przemo
  • #5 523655
    euromatic
    Poziom 21  
    Lepiej dodać scalaczek ( 4066) i przełączać klawiaturki, po co tracic cały port procesora.
    Może w niedalekiej przyszłości sprawdzę czy rzeczywiście się nie da tego zrobić na dwóch portach.Zawsze jest jakieś wyjście z sytuacji. ( wstawka asemblerowa.....)
    Pozdrawiam
  • #6 524261
    elektryk
    Poziom 42  
    euromatic napisał:
    Lepiej dodać scalaczek ( 4066) i przełączać klawiaturki, po co tracic cały port procesora.
    ...i jeszcze zrobić PCB wielowarstwową, bo 4066 mają taką złośliwą nożkologie.
  • #7 524433
    euromatic
    Poziom 21  
    elektryk napisał:
    euromatic napisał:
    Lepiej dodać scalaczek ( 4066) i przełączać klawiaturki, po co tracic cały port procesora.
    ...i jeszcze zrobić PCB wielowarstwową, bo 4066 mają taką złośliwą nożkologie.


    Wielowarstwową płytkę do 4066 ???. To chyba żarty, panie elektryk . Topologia tego prymitywnego scalaczka nie stanowi przecież problemu. Nie jest to wieloportowy procesor smd... Poza tym niech autor postu sprawdzi co będzie jak zadeklaruje "Config Kbd = Porta" bezpośrednio w procedurce doczytu klawiatury( w dwóch procedurkach)


    Sub Key1
    Config Kbd = Porta
    A = Getkbd()
    B = Lookup(a , Numer_id_1 )
    End Sub

    Sub Key2
    Config Kbd = Portb
    A = Getkbd()
    b= Lookup(c , Numer_id_2 )
    End Sub
    jeżeli można zmieniać w ten sposób magistralę "1 wire", to pewnie z klawiaturką też nie będzie problemu ( nie sprawdzałem )

    pozdrawiam
  • #8 524480
    adi-niunio
    Poziom 23  
    a nie można podłączyć dwóch klawiatur przez I2C ????? i tak każda z nich by miałą inny adres. NIe wiem czy ten procek obsługuje I2C, ale jestem ciekawy czy wogóle jest taka możliwość ????????
  • #9 524771
    BoskiDialer
    Poziom 34  
    według mnie 'Config ..' to jest polecenie dla kompilatora tak jak w
    asmie .equ albo coś w tym stylu... ciężko dla jednej procedury ustalić
    2-ie różne metody działania... raz na porcie tym a raz na tym...
    żeby to szło adresować porty za pomocą rejestrów :( idzie tylko za
    pomocą stałej (przezco wielokrotne config niedziała) albo za pomocą
    wskaźników X,Y albo Z korzystając z odzwierciedlenia portów w
    pamięci operacyjnej... możliwości są takie:
    - multiplexowanie/przełączanie z jednej klawiatury na drugą i
    spowrotem...
    - albo nowa procedurka która by obsłużyła 2 klawiaturki naraz...

    kolejna wada to taka.. że jeśli procesor pilnuje jednej klawiatury, to
    niemoże sie przełączyć na drugą ponieważ może utracić cenne bity
    ramki przezco konieczne jest stosowanie jakiegoś sposobu ustalania
    która klawiatura ma być aktualnie aktywna.. albo zastosowanie przerwań
    albo kilka procków.. jeden główny a pozostałe by odbierały sygnał z
    klawiatury (klawiatura na 1 procesor) i wysyłały w postaci np szeregowej
    do uart'u głównego procka.. odciążyło by go to od kontrolowania
    klawiatury i dało by mu czas na przetwarzanie swojego programu..

    robusta: jak niemasz możliwości sprawdzenia na sprzęcie to sprawdź w deassemblerze..
  • #10 525489
    elektryk
    Poziom 42  
    euromatic napisał:
    Wielowarstwową płytkę do 4066 ???. To chyba żarty, panie elektryk . Topologia tego prymitywnego scalaczka nie stanowi przecież problemu.
    Zauważ że oba 'końce' klucza są bardzo blisko siebie, a klucze umieszczone po obu 'stronach' scalaka, więc jeśli by podłączyć jedne końce do uP a drugie do urządzenia to baaardzo dużo połączeń będzie się krzyżować pod tym scalakiem.
REKLAMA