Zitat Zitat von malthy
Ich werde int0, int1, pcint0 und pcint1 verwenden. Die jeweils aufgerufenen ISRs sind reltiv kurz (< 5 µs @ 16 Mhz)
Hallo Malte,
dies wirst du mit den "normalen Interrupt-Routinen (also ohne Nosave) ganz sicher nicht hinbekommen. Eine leere ISR benötigt schon 110 Takte, bei 16MHz also ca. 7µs. Und wenn du dann noch bei den PCINTs selber auswerten musst, welcher es nun war, dauert es noch länger.

Zitat Zitat von malthy
Dass dieses Problem für die LCD-Ausgabe prinzipiell besteht, weiss ich, allerdings frage ich mich, ab welchen Unterbrechungsdauern der LCD-Routinen das ein Problem wird.
LCDs sind normalerweise unempfindlich gegen längere Zeiten und empfindlich gegen zu kurze. Wenn du das LCD also zu schnell aktualisierst, bekommt es Schluckauf. Zu langsam oder unterbrochen macht ihm viel weniger aus. Was da an das LCD geschickt wird, ist ja auch gar nicht so komplex. Am aufwändigsten ist es meistens, die einzelnen Zeichen von Textausgabe herzustellen.
Wenn du z.B. eine Single Variable mittels
LCD MySingle oder LCDAT MySingle
ausgeben willst, muss Bascom dazu zunächst mal die einzelnen Zeichen bestimmen, sprich es konvertiert die Single in einen String, der dann Zeichen für Zeichen ausgegeben werden kann.
Wenn du mehrere Signale hast, die mit Frequenzen von 5KHz reinkommen und du jedes über eine separate ISR laufen lässt, dann wird meiner Meinung nach die Gesamtzeit, die das Programm in den ISRs verbringt, zum eigentlichen Problem für die LCD Ausgabe werden.