klawiatura szesnastkowa- problem

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
gwozdex
Użytkownik
Posty: 879
Rejestracja: 24 lut 2006, 10:04
Lokalizacja: Czechowice-Dziedzice
Kontakt:

klawiatura szesnastkowa- problem

Post autor: gwozdex » 22 sty 2008, 19:05

Witam!
Problem który opisuję dręczył mnie od dłuszego czasu więc ostatecznie postanowiłem go rozwiązać. Mianowicie napisałem program do obsługi tej klawiatury z wykorzystaniem przerwania generowaniego przez układy PCF ( od strony AVR podpięte pod Int0).
Procesor to ATMega162. Fragment kodu:

Kod: Zaznacz cały

$regfile = "m162def.dat"
$prog &HFF , &HEF , &HD9 , &HFB      ' generated. Take care that the chip supports all fuse bytes.
$crystal = 12000000
Config Lcd = 20 * 4
Config Portc = Output
Config Sda = Portd.5
Config Scl = Portd.4
Config I2cdelay = 2
Config Int0 = Low Level    'w procesorach mega to chyba jedyna opcja- przy innych nie działa
Enable Interrupts
Enable Int0
On Int0 Klawiatura
Declare sub Nr0
Declare Sub Nr15 

Do
Loop

Klawiatura:

I2creceive 113 , Value
  Select Case Value
    Case 254 : Nr0
    Case 253 : Nr1
    Case 251 : Nr2
    Case 247 : Nr3
    Case 239 : Nr4
    Case 223 : Nr5
    Case 191 : Nr6
    Case 127 : Nr7
  End Select
I2creceive 115 , Value
  Select Case Value
    Case 254 : Nr8
    Case 253 : Nr9
    Case 251 : Nr10
    Case 247 : Nr11
    Case 239 : Nr12
    Case 223 : Nr13
    Case 191 : Nr14
    Case 127 : Nr15
  End Select
Return          
Prblem polega na tym ze procedury nie sa wywoływane za każdym razem, lub są wywoływane wielokrotnie podczas jednego przyciśnięcia przycisku (co jest normalnym zjawiskiem przy aktywnym niskim poziomie wywołania przerwania). Skończyły mi się pomysły jak rozwiązać ten problem. chciałbym uzyskac 100% pewność reakcji..
Dziekuję za poświęcony czas i pozdrawiam! gwozdex

ODPOWIEDZ