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
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
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.
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
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.
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.
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
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.
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
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
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
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.
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
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
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.