-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Schnelle Microcontroller?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    29.11.2007
    Alter
    29
    Beiträge
    66

    Schnelle Microcontroller?

    Anzeige

    Hi,

    nach meinen ersten Projekten mit den AVRs (ATMega Familie in Basic) frage ich mich, wie schnell eigentlich gängige und erschwingliche Microcontroller heute sind? Bei den ATMega's hört's bei 20Mhz auf, aber gibt es denn Welche, die mehr machen? Habt ihr damit schon Erfahrungen gemacht? Wie lassen die sich programmieren?

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die AVRs sind mit 20 MHz schon recht schnell. Es geht schneller z.B. mit ARM Controllern oder AVR32. Allerdings laufen die chips in der Regel dann mit 3.3 V oder weniger und die anforderungen an die Platine sind einiges höher.

    Die 20 MHz sind auch schon gar nicht so schlecht in der Geschwindigkeit. Eher kommt man da an die Grenzen mit dem RAM.

    Die ARM Controller und die meisten anderen 32 Bit Controller kann man über das JTAG interface programmieren. Als Programmiersprache hat man in der Regel C über eine Version von GCC und ggf. auch andere Compiler.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Wie schnell ein µC läuft ist genau betrachtet uninteressant.

    Interessant ist, wie schnell man die gewünschte Aufgabe(n) damit lösen kann, wieviel Energie er dabei verheizt, was er kostet, welche Peripherie er hat, ob hocheffiziente Compilersysteme für ihn verfügbar sind, etc.

    Die (interne und externe) Peripherie spielt eine wichtige Rolle: Wenn viel Float-Arithmetik zu machen ist, ist ein langsamerer µC, der eine FPU hat, durchaus einem merklich schnelleren überlegen, der das Float-Zeug per Software berechnen muss.

    Weiterer Aspekt ist zB der Speicher. Daß man den Speicherinhalt direkt zur Verfügung hat wie auf AVR, ist auf 32-Bit Boliden nicht mehr unbedingt gegeben. Es ist durchaus möglich, daß eine Speicher-Operation so lange dauert wie 20 Ganzzahl-Additionen.

    Auch Parallelisierung spielt eine Rolle. Wenn man einen Puffer per DMA an eine Schnittstelle geben kann und nicht für jedes einzelne Byte eine ISR bemühen muss, oder gar die Schnittstelle in Software realisieren muss, ist man deutlich schneller.

    Zum Thema Parallelisierung gehören auch die Instruktions-Pipelines modernen µC, in denen mehrere Befehle quasi gleichzeitig ausgeführt werden, falls sie nicht leerläuft. Leerlaufen kann sie bei Sprüngen oder lahmen Speicherzugriffen, daher legen moderne Compiler auf solche Hardwareeigenheiten und die dafür benötigten Optimierungen viel Wert, indem sie zB Werte vorladen, damit sie zum Zeitpunkt der Verwendung schon geladen sind, oder indem sie Sprünge durch geschickte Arithmetik ersetzen.

    Ein TriCore (wie er zB in PKW zum Einsartz kommt), kann bis 150 MHz getaktet werden. Solch hohe Taktraten werden üblicherweise aus einem externen Takt/Quarz via PLL erzeugt.

    Last not least spielt die Software eine ganz entscheidende Rolle, und welche Algorithmen und Verfahren verwendet werden.

    Insbesondere der effizienten Codeerzeugung durch einen Compiler kommt eine zentrale Bedeutung zu: der Compiler sortiert zB die Befehle so um, daß eine Pipiline optimal gefüllt wird und keine Lücken entstehen, und indem er viel andere, ausgefeilte Optimierungsstrategien anwendet.
    Disclaimer: none. Sue me.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Wenn ich mal zwei ganz konkrete Beispiele anführen darf...

    1. LPC2364 von NXP
    Das ist ein ARM7, der mit 72MHz läuft (durch den µC selbst per PLL generiert aus einem 24MHz Quarz). Bei der Programierung gibt es zwar etwas mehr zu beachten als bei z.B. einem AVR, aber die Unterschiede sind garnicht so groß wie man denkt.

    2. ADSP-BF535 von Analog Devices
    Ein mit 300MHz getakteter 16-Bit Festkomma DSP. Das Teil hat richtig Power, ist aber nochmal etwas komplexer als der ARM7 (und natürlich eher auf Signalverarbeitung ausgelegt).


    Mit beiden habe ich beruflich zu tun, und wenn ich einen für Hobbyprojekte empfehlen sollte wäre es der LPC, unter anderem weil er leicht erhältlich und günstig ist.
    So viele Treppen und so wenig Zeit!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    29.11.2007
    Alter
    29
    Beiträge
    66
    Hört sich sehr interessant an.
    Nur, bis ich an die Hardware gehe, sollte ich lieber mal meine Programmierkünste verbessern... Gerade die Aussicht, dass ich mit Basic irgendwann nicht mehr weiter komme, verstimmt mich etwas. Bisher komme ich nicht so ganz hinter die Logik der "C"- Programmiersprache

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.07.2006
    Ort
    Karlsruhe/München
    Alter
    27
    Beiträge
    587
    Also ich meine, der Atmel reicht schon für den Hausgebrauch. Wer Basic verwendet und dann sich beklagt, dass seine Programme zu langsam laufen: Selber schuld! Basic braucht für jeden Befehl bis zu 5-Mal so lange wie C: 2 Zyklen laden, 1 bearbeiten, 2 Zyklen speichern. Basic erledigt arbeitet immer mit RAM und kann nicht wie C nur mit Registern arbeiten. C sind es im Optimalfall 1 (und der tritt auch zu 90% im Hausgebrauch ein!
    Basic mag zwar einfach zu lernen sein, aber in meinen Augen, das Ding der verschwendischste Compiler der Welt. Und C ist wirklich nicht schwer. Manche Beklagen, dass es zu verschnorkelt wäre, ich persönlich finde aber, dass dies gerade die Sprache durch die Strichpunkte und Klammern übersichtlich und nachvollziehbar macht. Eben Logisch!
    (War das jetzt zu enthusiastisch?)

    Grüße
    Michael

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    So ein AVR mit 20 MHz ist von der Geschwindigkeit etwa 30 mal schneller als so ein alter Comodore C64, Apple II oder ähnliches. Das ist ähnlich wie die ersten Macs, Amiga oder ein 286er PC, wobei der Vergleich da aber stärker vom Problem anhängt.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    29.11.2007
    Alter
    29
    Beiträge
    66
    Bisher beklage ich mich auch nicht, ich hab noch keinen Microcontroller voll bekommen. Meine Programme sind bisher auch ausreichend schnell. Aber ich versuche natürlich mich zu verbessern und weiter zu kommen. Diese Frage war eher durch meine Neugier getrieben.

    Langsam wird's OT: Wer kennt denn Dummy-geeignete C-Tutorials?

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.380
    naja unser gehirn arbeitet auch nur im "kiloherz" bereich, es ist immer die peripherie, die architektur und der code der entscheidend ist

    wobei der Vergleich da aber stärker vom Problem anhängt.
    eben drum, so n atmel ist schon eher ne eierlegende wollmilchsau ohne beine, flügel, kopf und mist

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.12.2007
    Ort
    Hamburg
    Alter
    50
    Beiträge
    254
    Zitat Zitat von s.o.
    Also ich meine, der Atmel reicht schon für den Hausgebrauch. Wer Basic verwendet und dann sich beklagt, dass seine Programme zu langsam laufen: Selber schuld! Basic braucht für jeden Befehl bis zu 5-Mal so lange wie C: 2 Zyklen laden, 1 bearbeiten, 2 Zyklen speichern. Basic erledigt arbeitet immer mit RAM und kann nicht wie C nur mit Registern arbeiten. C sind es im Optimalfall 1 (und der tritt auch zu 90% im Hausgebrauch ein!
    Basic mag zwar einfach zu lernen sein, aber in meinen Augen, das Ding der verschwendischste Compiler der Welt. Und C ist wirklich nicht schwer. Manche Beklagen, dass es zu verschnorkelt wäre, ich persönlich finde aber, dass dies gerade die Sprache durch die Strichpunkte und Klammern übersichtlich und nachvollziehbar macht. Eben Logisch!
    (War das jetzt zu enthusiastisch?)

    Grüße
    Michael
    Hi Michael.
    Kann man so nicht sagen. Basic ist nicht gleich Basic und es gibt sehr schnelle und effiziente Basic-Compiler.
    Hierzu muß man schon den Basic-Compiler, ... nennen.
    Ich habe vor Urzeiten ein 3D-CAD-Programm auf dem C64 in
    Basic geschrieben.

    Aber noch wichtiger als die Programmiersprache ist der Code, den der Programmierende benutzt. Z.B. läßt sich ein Kreis auf mind. 9 verschiedene weisen berechnen und zeichnen/ausgeben.
    Da gibt es Performanceunterschiede von bis zu 1:1000
    Im Forum war ja gerade ein Beispiel mit Displaysteuerung.
    Es wurden ja auch viele gute Tips zur Beschleunigung gegeben.
    Ein gutes Beispiel, um alleine durch den Code, sehr viel Zeit zu sparen.

    Auch ein Basic-Programm kann z.B. durch Maschienensprachunterroutinen sehr schnell sein. Es ist also nicht immer notwendig, alles in einer Sprache zu programmieren. Hier kann man viel rausquetschen.

    Fazit: Bevor man an der Hardware oder an der Programmiersprache nörgelt (zu langsam), sollte man immer zuerst den Fehler bei seiner Programmierung suchen.

    Ganz schlimm im PC-Bereich. Da wird dann einfach ein neuer, schnellerer PC gekauft, statt den Code zu optimieren.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •