> bitte konnt ihr mehr Erklärungen für die Antwörte geben.
Auf unüberlegt hingespuckte Fragen gibt es nunmal rotzige Antworten. Sie
sollen Dir sagen, dass Du Deine Frage schlecht formuliert hast und Dich
dazu erziehen, es beim nächsten mal besser zu machen.
Den AT90CAN128 kenne ich mangels Interesse an CAN nicht, ich vermute
aber, das ist ein Mega128 mit CAN-Erweiterung, also ein AVR. AVRs haben
aber keine echte Interrupt-Priorität, d.h. das Unterbrechen einer
laufenden ISR durch einen anderen (höher priorisierten) Interrupt ist
nicht vorgesehen. Es gibt zwar Möglichkeiten, in der ISR weitere
Interrupts zu erlauben, aber dazu muss man schon sehr genau wissen, was
man tut. Ich gehe deshalb nicht darauf ein.
Es wird Dir wohl nichts Anderes übrig bleiben, als Deine ISRs so kurz
wie möglich zu halten (Daten sichern und per Merker beim Hauptprogramm
anmelden) und die Verarbeitung der Daten in der Mainloop zu erledigen.
Da es Dir vorrangig um RX und TX geht, solltest Du Ringbuffer dafür
einrichten. Das schafft die Voraussetzung, die ISRs kurz halten zu
können und beschleunigt die Datentransfer-Zugriffe der Mainloop (bzw.
derer Routinen) sehr.
KH