Forum: Mikrocontroller und Digitale Elektronik Suche schnelleren Controller als ATmega328


von Markus (Gast)


Lesenswert?

Hallo,
ich suche einen Controller, der ähnlich wie die ATmega328 aussieht, 
jedoch um einiges schneller ist. Ich kenne mich leider noch nicht so gut 
in diesem Bereich aus, kann mir da jemand helfen?
Danke und viele Grüße,
Markus

von Peter R. (pnu)


Lesenswert?

Markus schrieb:
> der ähnlich wie die ATmega328 aussieht,

Was hat das Aussehen mit der Geschwindigkeit zu tun?

Markus schrieb:
> jedoch um einiges schneller ist

Da kann kaum jemand helfen.

Selbst innerhalb einer Kontrollerfamilie (z.B. die AVRs) ist die 
Ausstattung so verschieden, dass "bessere" Varianten höchstens bezüglich 
des Speicherumfangs findbar sind. Von der Geschwindigkeit sind sie wegen 
der Technologie (Größe der internen Schalter) nahezu gleich.

Bei andrer Kontrollerfamilie gehts vielleicht etwas schneller, aber 
dafür muss das Programm anders geschrieben sein.

Bei Programmiersprachen, die Hardwareüberschreitend sind, muss das 
Programm zwar nicht umgeschrieben werden, es ist aber meist um 
Größenordnungen langsamer als ein in Maschinensprache (Assembler) für 
den gleichen Zweck geschriebenes Programm.

Nicht der Kontroller bremst die Programmausführung sondern der 
Programmierer

: Bearbeitet durch User
von Markus (Gast)


Lesenswert?

Mit ähnlich mein ich die Anzahl der Pins und das Gehäuse usw..
Ich programmiere in C++, dann werde ich mich mal mit Assembler 
auseinandersetze.

von Max D. (max_d)


Lesenswert?

Was ist für dich schneller ?
Ein PC z.B. hat eine Rechenleistung im Bereich von GHz trotzdem wird er 
von jedem AVR beim Bit-Banging in die Tasche gesteckt. Du siehst also, 
dein "schneller" ist zu vage um die Empfehlungen machen zu können.

von Peter D. (peda)


Lesenswert?

Die Geschwindigkeit einer Anwendung hängt zum Großteil von der 
Programmgestaltung ab und nur ein ganz klein wenig von den MHz der CPU.

von Peter D. (peda)


Lesenswert?

Markus schrieb:
> Ich programmiere in C++, dann werde ich mich mal mit Assembler
> auseinandersetze.

Auch in Assembler kann man schnarch langsame Programme schreiben.
Ein stures Umschreiben in Assembler bringt garnichts.

Das geeignete Werkzeug heißt Profiling:

http://de.wikipedia.org/wiki/Profiler_%28Programmierung%29

von Rudolph (Gast)


Lesenswert?

Was ist überhaupt das Problem?
Vielleicht ist nur der Lösungsansatz falsch?

Und so gut muss man erstmal sein das man auf dem gleichen Lösungsweg den 
Compiler in der Ausführungsgeschwindigkeit schlägt.

von Ulrich H. (lurchi)


Lesenswert?

Um welche Gehäuseform geht es ? Bei der DIP40 Version hat man nicht so 
ganz viel Auswahl. Als SMD Form gibt es mehr Auswahl, allerdings wohl 
alle mit anderem Pinout - es bräuchte also auch eine andere Platine.

Je nach Problem ist es vielleicht auch nur eine Frage des Programms.

von Lothar (Gast)


Lesenswert?

Markus schrieb:
> ATmega328

Bei DIP28 würde auch der LPC1114 (fast) passen: 50MHz ARM M0 RC intern

von oldmax (Gast)


Lesenswert?

Hi
Die Diskussion, ob ein Controller zu langsam ist, kann ohne 
Hintergrundwissen überhaupt nicht bewertet werden. In der Regel sind 16 
MHz schon gewaltig fix, aber es gin´b tja auch 20 und drüber... nur, wo 
ist er zu langsam? Ich hab mir jetzt nicht das Datenblatt angesehen, 
aber was ist dein Problem? Ich glaub auch nicht, das ein Programm in 
Assembler viel fixer ist wie eines in C, es sei denn du hast da viel 
Mathematik reingepackt. Aber das läuft bei gleichen  Lösungsansätzen in 
Assembler eher noch langsamer.
Sag mal was du tun willst und zeig mal dein Programm. Ach ja, und wenns 
geheim ist, kann dir hier sowieso niemand helfen.
Gruß oldmax

von Simpel (Gast)


Lesenswert?

Markus schrieb:
> Ich kenne mich leider noch nicht so gut
> in diesem Bereich aus,

Dann ist es sehr unwahrscheinlich dass du einen ATM328 samt Code schon 
speedmäßig bis ans Limit ausgereizt hast. Z.B. logische Bitoperationen 
statt x-fach verschachtelte if-Konstrukte, Sprünge und Subroutinen 
verwenden, etc...

Beliebte Newcomerfehler sind auch Waits, Verzögerungsschleifen bzw. 
Code, der stoisch (Dauerpolling) wartet, oder in einem Programmabschnitt 
gefangen bleibt, bis ein irgendein Input getätigt wurde.

von San L. (zwillingsfreunde)


Lesenswert?

Peter Dannegger schrieb:
> Markus schrieb:
>> Ich programmiere in C++, dann werde ich mich mal mit Assembler
>> auseinandersetze.
>
> Auch in Assembler kann man schnarch langsame Programme schreiben.
> Ein stures Umschreiben in Assembler bringt garnichts.

In Assembler hat man aber Einblick auf jeden Einzelnen Arbeitsschritt 
des Controllers. Man kann sich genau berechnen, für welchen Teil des 
Programms wieviel Zeit in Anspruch genommen wird.

Bei C, geschweige den C++ ist dies nicht der Fall. Du hast zwar Zugriff 
auf den ASM Code, der ist aber nicht unbedingt immer hilfreich. Zudem 
sind Sprachen wie C oder ähnliche bekannt dafür, bei Zeitkritischen 
Anwendungen bem Benutzer gerne mal ein Bein zu stellen, weil einfach 
viel zu viele nicht wissen was Beispielsweise hinter einer Float 
Rechnung steckt. Sieht man ja hier im Forum immer wieder mal.

Markus schrieb:
> Ich kenne mich leider noch nicht so gut
> in diesem Bereich aus, kann mir da jemand helfen?

Wo liegt denn überhaupt das Problem? Womöglicherweise ist nicht der 
Controller zu langsam, sondern du gehst falsch an die Sache ran.

Gruss

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

San Lue schrieb:

> In Assembler hat man aber Einblick auf jeden Einzelnen Arbeitsschritt
> des Controllers. Man kann sich genau berechnen, für welchen Teil des
> Programms wieviel Zeit in Anspruch genommen wird.
Im Grunde ist einem erfahrenen Entwickler aber auch ungefähr bekannt, 
wie ein C-Compiler einen Code umsetzt. Im Zweifel kann man nachschauen. 
Meist stellt man fest, es wird nahezu optimal übersetzt.
Dieses Argument ist doch eher schwach.

> > Bei C, geschweige den C++ ist dies nicht der Fall. Du hast zwar Zugriff
> auf den ASM Code, der ist aber nicht unbedingt immer hilfreich. Zudem
> sind Sprachen wie C oder ähnliche bekannt dafür, bei Zeitkritischen
> Anwendungen bem Benutzer gerne mal ein Bein zu stellen, weil einfach
> viel zu viele nicht wissen was Beispielsweise hinter einer Float
> Rechnung steckt. Sieht man ja hier im Forum immer wieder mal.

Und daran ist nun wer schuld? Es ist ziemlich merkwürdig die Defizite 
eines unerfahrenen Programmierers auf die verwendete Sprache zu 
projizieren.

gruß cyblord

: Bearbeitet durch User
von oldmax (Gast)


Lesenswert?

Hi
Ein Blick ins Datenblatt 20 MHz, bei 2 Taktzyklen pro Befehl bis auf ein 
paar ausnahmen max 4 das sind im Schnitt 100 nSek. also 10000 Befehle in 
einer mSek. Selbst wenn das Ganze Programm nur aus RET besteht (4 
Taktzyklen) könnten in einer mSek. immer noch 5000 davon ausgeführt 
werden. Also sag schon, was solls werden, ein Signalprozessor?
Gruß oldmax

