Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

Grzesieq94 30 Aug 2011 21:51 1548 1
  • #1
    Grzesieq94
    Level 10  
    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

    Code: c
    Log in, to see the code


    atkeyboard.h

    Code: c
    Log in, to see the code


    scancodes.h

    Code: c
    Log in, to see the code


    main.c
    Code: c
    Log in, to see the code


    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ę :(
  • #2
    Grzesieq94
    Level 10  
    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ę:

    Code: c
    Log in, to see the code


    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...