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.

Obsługa UART i klawiatury na PS2 - Atmega8 błędy

30 Sie 2011 21:51 1497 1
  • Poziom 9  
    Witam

    Zbudowałem sobie na jednej płytce stykowej Tellymate, a na drugiej kontroler klawiatury na PS2. Obydwa urządzenia zrobione na Atmegach 8 z kwarcem zewnętrznym 16MHz. Tellymate wyświetla na telewizorze to co otrzyma przez USART od drugiej Atmegi. Ona zaś wysyła znak który odbierze z klawiatury. Niestety wysyłane znaki nie są tymi z klawiatury. Wydaje mi się, że muszę zamienić dane otrzymane z klawiatury na inny typ, ale próbowałem już wielu rzeczy i nic nie zadziałało więc pytam tutaj. Kod w tellymate jest standardowy, nic nie zmieniałem. Kod drugiego urządzenia poniżej:

    atkeyboard.c

    Kod: c
    Zaloguj się, aby zobaczyć kod


    atkeyboard.h

    Kod: c
    Zaloguj się, aby zobaczyć kod


    scancodes.h

    Kod: c
    Zaloguj się, aby zobaczyć kod


    main.c
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dodano po 4 [godziny] 20 [minuty]:

    Przeczytałem na stronie radzio.dxp.pl, że w zmiennej znak otrzymuję kod klawisza, a nie kod ascii i po to jest plik scancodes.h aby sobie zamienić kod klawisza na znak. Jednak dla przykładu:
    SPACE - hex:0x20 znak klawisza:29, a gdy klikam spacje na klawiaturze Telly mate wyświetla mi literę k - hex: 0x6B znak klawisza: 42

    Zauważyłem, że tablica scancodes jest posegregowana i 29 pozycja w tablicy odpowiada Spacji, jednak dalej to nie wyświetla mi się poprawnie.

    Pomoże ktoś? Cały dzień już nad tym siedzę :(
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • Poziom 9  
    Ahhh ta wzajemna pomoc :D

    Doszedłem w końcu do tego, że potrzebuje tylko tej zamiany ze scancode na ASCII. Ma ktoś jakiś sensowny kod, ale nie ten od ATMELa bo oni napisali go na zupełnie inny procek.

    Dopisałem taką procedurkę:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    I działa tyle, że:
    1. Każdy znak pojawia mi się podwójnie nawet jeśli dam delaya.
    2. Nie mam możliwości rozróżniania dużych i małych liter
    3. Nie obsługuje niektórych klawiszy gdzie scancode składa się jakby z dwóch wg tej tabeli...