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

bascom i dwie klawiatury

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

    Code:
    $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
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • 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.
  • 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.
  • 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
  • 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
  • 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.
  • 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
  • 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ść ????????
  • 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..
  • 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.