Atmega32 oder Raspberry

OP #4090661
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!
#4090685
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.
#4090913
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.
Gast #4166643
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
Gast #4166647
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren