100 kHz-Clock mit ATMega (16MHz) noch verarbeitbar?
Hi.
Hab hier nen ATMega2560 auf 16MHz.
Ich versuche gerade, Daten zu empfangen und Auszuwerten, die auf 3 Pins ankommen und mit 100 kHz auf einem Interrupt-Pin getaktet werden (digitaler Joystick)
Rechnerisch heisst das ja, dass für jeden Interrupt dann nur 160 Zyklen zur Verfügung stehen.
Die Tatsache, dass statt der erwarteten 48 Datenbits nur ca 20 ankommen, lässt mich vermuten, dass die 160 Zyklen aber nicht zu reichen scheinen.
Hier der Code der ISR vom Interrupt 3; jeweils 3 Datenbits (Triplett) an PINA1-3 werden eingelesen, an js_inbits angehängt und das ganze dann 3 Bit nach links verschoben.
Code:
SIGNAL (SIG_INTERRUPT3)
{
js_inbits |= ((PINA & 0x0E) >> 1);
js_inbits = (js_inbits << 3);
js_bitcount++;
}
Gibts da noch irgendwelche Tricks oder reichen die 16MHz einfach nicht?
mfg