Forum: Mikrocontroller und Digitale Elektronik AVR vs ARM Lohnt ein Umsteigen


von Delay (Gast)


Lesenswert?

Hallo lieben Member,

ich bin zur Zeit sehr mit der Materie uC beschäftigt und benutze zur 
Zeit den Mega8 und programmiere diesen in C++.
Was könnten gute Gründe sein, um von den AVRs auf ARM umzusteigen??? 
Werden die anders programmiert? Sind einfacher in der handhabung? 
Leichter oder schwerer aufzubauende Grundbeschaltung? Befehlssatz, 
Fähigkeiten?  Programmierbarkeit in C++ wie die AVRs? Schnittstellen 
(auch zum Prrgammieren?) Sind die Features wie ADC, UART, TIMER, 
SLEEPFunktionen etc auch bei den ARMs enthalten?

Würde mich über jede Antwort freuen
Delay

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Delay wrote:
> Hallo lieben Member,
>
> ich bin zur Zeit sehr mit der Materie uC beschäftigt und benutze zur
> Zeit den Mega8 und programmiere diesen in C++.
> Was könnten gute Gründe sein, um von den AVRs auf ARM umzusteigen???

Die Gruende koennten sein dass man Projekte entwickelt die so 
umfangreich sind dass ein AVR nicht mehr ausreicht. Aber wenn Du schon 
so fragst wuerde ich sagen dass Du dort lange noch nicht bist -- ich 
uebrigens auch nicht. Ich denke auch dass fuer meine Zwecke 
wahrscheinlich selbst der kommende XMega schon kaum mehr auszureizen 
sein wird.

Komplexere Architektur bringt natuerlich auch mehr Aufwand in Aufbau und 
Programmierung mit sich, das ist klar, was?

Gruss,
Michael

von sadi (Gast)


Lesenswert?

ARM's sind 16 oder/und 32 Bit Prozessoren. Wenn du viel mit 32 Bit 
zahlen anstellen musst und das in einer kürzesten Zeit, würde ich zum 
ARM greifen, um über USART 2 Byte/h zu übertragen, reicht auch ein 
Atmega. Wenn du basteln willst ist ein Atmega in der DIP Ausführung auch 
um einiges leichter zu handhaben. Vom Preis her sind die ARMs nicht 
teurer als größere Atmegas wie Atmega128,Atmega2561 etc. Wie gesagt, es 
kommt drauf an, was man machen möchte.

von Falk B. (falk)


Lesenswert?

@  Delay (Gast)

>ich bin zur Zeit sehr mit der Materie uC beschäftigt und benutze zur
>Zeit den Mega8 und programmiere diesen in C++.

C++? Wohl eher C. C++ ist wenig sinnvoll auf einem AVR.

>Was könnten gute Gründe sein, um von den AVRs auf ARM umzusteigen???

Mehr Speicher, höherer Takt, mehr Datenurchsatz, mehr Pins, mehr 
Schnittstellen . . .

>Werden die anders programmiert?

Prinzipiell nicht.

> Sind einfacher in der handhabung?

Nein. Aber auch nicht extrem schwerer.

>Leichter oder schwerer aufzubauende Grundbeschaltung?

Ähnlich.

[8Entwicklungsboard mit AT91SAM7Sxxx - selbstgemacht]]

> Befehlssatz,
>Fähigkeiten?

Mehr.

>  Programmierbarkeit in C++ wie die AVRs?

Mehr.

>(auch zum Prrgammieren?) Sind die Features wie ADC, UART, TIMER,
>SLEEPFunktionen etc auch bei den ARMs enthalten?

Logisch!

MfG
Falk

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wenn man AVRs gewohnt ist und mehr Performance braucht, ist der kommende 
XMega in der Tat eine Alternative, bevor man die Plattform komplett 
wechselt.

von Andreas K. (a-k)


Lesenswert?