von Walter Tarpan (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Das geeignete Werkzeug heißt Profiling:

Hallo Peter,
"profiling" für AVR steht für mich auch schon lange auf der Themenliste- 
kennst Du da eine gute Quelle mit Methoden (am besten etwas, was über 
ein "beim Ein- und Austritt in eine Funktion mit einem Pin wackeln" 
hinausgeht) ?

Viele Grüße
W.T.

von Frank K. (fchk)


Lesenswert?

Markus schrieb:
> Hallo,
> ich suche einen Controller, der ähnlich wie die ATmega328 aussieht,
> jedoch um einiges schneller ist. Ich kenne mich leider noch nicht so gut
> in diesem Bereich aus, kann mir da jemand helfen?

PIC32MX250F128B

28 Pins, auch DIL
32 Bit, 50 MHz
128k Flash, 32k RAM
etc etc
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en557425

fchk

von San L. (zwillingsfreunde)


Lesenswert?

cyblord ---- schrieb:
> Im Grunde ist einem erfahrenen Entwickler aber auch ungefähr bekannt,
> wie ein C-Compiler einen Code umsetzt. Im Zweifel kann man nachschauen.
> Meist stellt man fest, es wird nahezu optimal übersetzt.
> Dieses Argument ist doch eher schwach.

Schwach finde ich dieses Argument keineswegs. Es stimmt, die meisten 
Entwickler wissen was ein Compiler mit dem Code macht. Nur, wo entnimmst 
du die Information dass der TO zu diesen gehört? Hast du endlich die 
Glaskugel gefunden, sie alle wollen?

cyblord ---- schrieb:
> Und daran ist nun wer schuld? Es ist ziemlich merkwürdig die Defizite
> eines unerfahrenen Programmierers auf die verwendete Sprache zu
> projizieren.

Ja was denn jetzt? :) Hat deine Glaskugel eine 50/50 Funktion eingebaut? 
Zuerst argumentierst du gegen mich indem du von erfahrenen 
Programmierern sprichst, keine 5 zeilen weiter ist der besagte 
Programmierer wieder unerfahren. Natürlich hängt sowas IMMER von der 
Erfahrung desjenigen ab, der Programmiert.

Ausserdem will ich hier nicht C oder C++ schlecht reden, gamz im 
Gegenteil. Ich programmiere selbst auch nurnoch in C.

Was ich aber sagen will, vielen ist nicht klar, was Beispielsweise 
hinter einem:
Resultat = (Variable * 3.41) / 7.38
steckt. Genau das ist ein "Nachteil" den C mit sich bringt. Klar ist es 
durchaus praktischer, so eine Rechnung mit einer Zeile erledigen zu 
können anstelle dafür ASM zu verwenden, da es schnell ziemlich viele 
Zeilen werden. Das Problem liegt dann eher darin, dass wenn UNERFAHRENE 
Programmierer eine solche Zeile schreiben, meist nicht wissen was sie da 
mit ihrem Controller anstellen und sich dann wundern, wieso eine Zeile 
Code auf einmal eine Verhältnissmäsig lange Zeit benötigt, bis sie 
ausgeführt wurde.

Zudem vermute ich anhand des Anfangsposts, dass der TO nicht sonderlich 
Erfahren mit uC's ist (Siehe seine Frage). Daher ist es also durchaus 
auch möglich, dass sein Programm lediglich von unsauberer Software 
verlangsamt wird.

Gebe zu, mein Beitrag hört sich evt. eher so an als würde ich für die 
Allgemeinheit sprechen, was ich eigentlich auch getan habe, allerdings 
war das ganz klar auf Unerfahrene Programmierer bezogen. Wer ein wenig 
Erfahrung hat, bringt diese Kenntnisse mit sich. Wer ein wenig Erfahrung 
hat, hätte es aber auch nicht nötig, solche Fragen zu stellen. Also 
bitte, dreh die Sätze die andere User schreiben nicht so um, dass du 
einfach alles schlecht reden kannst.

Gruss

von Cyblord -. (cyblord)


Lesenswert?

San Lue schrieb:

> Ja was denn jetzt? :) Hat deine Glaskugel eine 50/50 Funktion eingebaut?
> Zuerst argumentierst du gegen mich indem du von erfahrenen
> Programmierern sprichst, keine 5 zeilen weiter ist der besagte
> Programmierer wieder unerfahren.


Nein nein, DU sprichst vom unerfahrenen Programmierer. Aber ich sage, 
daran kann man eben nicht bestimmte Defizite der Sprache begründen. Ich 
gehe schon durchgehend von einem erfahrenen Entwickler aus.

> Gebe zu, mein Beitrag hört sich evt. eher so an als würde ich für die
> Allgemeinheit sprechen, was ich eigentlich auch getan habe, allerdings
> war das ganz klar auf Unerfahrene Programmierer bezogen.
Ok, verstanden.

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.