Aktualności: C64 Power - online od stycznia 2000 !

Autor Wątek: Konwerter klawiatury AT PS/2 dla C64  (Przeczytany 5510 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Term

  • Level 1
  • *
  • Wiadomości: 49
Re: Konwerter klawiatury AT PS/2 dla C64
« Odpowiedź #15 dnia: 24 Maja 2017, 22:52 »
podlacz sobie oscyloskop, nacisnij jakis klawisz, zobacz jak zmienian sie stan na linii (reakcja na zbocze)...
W momencie wciśnięcia klawisza "zwalnia" odczyt kolumn - zauważyłem.
Ha! Już wiem co miałem zobaczyć. Ja stary, mój oscyloskop stary (ZDZtu Mini5a) i raczej do audio. Pokombinowałem, pokręciłem gałami i wyszło:
- "wolna" kolumna ------------_--------------
- połączona z rzędem ------------_--___--------
Ciężko to uchwycić więc jak wcześniej sprawdzałem to widziałem (stary i ślepy;p) -----------_____----------- po wciśnięciu guzika i to miałem na myśli pisząc "zwalnia".
Ok 1 problem rozwiązany! :D

punkt 4. powinien byc czekaj az zniknie stan 0 na kolumnie i wowczas ustaw stan jeden na wszystkich rzędach.

tak też kombinowałem czyli:
Do : Loop until Kx=0
Rzedy=rzad
Do : loop until Kx=1
Rzedy = 255

Choć waity raczej "szybciej chodzą" i tylko wystarczy "wyregulować" długość.

Dodatkowo mozesz miec problem z predkoscia programu w BCASCOM i lepij zrobic te czesc programu w asemblerze.
Bascom jest powolny, kompilator ma skopany, kod wynikowy typowego "blink" potrafi ważyc kilka kb. Przeskocz na arduino ide, masa przykładów, bibliotek, i ogolnie przyjemnie sie w tym rzeźbi. Mówie to jako zatracony pascalowiec. Łatwiej mi było ogarnąć arduino ide niż bascom avr. W dodatku jest support dla większości procków avr nie tylko tych upchanych na plytki *ino.

I tak będę musiał zrobić, czyli zakończyć przygodę z Bascom'em - przynajmniej do takich rzeczy i pomordować Arduino. Choć nawet fajnie się w tym pisze t.j. prosto. Czego się nauczyłem to moje, dopóki nie zapomnę. :D

Btw. napisałem prosty programik dla znajomego typu: ustaw czas1 ustaw czas2 i w zależności od tego co pojawi się na wejściach i w którym momencie załącz/wyłącz przekaźnik. Zrobiony na waitach w "forach" bez przerwań i co ciekawe jest dość punktualny nawet przy kilkudziesięciu minutach.

z takim algorytmem życzę powodzenia.
Dzięki. ;D

P.S.
Może ktoś podrzuci linka do jakiegoś sensownego/sprawdzonego kursu Arduino?
Najlepiej dla "opornych". ;D
« Ostatnia zmiana: 24 Maja 2017, 22:57 wysłana przez Term »

Offline hobocti77x

  • Level 5
  • *****
  • Wiadomości: 731
Re: Konwerter klawiatury AT PS/2 dla C64
« Odpowiedź #16 dnia: 25 Maja 2017, 11:22 »

Do : Loop until Kx=0
Rzedy=rzad
Do : loop until Kx=1
Rzedy = 255

Choć waity raczej "szybciej chodzą" i tylko wystarczy "wyregulować" długość.
Regulacja dlugosci nie wystarczy.
A czy ten kod nie powinien wygladac tak:
Do Rzedy=rzad Loop until Kx=0
Rzedy = 255


Offline Term

  • Level 1
  • *
  • Wiadomości: 49
Re: Konwerter klawiatury AT PS/2 dla C64
« Odpowiedź #17 dnia: 25 Maja 2017, 13:03 »

Do Rzedy=rzad Loop until Kx=0
Rzedy = 255


Wtedy będzie ustawiał 0 na wybranym rzędzie do momentu, gdy na Kx nie będzie 0 (wybrana kolumna). Czyli pozostałe skanowane przez CIA kolumny też dostaną 0 na danym rzędzie - mylę się?

Btw. Jednorazowa zmiana stanu wystarczy, na zapętleniu z ciągłym wpisywaniem stanu procek raczej będzie wykonywał więcej rozkazów. Chyba, że interpreter inaczej interpretuje niż myślę i będzie odwrotnie. :D

Offline Term

  • Level 1
  • *
  • Wiadomości: 49
Re: Konwerter klawiatury AT PS/2 dla C64
« Odpowiedź #18 dnia: 25 Maja 2017, 21:21 »
Dzięki  @hobocti77x - dałeś mi do myślenia! Rzeczywiście kod powinien wyglądać inaczej, choć nie we wskazanej przez Ciebie części. :D

Zrobiłem głupiego babola na samym początku i tak go woziłem do dziś: stan pinka odczytujemy z rejestru PINX.Y nie PORTX.Y. :facepalm:
Czyli powinno być:
'Kol.0 Alias 0 'to kolumna zadna z powyzszych
K1 Alias Pind.6
K2 Alias Pind.5
K3 Alias Pind.2
K4 Alias Pind.0
K5 Alias Pind.1
K6 Alias Pina.1
K7 Alias Pina.0
(przy okazji przeniosłem RESET)

Waity jednak nie mają znaczenia, bo:
Select Case Nk

  Case 0

  Do : Loop Until K7 = 0
'  Do : Loop Until K7 = 1
Waitus 300
  Rzedy = Rzad
  Waitms 19                                                 '!thats it! :D
  Rzedy = 255

  Case 1
  Do : Loop Until K1 = 0
'Waitus 10
  Rzedy = Rzad
Waitus 270                                                  '!thats it! :D
  Rzedy = 255

  Case 2
  Do : Loop Until K2 = 0
   Rzedy = Rzad
  Do : Loop Until K2 = 1
 Do : Loop Until K2 = 0
Do : Loop Until K2 = 1

  Case 3
  Do : Loop Until K3 = 0
   Rzedy = Rzad
  Do : Loop Until K3 = 1
 Do : Loop Until K3 = 0
Do : Loop Until K3 = 1

  Case 4
  Do : Loop Until K4 = 0
   Rzedy = Rzad
  Do : Loop Until K4 = 1
 Do : Loop Until K4 = 0
Do : Loop Until K4 = 1

  Case 5
   Do : Loop Until K5 = 0
   Rzedy = Rzad
  Do : Loop Until K5 = 1
 Do : Loop Until K5 = 0
Do : Loop Until K5 = 1

  Case 6
   Do : Loop Until K6 = 0
   Rzedy = Rzad
  Do : Loop Until K6 = 1
 Do : Loop Until K6 = 0
Do : Loop Until K6 = 1

  Case 7
  Do : Loop Until K7 = 0
   Rzedy = Rzad
  Do : Loop Until K7 = 1
 Do : Loop Until K7 = 0
Do : Loop Until K7 = 1

  Case 255 And Nr = 0
   Rest = 0
  Waitus 50
    Rest = 1

 End Select


 'Waitms 2
    Rzedy = 255

    Loop
Case 1 - działa na waicie, a Case 2 ... 7 na odczycie stanu kolumnyX (dzięki kol.@rs2322) - wszystko trybi.
Case 0 (kolumna A) zrobiona dziwnie (ale działa) - bo czy CIA czyta kolumny od A do H, czy H do A, czy B do H, A wybierając w momencie gdy dłużej "wisi" stan 0 na którymś wierszu?

P.S.
Została jeszcze przynajmniej obsługa SHIFTA do zrobienia. Raczej ciężko będzie zrobić wybieranie kilku znaków (po kompilatorze bascoma braknie miejsca w Tince;P) - muszę nad tym pomyśleć.
« Ostatnia zmiana: 25 Maja 2017, 21:28 wysłana przez Term »

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
Re: Konwerter klawiatury AT PS/2 dla C64
« Odpowiedź #19 dnia: 25 Maja 2017, 22:00 »
E93A: 8D 00 DC  STA $DC00
E93D: AD 01 DC  LDA $DC01

proponuje jeszcze tak z 3 strony napisać ale bardziej na elektrodzie bo brednie to są dobre dla moderatorów.
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Offline Term

  • Level 1
  • *
  • Wiadomości: 49
Re: Konwerter klawiatury AT PS/2 dla C64
« Odpowiedź #20 dnia: 25 Maja 2017, 22:25 »
E93A: 8D 00 DC  STA $DC00
E93D: AD 01 DC  LDA $DC01

proponuje jeszcze tak z 3 strony napisać ale bardziej na elektrodzie bo brednie to są dobre dla moderatorów.

W sumie racja.

Do zamknięcia, więcej raczej się nie dowiem.
Dzięki za pomoc i pozdrawiam. :)