Der Haken an den ARMs ist der Einstieg, besonders wenn man von AVR 
gewohnt ist nichts für Software zahlen zu müssen. WinARM/Yagarto ist ein 
prima Paket, aber mancher braucht für das Verständnis von Startup-Code 
und Linkerscripten länger als ihm lieb ist. Bei AVR entfällt das, bei 
ARM nur im Rahmen kommerzieller Umgebungen.

Für sparsamen Batteriebetrieb sind ARMs übrigens nicht wirklich 
geschaffen. Klar gibt es Sleep-Modi, aber zwischen AVR und den diversen 
ARM-Familien klaffen in der Hinsicht Welten. Zumal die durchweg 
mindestens saubere 3,3V haben wollen, also ohne Regler wie bei AVRs 
möglich geht nichts.

von Andreas K. (a-k)


Lesenswert?

sadi wrote:

> ARM's sind 16 oder/und 32 Bit Prozessoren.

Ein 16bit ARM ist mir noch nicht begegnet. Wenn du Thumb damit meinst - 
ein 32bit Prozessor mit 16bit Codebreite bleibt ein 32bit Prozessor. 
AVRs sind ja auch nicht 16bittig und die PIC16 nicht 14bittig.

Neben der breiteren Datenverarbeitung spielt auch die Adressierfähigkeit 
eine wichtige Rolle. Mehr als 60KB Daten zu verarbeiten - egal ob in RAM 
oder ROM - wird bei AVRs umständlich, die XMegas eingeschlossen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Der XMega mag auch nur noch maximal 3.6V, läuft aber auch schon ab 1.7V.

von Stefan (Gast)


Lesenswert?

>C++? Wohl eher C. C++ ist wenig sinnvoll auf einem AVR.

Woher kommt nur dieser Schmarrn ?
Durch Verwendung von C++ spare ich viel Zeit und erhalte deutlich 
kompakteren und übersichtlicheren Code. Auch die 
Codewiederverwendbarkeit wird deutlich erhöht. So habe ich u.a. eine 
einfache Scheduler-Klasse, von der ich meine einzelnen "Tasks" ableite. 
Im Handumdrehen ist ein solcher erzeugt / hinzugefügt. Bei "etwas 
größeren" Sachen (z.B. Mega16 mit LCD und Tastatur) kann man mit einem 
objektorientiertem Ansatz sehr kompakt die Menüführung implementieren. 
Die Praxis zeigt dass sich so sogar noch etwas Flash sparen lässt, was 
allerdings (geringfügig) etwas zu Lasten der RAM geht.

Stefan

von Harald (Gast)


Lesenswert?

... sparsamen Batteriebetrieb sind ARMs übrigens nicht wirklich
geschaffen ...

Dies ist ein Wischi-Waschi 'nicht wirklich' Satz. Und großer Quatsch!

von Anglizissmenübersetzer (Gast)


Lesenswert?

"nicht wirklich" -> "eigentlich nicht"

"Performance" -> "Effizienz", "Durchsatz"

Wenn ich schon beim Thema bin, der Oberknaller neulich war "thermaler 
Stress". Aua. Aber nun genug "Offtopic" -> "abseits des Themas".

von Andreas K. (a-k)


Lesenswert?

Harald wrote:

> Und großer Quatsch!

ATMega644P Power-Save mit RTC Osc: 0.6µA
LPC2368 Äquivalent dazu: I(Bat) 28µA, I(3,3V) 150µA.
LM3S611 alles abgeschaltet im Deep Sleep: ~1mA.

Natürlich kann man das auch mit Batterie machen. Wirklich sparsam ist 
das jedoch nicht. Es mag aber bessere Typen geben.

von Andreas K. (a-k)


Lesenswert?

Anglizissmenübersetzer wrote:

> Wenn ich schon beim Thema bin, der Oberknaller neulich war "thermaler
> Stress".

Kette dich mal an einem gut befeuerten Ofen fest - dann weisst du was 
thermaler Stress ist. ;-) Und wenn du solche Töne spuckst, solltest du 
wenigstens den Anglizismus richtig schreiben.

