Страница 2 из 2

Re: Atmega8 и клавиатура PS/2

Добавлено: Чт фев 23, 2012 09:52:25
svs39
MyXaSA писал(а):

Коты, вы вроде все мозговитые тут, кто-то полюбому клаву подключал к МК.... help работа встала!!! :( :(
запускал давно по классике- сайтa atmel - avr313 - DOC1235.PDF (-keybord). Запускается, а потом делаеш под себя

Re: Atmega8 и клавиатура PS/2

Добавлено: Чт фев 23, 2012 15:45:43
Jack_A
svs39 писал(а): Запускается, а потом делаеш под себя
Ну зачем же так мрачно :)

Re: Atmega8 и клавиатура PS/2

Добавлено: Пт фев 24, 2012 08:03:35
uk8amk
MyXaSA, убедитесь, что у вас корректно работает функция приема байта ISR(INT0_vect). Здесь либо отладчиком(но у М8 нет отладочных интерфейсов, поэтому можно взять М16 например - у нее есть JTAG хотя бы), либо как сказали выше юзайте UART и кидайте полученные скан-коды в терминалку. Типа этого:

Код: Выделить всё

ISR(INT0_vect)
{
   static uint8_t DATA;
   if(!edge)
   {
      if(bitcnt < 11 && bitcnt > 2)
      {
         DATA = (DATA >> 1);
         if(PINC && (1<<DAT))
         {
            DATA |= 0x80;
         }
      }
   MCUCR = 3;
   edge = 1;
   }
   else
   {
      MCUCR = 2;
      edge = 0;
      if(--bitcnt == 0)
      {
         uart_putchar(DATA);//вот здесь помещаем полученный байт в буфер на передачу
         bitcnt = 11;
      }
   }
} 
Но вывод в UART должен быть буферизован(типа кольцевого буфера) и управляться только прерыванием(UART_TXC) т.к. нельзя "вешать" прерывание INT0, получающее биты от клавы. Т.е. стандартный putchar() из stdio.h скорее всего не проканает. Далее, когда вы увидите что функция приема работает безошибочно, тогда приступите к отладке механизма дешифрации скан-кодов.