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

[Atmega8][c]Klawiatura ps/2

Bartusjusz 31 Mar 2011 21:15 1317 6
REKLAMA
  • #1 9346330
    Bartusjusz
    Poziom 25  
    Otóż napisałem taki programik, ale po wciśnięciu dowolnego klawisza klawiatury dostaję zawsze 1 zamalowany prostokąt.

    Przed mainem deklaruję zmienne volatile.
    W mainie żądam przerwania zboczem opadającym na int0
    W przerwaniach składam daną, nie zrobiłem zabezpieczenia przeciw 'fałszywemy' zboczu, ale nawet gdyby powało to powinienem odbierać różne krzaki...

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • REKLAMA
  • #3 9346641
    Bartusjusz
    Poziom 25  
    Znalazłem błąd, PD1 to 0x02, a nie 0x01, poprawione, w kodzie u góry również, ale dalej nie działa poprawnie, teraz rzuca przy każdym przycisku krzaczek i pełen kwadrat, oba są ciągle takie same...

    Co do ISR, lepsze jest wrogiem dobrego ;)
    A różni się czymś poza tym, że może mieć dodatkowe parametry?
  • REKLAMA
  • #4 9346932
    ksz
    Poziom 15  
    bartusjusz napisał:
    Otóż napisałem taki programik, (...)

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Nie te rejestry.. Zdecydowanie nie te! :)
    Poczytaj datasheet procka (hint: EIMSK, EICRx)

    bartusjusz napisał:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Bardzo dziwny zapis :)

    Co do SIGNAL, to jest deprecated, więc zostanie wycofane w przyszłych wydaniach..
  • #5 9347078
    Bartusjusz
    Poziom 25  
    if()
    {aasa |= 0x01;} może być :)


    Co do rejestrów:
    • Bit 6 – INT0: External Interrupt Request 0 Enable
    When the INT0 bit is set (one) and the I-bit in the Status Register (SREG) is set (one),
    the external pin interrupt is enabled. The Interrupt Sense Control0 bits 1/0 (ISC01 and
    ISC00) in the MCU general Control Register (MCUCR) define whether the external
    interrupt is activated on rising and/or falling edge of the INT0 pin or level sensed. Activity
    on the pin will cause an interrupt request even if INT0 is configured as an output. The
    corresponding interrupt of External Interrupt Request 0 is executed from the INT0 interrupt
    vector.


    isc01 isc00
    1 0 The falling edge of INT1 generates an interrupt request.

    EIMSK, EICRx - wyszukiwarka nie znajduje ich w instrukcji...
  • REKLAMA
  • #6 9347093
    ksz
    Poziom 15  
    Moja culpa, przepraszam z tymi rejestrami.. Dawno nie zajmowałem się m8 :/

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #7 9347118
    Bartusjusz
    Poziom 25  
    Żaden problem.
REKLAMA