Forum: Mikrocontroller und Digitale Elektronik Atmega32 oder Raspberry


von J. W. (ontheway)


Lesenswert?

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!

von Marcus P. (marc2100)


Lesenswert?

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.

von Christian K. (the_kirsch)


Lesenswert?

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.

von Pete K. (pete77)


Lesenswert?

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.

von Oliver R. (orb)


Lesenswert?

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.

von Oliver S. (phetty)


Lesenswert?

ich werfe mal den Hype-uC in die Runde: ESP8266.

WlAN statt Ethernet und einige GPIOs. um die 5 Euro.

von Pandur S. (jetztnicht)


Lesenswert?

Wenn man bei den AVR etwas mehr IO wuenscht geht man mit dem Gehaeuse 
hoch. zB Mega645 im TQFP64 Gehaeuse.

von Lothar (Gast)


Lesenswert?

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

von ??? (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.