Hi, ich bin auf der Suche nach einem ARM-basierten uC (am liebsten einen Cortex-M3 wg. geringer Interrupt-Latenz), der möglichst schnelle GPIOs hat (Toggelfrequenz >= 16 MHz). Ich habe mir mal die Luminarys angeschaut. An sich sehr tolle Teile, allerdings benötigen die IOs wohl 2 Takte zum setzen (bzw. löschen), so dass ich selbst mit der maximalen Core-Frequenz von 50 MHz "nur" auf 12,5 MHz Toggelfrequenz komme. Luminary hat zwar was in der Pipeline mit der 9000-Serie, doch suche ich etwas, was jetzt schon verfügbar ist, und nicht mit etwas Glück in Kürze in homöopathischen Dosen und mit schlechter Tool-Unterstützung und fehlerhaftem Docs daherkommt. Danke für Eure Vorschläge. Gruß Peter
STM32 ist auch nicht grad schnell. Alle ARMs mit GPIO über Periphieriebus (APB) sind dabei tendentiell etwas langsam. Schnell sind die LPC2000 (ARM7) in den einigermassen neuen Versionen und auch die noch ein bischen frischen LPC1700 (CM3), weil deren Fast-GPIO direkt am Primärbus (AHB) hängt. Aber da bei ARMs ein Store mindestens seine 2 Takte braucht sind auch da keine Wunder zu erwarten. ARM ist zwingend? Ziemlich fix mit GPIO sind die PIC24H/dsPIC33 mit 1 Takt, was bei 40MHz auf bis zu 20MHz am Pin rausläuft.
ARM ist nicht zwingend, nur ist da schon etwas Know-How und die Tools vorhanden. Das würde einiges einfacher machen. Die PICs schau ich mir mal an. Danke. Sind die LPC1000er schon verfügbar? Ich dachte die sind auch noch im Sampling-Status.
Habe ich auch so in Erinnerung. Deshalb hatte ich die ja "bischen frisch" genannt. Ausserdem tut man gut daran, nicht der erste Kunde zu sein, wenn man nicht als Bugsuchschweinchen dienen will. Vielleicht sind die LPC2300 trotz weniger effizientem Interruptsystem verwendbar.
Der LPC1768 trudelt dieser Tage gerade so bei den Distributoren ein. Bei Digikey ist allerdings noch ein Bestand von "0" gelistet. Soll es ein kleiner uC sein, schau Dir doch mal den LPC2103 an, der hat bereits fast I/Os kostet wenig und kann bis 17.5 MHz toggeln. Vielleicht hilfts ja :-) Robert
Und was soll das schnelle toggeln bringen ? Grosse Kapazitaeten mit kleinen Stroemen umladen ? Falls man das wirklich muss, koennte man einm CPLD/FPGA andenken. Aber auch da benoetigt man oberhalb einer Last einen Treiber.
Tätigkeiten für die man bei Controllern sehr schnelle GPIO benötigt sind natürlich eher die Domäne von CPLDs und FPGAs, garkeine Frage. Aber nicht jeder will die verwenden, Mancher steuert beispielsweise einen Bildschirm oder ein LCD ohne speziellem Controller direkt mit einem AVR an. Da kann ein schnelles und exaktes Zeitverhalten durchaus wichtig werden. Bei sowas ist der ARM oder AVR dann eben zu beispielsweise 70% nur damit ausgelastet. Und? Für unverbrauchte Rechenzeit gibt's kein Geld zurück. Ein FPGA wäre teurer und grösser und braucht gänzlich anderes Knowhow.
> Bei sowas ist der ARM oder AVR dann eben zu beispielsweise 70% > nur damit ausgelastet. Und? Nun, ich nehme mal an, daß die Grundaufgabe nicht nur ist, einen Pin so schnell wie möglich toggeln zu lassen, sondern daß das Toggeln von irgendwas abhängig ist bzw. der Prozessor generell noch irgendwas anderes tun soll. Leider kann man aber in der Zwischenzeit nichts anderes tun. Schon ein Interrupt würde so lange dauern, daß das Signal für eine Weile unterbrochen werden muß. Und zwischen dem Toggeln noch andere Befehle auszuführen, ist auch eher schwierig, wenn man dabei dass Timing einhalten will.
Hast du mal in Benedikts LCD-Codes reingesehen? VGA hat er wohl auch schon mal verbrochen. Das ist naturgemäss ziemlich zeitkritisch. Geht trotzdem. Ich habe diverse Displays via VRAM mit Daten beworfen, mal mit AVR, mal mit STM32. Die Effizienz der Ansteuerung vom VRAM hängt exakt vom Zeitverhalten der GPIO ab, das geht deshalb auf dem AVR schneller als auf dem STM32.
Schnelles togglen ist zwar erst einmal ganz nett, aber eigentlich zu nichts nütze. Wie Rolf bereits schrieb, kann jeder Interrupt das schnelle Spiel lange Zeit unterbrechen. Geschickter wäre es, ein UART/SIO (o.ä.) für schnelle Bitausgaben einzusetzen. Wenn der µC eine DMA-Einheit hat, könnte auch diese Bit-Muster unterbrechungsfrei und schnell ausgeben. Externe Hardware (diskrete Logik, CPLD) ist natürlich aufwändiger, aber vom Timing vorhersehbar. Unter Umständen könnte auch ein kleiner, separater AVR für diese Funktion verwendet werden.
Gast schrieb: > Schnelles togglen ist zwar erst einmal ganz nett, aber eigentlich zu > nichts nütze. Wie Rolf bereits schrieb, kann jeder Interrupt das > schnelle Spiel lange Zeit unterbrechen. Weshalb meine VRAM-Zyklen beispielsweise bei abgeschalteten Interrupts erfolgen. Bei <1µs kein Drama, je schneller die GPIO desto kürzer. Und Benedikt verwendet deshalb garkeine Interrupts, ausser dem einen der die meiste Zeit verbrät und das Display steuert.
@A. K. Selbst habe ich auch einen Tiny2313 so programmiert, daß er einen SAA1101 Sync.-Generator ersetzt. Ich weiss also, was Du meinst. Dennoch sind das aber so spezielle Anwendungen, daß ich nicht danach meinen Hauptprozessor aussuchen würde.
Es muss ja nicht gleich ein FPGA sein. Ein kleiner CPLD tuts meist, der kann problemlos taktgenause IO-Klimpern nebenbei machen. Denn füttert man dann halt langsam und zeitunkritisch. VGA erzeugung per uC ist zwar ne nette Spielerei, praktisch aber eher nur bedingt sinnvoll. MFG Falk
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.