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
:
Bearbeitet durch User
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.
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.
Die Geschwindigkeit einer Anwendung hängt zum Großteil von der Programmgestaltung ab und nur ein ganz klein wenig von den MHz der CPU.
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
:
Bearbeitet durch User
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.