Beim Scanner kommen die Daten als relativ schnelles Paket. Dafür hat der PC einen entsprechenden FIFO-Buffer. Wenn Du direkt am Seriellen oder I2C Port des AVR hängst wirst Du die Daten nicht schnell genug aus dem Buffer kriegen und diese dann wahrscheinlich überschreiben. Üblicherweise mußt Du nach dem 1. Interrupt am Port pollen und die Daten abholen da eine Interruptserviceroutine zu langsam ist. Bei der Tastatur kommen inkl. Frame nur 10 Bit pro Tastendruck. Bei eine Scanner 640 Bit je Scan. Ich würde dem Port einen Hardware Fifo-Buffer von 1k vorschalten und sequentiell auslesen.
Hast Du in C oder Assembler geprogt ?
Gruß Hartmut