Hi liebe Experten, ich habe mal eine ganz simple Frage und möchte um eure Einschätzung bitten. Eigentlich finde ich es total schön, dass man beim Raspberry Pi mit dem GPIO einen "internen" Controller programmieren kann. Ich würde es ja lieben, mit Python zu programmieren. Aber die Anzahl der IO-Pins ist ja nun wahrlich überschaubar. Außerdem komm ich etwas ins Schwitzen bei der Vorstetllung, dass Schaltungsfehler mir den Pi zerlegen während nach meiner begrenzten Erfahrung der Atmega einiges verzeiht - und wenn der in die ewigen Prozessorgründe fährt, tja (noch nie passiert!), dann setze ich nen neuen ein... Bevor ich die Frage gleich stelle, meine Vermutung bezüglich des Vergleichs: Raspberry: Ein echter Computer auf hoher Ebene. Also sehr komplexe Datenverarbeitung möglich. Hohe Taktfrequenz. Sehr sensibel, Fehler kann locker System zerstören. Sehr begrenzte Anzahl IO-Pins. Atmega: Ein Controller auf programmtechnisch niederer Ebene (Beispiel: Anwendung von komplizierten mathematischen Auswertungen nicht möglich/schwierig). Programmierung abstrakter, schwieriger. Mehr IO-Pins. Sehr robust gebaut. Zerstörung im worst case undramatisch. Kann man das so sagen? Könnt ihr mir Kriterien nennen, wann man eher zum Pi greift oder umgekehrt? Gibt es Ausschlusskriterien für Anwendungen? Danke!
Hi, das würde ich so pauschal nicht sagen, zumal die Programmierung des AVR's eher nicht abstrakt ist, im Gegenteil, du bist "näher" an der Hardware. Außerdem spielen die beiden auch in verschiedenen Preisklassen, so ein Pi kostet ca. 35,-, der Atmel (je nachdem 2,- bis 5,-). Dasselbe auch bei den IO-Pins, es gibt AVR's mit insgesamt 8 Pins, viel IO ist da nicht mehr über. Beim Pi muss man halt wegen der Spannung aufpassen, da der intern nur mit 3,3V läuft und nicht 5V tolerant ist, man aber die 5V USB-Spannung daneben hat, da kann natürlich im Eifer des Gefechts mal was schief gehen ;) Dann hast du natürlich recht, da tun einem 35€ mehr weh als 5€. Jeder hat halt für sich einen Einsatzzweck, was man dann im Einzelfall braucht, muss man halt selbst entscheiden. Es spricht ja auch nichts dagegen, beides zu Kombinieren, hier habe ich z.B. mal einen Projekt für ein Internetradio gesehen, mit PI und AVR.
Des weiteren, musst du dir überlagen, was hast du vor. Ein Linux-System ist nicht echtzeitfähig. Der Zugriff auf die GPIOs läuft über ein virtuelles Dateisystem, dahinter kommen dann die Kernel-Treiber, welche dann die richtigen Hardwareregister ansteuern. Es laufen viele Prozesse parallel, es ist nicht garantiert das dein Programm schnell genug wieder an die reihe kommt. Bei einem Microcontroller hast du kein Betriebssystem dazwischen und greift direkt auf die Hardwareregister zu. Du hast die komplette Kontrolle, da nicht irgend ein anderer Thread gerade den Prozessor blockiert. Um parallele Ausführungen musst du dich selbst (z. B. mittels Statemachine) kümmern. Auf einem Microprozessorsystem mit einem Betriebssystem wie Linux kannst du zwar die Pins nicht in garantierten µs ansteuern, hast aber andere Vorteile wie z. B. Netzwerk und Massenspeicher Unterstützung. Und um parallel Ausführungen kümmert sich der Scheduler. Auf vielen Microprozessorsystem kann man ein Echtzeitbetriebssystem installieren. Die Hardware des RPi wird komplette von RTOS unterstützt. RTOS bietet auch Netzwerk und Massenspeicher Unterstützung und bietet Parallelisierung. Der Scheduler garantiert deinem Programm aber eine minderst CPU-Zeit und eine maximale Unterbrechungszeit. Sodas zeitkritische Aufgaben umgesetzt werden können.
Also ich nehme den Raspi, wenn ich etwas mit Ethernet machen möchte (Sensoren auslesen und Daten in eine Datenbank schreiben z.B.). Das Thema Ethernet auf einem µC ist eine Herausforderung (zumindest für mich), auf dem Raspi wird das fertig mitgeliefert.
J. W. schrieb: > Aber die Anzahl der IO-Pins ist ja > nun wahrlich überschaubar Dadurch, daß auch SPI und I2C verfügbar ist, kannst Du die mit Portbausteinen fast beliebig erhöhen. Die würden dann auch einen gewissen Schutz für den Pi bieten.
ich werfe mal den Hype-uC in die Runde: ESP8266. WlAN statt Ethernet und einige GPIOs. um die 5 Euro.
Wenn man bei den AVR etwas mehr IO wuenscht geht man mit dem Gehaeuse hoch. zB Mega645 im TQFP64 Gehaeuse.
Christian K. schrieb: > Bei einem Microcontroller hast du kein Betriebssystem dazwischen und > greift direkt auf die Hardwareregister zu. Kann man beim Raspberry genauso machen, dann auch in Echtzeit: .gpiobase EQUD 0x20200000 ; GPIO base address .pin_set LDR R1, gpiobase MOV R0, #1 LSL R0, #pin STR R0, [R1, #0x1C] ; store GPSET0 (offset 0x1C to base address) Oder direkt im Kernel aufrufen: bcm2835_gpio_set(struct gpio_chip *chip, unsigned offset, int value) http://docs.huihoo.com/doxygen/linux/kernel/3.7/pinctrl-bcm2835_8c_source.html
hEXEn schrieb im Beitrag #4166608: > Oliver Stellebaum schrieb: >> ich werfe mal den Hype-uC in die Runde: ESP8266. >> >> WlAN statt Ethernet und einige GPIOs. um die 5 Euro. > > wenn ich aber plötzlich nen fahrbaren roboter will den ich per web > steuer wird das mit webcam-video übertragung ein wenig unmöglich. Dann kommt er mit den 8bit AVR auch nicht weit und die Frage erübrigt sich.
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.