Hallo Leute, ich bin mir nicht sicher, ob ihr mir helfen könnt bzw. ob ich hier überhaupt richtig bin. Aber Fragen kostet bekanntlich nichts. Ich bin auf der Suche nach einem Experiment. Und zwar geht es ganz einfach darum, die Geschwindigkeitsunterschiede zwischen Mikrocontroller (bzw. Arduino) und dem RPi (GPIO Pins) zu veranschaulichen. Es sollte ein Experiment sein, welches so einfach wie möglich, aber eben mit beiden Geräten durchzuführen ist. Da ich fast keinerlei Kenntnisse habe, habe ich mich hier ein wenig belesen ;) Es wird in anderen Threads ja davor gewarnt, bei Echtzeitmessungen den RPi zu benutzen und doch lieber einen Arduino zu verwenden. Vielleicht wäre das eine Heransgehensweise. Ich möchte nämlich genau das mit dem Experiment zeigen: das für Echtzeitmessungen ein Mikrocontroller entscheidend vorteilhafter ist. Habt ihr da andere Ideen? Oder habt ihr schon mal so etwas Ähnliches gemacht?
>Ich bin auf der Suche nach einem Experiment. Und zwar geht es ganz >einfach darum, die Geschwindigkeitsunterschiede zwischen Mikrocontroller >(bzw. Arduino) und dem RPi (GPIO Pins) zu veranschaulichen. Dazu braucht es kein Experiment. Der gesunde Menschenverstand reicht völlig aus.
Kann man machen. Ein Simpelprogramm, das mit maximaler Geschwindigkeit einen I/O-Pin invertiert, und ein Oszilloskop oder Frequenzzähler, mit dem die erzielte Frequenz gemessen wird. Für den pi hat das hier jemand mit verschiedenen Programmiersprachen/Ansätzen schon mal gemacht: http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/ Das ist nicht sehr aussagekräftig, denn das Kernproblem liegt an anderer Stelle - auf dem Pi läuft üblicherweise ein Betriebssystem, das einem Prozess nur endlich viel Rechenzeit zugesteht, und das vor allem unterschiedlich viel Zeit benötigt, um auf externe Ereignisse zu reagieren - das nennt man mangelnde "Echtzeitfähigkeit".
Du vergleichst Äpfel und Birnen. Definiere doch bitte erstmal Echtzeit... und dann auch noch, ob es harte, oder weiche Echtzeit sein soll... Es kommt immer auf die Anforderungen an. Je nach Anforderung kann sogar ein x86-Prozessor mit Windows echtzeitfähig sein. Der Unterschied zwischen RPi (ARM) und den Arduinos die auf AVR basieren: ARM (und auch x86) verwenden Piplining/Caching. Damit kannst du nicht mehr sagen, wie lange ein Befehl braucht, bis er abgearbeitet ist. Damit ist deine "echtzeit" schon in gefahr. Sowas hat ein AVR aber nicht, und wenn im Datenblatt steht, das Befehl XY einen Taktzyklus braucht, dann braucht dieser Befehl einen Taktzyklus. fertig. Da braucht es keine Experimente. Kann man alles tausendfach im Internet nachlesen. Wenn du aber doch mal den Unterschied sehen möchtest, schau dir das Video von TI zum Beaglebone an: https://youtu.be/plCYsbmMbmY Der 1GHz ARM-Core kann gerade mal alle 200ns am Pin wackeln, die 200MHz PRU alle 5ns. Zu sehen bei Minute 18:00
Hallo, ich stimme zu, dass es keines Experimentes bedarf, aber wie wäre es, von beiden ein Rechtecksignal erzeugen zu lassen, so schnell, wie es der RasPi schafft, und beide in einen Zähler einzuspeisen? Raspi rauf, μc runter oder zwei Zähler oder sowas? Oder die beiden Signale tiefpassfiltern und in ein Oszilloskop im x/y Modus einspeisen? Vielleicht passiert was interessantes durch die sich ändernde Frequenz und die driftende Phasendifferenz? Viele liebe Grüße Timm
Kaj schrieb: > Der 1GHz ARM-Core kann gerade mal alle 200ns am Pin wackeln Der im Pi anscheinend häufiger, wenn er es schafft, ein 22MHz-Rechteck zu erzeugen.
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.