von Anglizismenübersetzer (Gast)


Lesenswert?

>Kette dich mal an einem gut befeuerten Ofen fest
...aber das wäre doch dann "thermischer Stress", nicht "thermaler 
Stress" :-)

>Und wenn du solche Töne spuckst, solltest du wenigstens den Anglizismus
Was haben nun sinnlose und schmerzhafte Anglizismen mit der deutschen 
Rechtschreibung zu tun ? Das sind zwei verschiedene Themen. Ich habe 
weder behauptet die deutsche Rechtschreibung perfekt zu beherrschen, 
noch alles besser zu wissen und bedanke mich abschließend für die 
Verbesserung, die ich hiermit gleich habe einfließen lassen, und für das 
hübsche Bildnis mit dem ofen. :-)

Gruß

von let (Gast)


Lesenswert?

> Es mag aber bessere Typen geben.

Allerdings:
Der STM32F103: 3.5µA im Standby mit Watchdog + 1.4µA für RTC.
Bei 8MHz stehen ~3mA (AVR) gegen ~11mA (STM32).
Bei 72MHz: -- gegen 63mA.

von Andreas K. (a-k)


Lesenswert?

Anglizismenübersetzer wrote:

> ...aber das wäre doch dann "thermischer Stress", nicht "thermaler
> Stress" :-)

Duden: "ther|mal <Adj.> [(engl., frz. thermal) zu griech. thérmē, 
→Therme] (selten): 1.  durch Wärme bewirkt, ...".

von Robert Teufel (Gast)


Lesenswert?

Da gaebe es auch noch den uC3 basierend auf der AVR32 architektur. Die 
bietet uebrigens bei bei voller Geschwindigkeit einen Stromverbrauch von 
23 mAs.
Also fuer einen 32-bit Controller eine ausgezeichnete Leistung.
Es sei auch noch gesagt, dass ein AVR(8) bei z.B. 10 MHz fuer 
Rechenanwendungen VIEL weniger Rechenleistung bringt als ein AVR32 bei 2 
MHz. Also das mit Power sollte immer in 2 Betriebsarten angesehen 
werden, im aktiven Betrieb mit angestrebter Rechenleistung und im 
Ruhebetrieb. Grundsaetzlich haben fast alle 8-bit Controller sher gute 
Ruhestroeme wogegen sie im aktiven Betrieb nur dann mit 32-bit 
Controllern strommaessig mithalten koennen, wenn es um "bit-schupsen" 
geht.

Brauchste Rechenpower, dann musste wahrscheinlich vom AVR8 umsteigen, ob 
das auf den XMEGA, den ARM, den Cortex oder den AVR32 ist, bleibt den 
Anforderungen vorbehalten. Der einfachste Umstieg waere zum XMEGA, dann 
AVR32, dann die ARM basierenden Typen.

Hoffe es hilft ein wenig, Robert

von Manfred (Gast)


Lesenswert?

Hallo allesamt,

hat schon wer darüber nachgedacht die Programmiersprache Java für den uC 
zu verwenden?

Oder ist Java in diesem Forum fehl am Platz?

Manfred

von Peter D. (peda)


Lesenswert?

Delay wrote:
> Was könnten gute Gründe sein, um von den AVRs auf ARM umzusteigen???

Die Frage, welche Anwendungen Du damit realisieren willst.
Für alle Arten von Steuerungen ist ein 8-Bitter dicke ausreichend.

Ein 32-Bitter lohnt sich erst bei massivem Rechenbedarf, z.B. Audio- 
oder Videobearbeitung. Oder bei sehr großen Datenmengen (SRAM >64kB).


> Sind einfacher in der handhabung?

Eindeutig nein.


> Leichter oder schwerer aufzubauende Grundbeschaltung?

Man sollte schon erstmal ne 8-Bit Applikation erfolgreich layoutet haben 
und stabil zum Laufen gebracht haben.
Als Anfänger sollte man für nen 32-Bitter mindestens 4 Layer nehmen.


Peter

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.