Hallo, nehmen wir mal an, ich programmiere einen Ethernet/CAN-Messgerät ,und ich sende ein Start-Paket(über Ethernet) um die CAN-Messung zu starten, während CAN gestartet ist trifft noch eine Ethernet-Paket vor, diesmal um die Messung zu stoppen, wird dieses paket bearbeitet oder ist der Controller mit CAN-Daten beschäftigt, und erst wenn es keine CAN-Daten vorliegen(keine Receive Interrupts), dann wird das Paket bearbeitet ? wie ist das eigentlich? Vielen Dank. PS.:Ich möchte das später mit einem LPC-uC realisieren, ich bin jetzt in der Plannungsphase
Das ist abhängig davon wie du programmierst. Bei einem Pollingbetrieb im Programm ist es sehr wahrscheinlich, dass du dich auf einer Schnittstelle blockierst. Bei einem Interruptbetrieb im Programm sollte es möglich sein, die Aufgaben am CAN-Bus und über Ethernet annähernd gleichzeitig abzuarbeiten.
Kannst du bitte erklären was mit Polling- und Interruptbetrieb meinst, vielen Dank.
Polling bedeutet, dass du an bestimmten Stellen im Programm eine Aktion mit der Schnittstelle ausführst. Interrupt bedeutet, wenn etwas empfangen wird oder gesendet werden soll, wird eine entsprechende Interrupt-Routine automatisch vom µC aufgerufen, die das macht (die Routine muss natürlich auch programmiert werden). Vorteil des Pollings ist, dass es einfacher ist, aber nicht flexibel, weil du nur an bestimmten Stellen des Programms prüfst, ob etwas mit der Schnittstelle getan werden muss. Beim Interrupt-Betrieb unterbricht der µC selbstständig das Programm, und führt die Interrupt-Routine aus, wenn es nötig ist. Vorteil ist, dass quasi zu jedem beliebigen Zeitpunkt auf ein Ereignis reagiert werden kann. Allerdings ist die Programmierung von Interrupts etwas aufwendiger. Ralf
Vielen Dank für die Erklärung. Aber wie ist das In Interruptbetrieb, wenn die CAN-Daten eintreffen (Receive Interrupt),und danach Eternet-Daten vorliegen, wie wird das behandelt?
Vielen Dank für die Erklärung. Aber wie ist das in Interruptbetrieb, wenn die CAN-Daten eintreffen (CAN-Receive Interrupt),und danach Eternet-Daten(Ethenet-Receive Interrupt) vorliegen, wie wird das behandelt? und wenn gleich in die Ethernet-ISR gesprungen wird, was passiert dann mit den CAN-Daten die dazwischen reinkommen? Sorry wenn zu viel Frage.
Die letzte Frage ist entscheidend für die Planung meines zukünftigen Projekts, ich bin sehr dankbar jeden Hinweis.
Es passiert das was du planst das passieren soll. Sorry aber mit so wenig Angaben kann man keine vernünftigere Auskunft geben. Prämisse: Ausser in einem Multiprozessor Kern, kann ein Prozessor immer nur eine Aufgabe zur gleichen Zeit ausführen. Der Prozessor kann allerdings in sehr kurzen Zeitintervallen von einer Aufgabe zu einer anderen wechseln, sodaß der Eindruck der Gleichzeitigkeit entsteht. Wie das konkret aussieht, hängt von zuvielen (unbekannten) Faktoren in deiner Anfrage ab. Da erhebt sich zb. die Frage: Kann dein Ethernet/CAN Hardware überhaupt einen Interrupt ausführen? Wenn die Hardware ein Paket zum Versenden bekommen hat, schickt sie dann das Paket unter allen Umständen raus, oder kann die Hardware das mittendrinn abbrechen? Inwiefern kann die Hardware überhaupt eigenständig Nachrichten empfangen/senden und wie weit benötigt sie dazu Hilfe vom µC? ....
Uh, uh, uh... Da zerbricht sich mal wieder ein Blinder seinen Kopf über ein Gemälde...
@ Karl heinz Buchegger: Vielen Dank für deine Auskunft! Das Board womit ich das ganze realisieren will, sollte auf jedenfall einen Ethernet- und CAN-Contoller besitzen, sodass der uC nur zwischen den beiden kombiniert, bringt das was zur sache?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.