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 Dziekuję za poświęcony czas i pozdrawiam! gwozdex