Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Domonkos

    Ármester

    válasz Domonkos #44 üzenetére

    💾🖐️ > 🎹

    Vegul mar csak egy fuggveny kell, hogy az osszes billentyu allapotat megkapjuk. Ez a fuggveny szerencsere egyszeru:

    static uint8_t
    read_keys(void)
    {
    uint8_t b;
    uint8_t e;
    uint8_t s;

    b = PINB;
    b &= 0b10000000;
    b >>= 7;

    e = PINE;
    e &= 0b01000000;
    e >>= 6;

    s = b | (e << 1);
    s <<= 2;

    return s;
    }

    Mivel ezen a ponton a multiplexer mar a jo sorra van allitva es a propagaciora is vartunk eleget, igy itt mar nincs mas dolgunk, mint kiolvasni az adott soron az osszes billentyut, majd azt visszajuttatni a hivonak. A fenti kod pont ezt teszi.
    Bar trukkosen nezhet ki, a fuggveny nem csinal mast, mint a bal oldali hand unit 2 billentyujet olvassa ki a megfelelo portok megfelelo labairol es azt az s valtozon keresztul, annak a 2-3. bitjein visszajuttatja a hivonak. Ha a hardver ott tartana, hogy a ket felet ossze tudtuk kapcsolni, akkor itt kellene kiszednunk a jobb fel ertekeit is, amit a 0-1 bitekben tarolhatnank. Amig ez nincs meg, addig az a ket bit fixen 0 lesz, es a firmware ugy fogja kezelni, hogy azokat a billentyuket sosem nyomtuk le.
    A read_keys() es a read_keyboard() kozott iratlan egyezmeny, hogy a billentyuk allapotat azt a legalso 4 bit-en cserelik ki egymas kozt. :K

    [ Szerkesztve ]

    Gender of electrical connectors is defined by the pins.

Új hozzászólás Aktív témák