Hallo, ich stoße langsam auf die Grenzen vom AVR. Nun möchte ich auf ARM umsteigen (ideal ARM9!?). Da mir nichts daran liegt erstmal ein fertiges board zu kaufen (es hat mir beim AVR echt 0 gebracht), wollte ich mir diverse Schaltpläne anschauen und mir dadurch die Grundschaltung erschließen. Was für ein µC nehme ich am besten? Gibt es dazu gute hilfsseiten? Wo finde ich schaltpläne zu dem ARM? (ich weiß nicht, ob man von einem fertig board was lernt. Sehen wie eine schaltung aufgebaut sein muss, tut man nicht und bei der programmierung ist es kaum ein Thema - mein Vater arbeitet mit ARM's (programmierung) und hier gibt es ja auch ein tut dazu)
Hallo, fang mal mit den LPC22XX oder LPC21XX an. Die sind noch nicht soo groß in der Pinanzahl. Auf Arbeit programmiere ich mit einem LCP2468, der ist schon echt fett, hat allerdings über 100 Beinchen und 512kb Flash und 32kb sram.
Nimm lieber einen mit Cortex-M3-Kern. Die sind nicht so vergurkt und es gibt bei denen nicht so viele Fallstricke wie bei den ARM7. Gerade für Anfänger deutlich besser geeignet. Kein krudes Interruptsystem, nur ein Befehlssatz, etc. Derivate gibt es momentan von Luminary und ST, NXP bringt im Sommer 2008 erste Modelle. Luminary hat z.B. einfach lötbare SOIC28-Gahäuse im Programm. Die würden sich perfekt für Dich eignen.
Ich würde einen von Atmel empfehlen: AT91SAM7S256 (ARM7TDMI) wenn man CAN und Ethernet braucht: AT91SAM7X256 (ARM7TDMI) bis auf das etwas kryptische TWI (I²C) eine ganz gute CPU, man braucht als einsteiger nicht mal nen programmieradapter. ps, das gehäuse ist zwar smd aber durchaus lötbar. grüße danie dieses posting spiegelt MEINE persöhliche meinung dar, wenn jemand anderer meinung ist habe ich NICHTS dagegen einzuwenden. aber MISSIONIERT werden will ich nicht.
Einen Schaltplan mit Beschreibung gibt es unter www.microcontroller-starterkits.de -> ARM vorläufige Beschreibung -> Dokumentation. Ist für den LCP2129 bzw. LPC2194.
hmm, ich sage euch leiber was ich will. Und zwar eine art technischen Taschenrechner bauen. - Touchdisplay: 240x128 - um wie 70 tasten - Funkmodul - SD-adapter Nun kennt ihr die grenzen des AVR. Die berechungen werden sehr komplex sein und jeden avr in die knie zwingen ;). Vll. fällt es euch leichter mir nun zu helfen. Bedenkt aber, dass es nicht zu exotisch sein soll, denn ich will was fürs leben lernen und nicht ein ARm nehmen wo ich mich einarbeite und danach nie wieder gebrauchen kann.
> und nicht ein ARm nehmen wo ich mich einarbeite und > danach nie wieder gebrauchen kann Also doch kein 9302 ;) Du willst also den TI-92 nachbauen? Ich denke dafür reicht ein ARM7. Ein LPC2368 (100pin) bzw. 2378 (144pin) bei 72MHz sollte doch genug Feuer und IOs bieten - so du denn mit den 32kB RAM auskommst. Ansonsten gibt es noch den 2468 mit externem Speicherinterface (208pin). Der M3 Cortex ist derzeit noch eher für kleinere Projekte vorgesehen. Außerdem scheint der noch nicht so ganz ausgereift zu sein (siehe Erratas von ARM). Aber ein Evalboard würde ich schon empfehlen. Ich bastel mir zwar auch gerne eigene Platinen aber es finde es immer wieder hilfreich ein Board für Testzwecke zu haben. - Michael
Paganini wrote: > Und zwar eine art technischen Taschenrechner bauen. > - Touchdisplay: 240x128 > - um wie 70 tasten > - Funkmodul > - SD-adapter > > > Nun kennt ihr die grenzen des AVR. Die berechungen werden sehr komplex > sein und jeden avr in die knie zwingen ;). Das isn Witz, stimmts? Mit manueller Ein-und Ausgabe kannst Du keinen AVR in die Knie zwingen. Der Mensch ist schnarch langsam, da gähnt der AVR nur. Peter
Hallo, @Peter Dannegger: also ich weiß nicht so recht... Für ein 30000! gruacht mein Windows-Taschenrechner schon etliche Sekunden. Ich stelle es mir gerade auf einem Mega32@16MHz vor... ;-) Gruß aus Berlin Michael
"Du willst also den TI-92 nachbauen? Ich denke dafür reicht ein ARM7. Ein LPC2368 (100pin) bzw. 2378 (144pin) bei 72MHz sollte doch genug Feuer und IOs bieten - so du denn mit den 32kB RAM auskommst. Ansonsten gibt es noch den 2468 mit externem Speicherinterface (208pin). Der M3 Cortex ist derzeit noch eher für kleinere Projekte vorgesehen. Außerdem scheint der noch nicht so ganz ausgereift zu sein (siehe Erratas von ARM)." Das ist natürlich völliger Quatsch. Wo, bitteschön ist ein Cortex M3, z.B. von Luminary mit 256KiB Flash, 64KiB RAM, Ethernet, CAN, 4 32Bit-Timern, etc. "eher für kleinere Projekte vorgesehen" als der von Dir genannte mit weniger RAM? Richtig, gar nicht. Der M3 ist sogar performanter. Alleine die riesige Interruptlatenz vom Arm7 ist doch schon eine traurige Geschichte. Machen wir uns nichts vor: Der M3 löst über kurz oder lang den Arm7 ab. Die Summe der Vorteile überwiegt klar die der Nachteile. Was die Errata angeht, so sind die vom ARM7 auch nicht ohne - da tun sich die beiden Kerne nichts.
Bedenke auch folgendes: Die ARMs sind nicht einfach 'grössere AVRs', die sind schon eine echte Klasse grösser. Besonders auch, was Herausforderungen und Fallstricke angeht. Beispielsweise hast du bei den AVRs das wunderbare AVR-Studio, für ARM hingegen musst du schon aufwändiger eine Toolchain basteln. Und, in der Tat, die ARMs scheinen nicht gerade die saubersten Mikrocontroller zu sein. Vielleicht sollte man auch eine andere Architektur, beispielsweise AVR32 mal in Betracht ziehen. (Dieser Satz jetzt eher als Diskussionsinput, denn als Meinung.)
"Und, in der Tat, die ARMs scheinen nicht gerade die saubersten Mikrocontroller zu sein. Vielleicht sollte man auch eine andere Architektur, beispielsweise AVR32 mal in Betracht ziehen. (Dieser Satz jetzt eher als Diskussionsinput, denn als Meinung.)" Daher mein Rat, zum M3 zu greifen. Der bietet für Einsteiger nicht so viele üble Stolperfallen. Anbei ein White Paper von ARM selber, das die Vorzüge des Cortex M3 gegenüber dem Arm7 recht gut herausstellt.
Da er ja hauptsächlich äußerst komplizierte Berechnungen machen will, ist der M3 eindeutig dem ARM7-TDMI vorzuziehen, er kann nämlich in HW dividieren. Peter P.S.: Vielleicht kannst Du ja mal näheres zu den wahnsinns Berechnungen sagen, damit man weiß, warum das ein AVR nicht mehr schaffen können soll (Neuronale Netze, Wettervorhersagen ?).
@Peter Dannegger: Vll. würde das auch noch ein AVR schaffen. Doch möchte ich mich dennoch 'weiterbilden'. Lange genug habe ich mich mit den AVRs beschäftigt. Nun muss mal was neueres her.
> Das ist natürlich völliger Quatsch. > Wo, bitteschön ist ein Cortex M3, z.B. von Luminary mit 256KiB Flash, > 64KiB RAM, Ethernet, CAN, 4 32Bit-Timern, etc. "eher für kleinere > Projekte vorgesehen" als der von Dir genannte mit weniger RAM? > Richtig, gar nicht. Der M3 ist sogar performanter. Alleine die riesige > Interruptlatenz vom Arm7 ist doch schon eine traurige Geschichte. > Machen wir uns nichts vor: Der M3 löst über kurz oder lang den Arm7 ab. > Die Summe der Vorteile überwiegt klar die der Nachteile. Nun komm' mal wieder runter. Tut mir leid wenn ich dich beleidigt haben sollte. Die neuen Modelle von Luminary sind irgendwie an mir vorbei gegangen. Ich kannte nur den 32kB Typ im 28Pin Gehäuse, sowie den STM32 mit 128kB. Aber wo ein M3 mit 50MHz performanter sein soll als ein ARM7 bei 72MHz im ARM-Mode, mußt du mir nochmal erklären. - Michael
"Wie fingst du den mit den M3 an?" Was meinst Du genau? Angefangen habe ich mit dem LPC2138 und dem Keil Dev-Kit. Danach dann ein Luminary Dev-Kit mit dem LM3S8962.
dirk, aus dem schaltplan wird man ja garnicht schlau: http://www.olimex.com/dev/images/ARM/LPC/LPC-H2138-REV-B-SCH.gif
Der Schaltplan vom LPC2148 Evalboard von ETT ist vielleicht etwas übersichtlicher. Das Olimex Board hat aber den Vorteil das die Steuerung des Bootloaders auch über RS232 erfolgt. ETT verwendet Taster. An P0.0 und P0.1 kommt der MAX232.
Paganini wrote:
> Was sagt ihr zum LPC-H2106 auf http://www.olimex.com ?
Diesen Witz von NXP habe ich auch nie verstanden. Ausgerechnet der
kleinste kriegt den größten SRAM (64kB).
Und sobald man mehr Pins braucht, sind es nur noch 16KB.
Bei Luminary ist es richtig rum, die kleinen haben weniger SRAM und die
großen 64kB.
Peter
Ach, den den. Den habe ich von Ebay. Das lohnt sich aber wahrscheinlich nicht mehr, da es recht teuer geworden ist. Mwst. + Zoll kommt ja auch noch dazu. Mit einer Suche nach LPC2148 müßtest du das finden. Falls du dir eine eigene Platine machen willst, den 2148 gibt es bei CSD. Und Reichelt hat immerhin den 2136. Allerdings ohne /01 dahinter. Ich habe mich doch etwas erschrocken als ich den Preis für den 2148 gesehen habe. Der deutlich üppiger ausgestattete 2368 kostet nicht einmal die Hälfte. Wie ein Endkunde den außer bei Digikey bekommen kann weiß ich leider nicht. Um damit Ethernet machen zu können braucht man dann auch noch eine PHY und einen 25 oder 50MHz Oszillator dafür. Die Teile sind zwar einigermaßen preiswert (zus. ca. 3,50€), man bekommt sie aber ebenfalls nicht gerade an jeder Straßenecke. - Michael
Ein paar Bemerkungen zum Thema M3 versus ARM7 die Tatsache, dass ARM den M3 mit den hoechsten Toenen lobt ist sehr einfach zu erklaeren, der hat das Potential fuer ARM noch viel Geld zu bringen, die ARM7 Lizenzen sind bereits >> 100 mal verkauft, da ist nicht mehr viel Geld drin. Wir sprechen dabei von 2-3-stelligen Mio Betraegen nur fuer die 100-200 Lizenzen einen Chip auf M3-Basis fertigen zu duerfen. Also wenn man von voreingenommen sprechen koennte, das waere evtl. ein guter Ansatz. Der M3 war urspruenglich geplant ein Einstiegsteil zu werden, angesiedelt unterhalb des ARM7. So waren auch die ersten Bausteine, die auf den Markt gekommen sind von Luminary und selbst die existierenden von ST. Eher am unteren Ende des ARM Marktes angesiedelt. Es gibt wenig Zweifel daran, dass ARM ein paar Unzulaenglichkeiten des ARM7 beim M3 ausgebuegelt hat, ihn deshalb aber inkompatibel zu machen war einfach nicht so schlau. Alle anderen Cortex, z.B. R4 und R8 haben den Kompatibilitaetsmodus mit ARM mode, welchen der M3 nicht unterstuetzt. Der Gedanke war Chipflaeche einzusparen, das ist auch der Fall, allerdings sprechen wir bei heutigen Technologien 180nm oder kleiner von 0,xxmm2, also wenns mal hochkommt eine Chipflaeche, die 1-2 cent kosten wuerde. Der M3 hat einfach VIEL zu lange gebraucht bis er am Markt war, weil er nicht genuegend Vorteile geboten hat. In 2002 wurde er den Halbleiterherstellern bereits angeboten aber er ist auf breites Desinteresse gestossen. Erst die massive Marketingmaschine von ARM hat den M3 hoffaehig gemacht. Zum Thema Performance M3 und ARM7. Wenn beide so laufen, dass der Flashzugriff keinen Flaschenhals darstellt ist der M3 schneller, mindestens in 9 von 10 faellen. Meistens nur wenig schneller ausser integer Divisionen sind gefragt, dann fuer diesen einen Befehle viel schneller. "Komischerweisse" sind M3 Benchmarks voller Divisionen waehrend ARM frueher immer behauptet hat, Divisionen waere sehr selten in Programmen. Da hatte der ARM7 eben auch noch keinen DIV Befehl. Sobald die Frequenz der CPU schneller ist als der Zugriff auf das Flash ohne Waitstates erlaubt, ergeben sich wieder ganz andere Bilder. Ein ARM7 bei 60 MHz ohne WS ist deutlich flotter als ein M3, der da 2 WS benoetigt. Die WS koennen durch das Speicherinterface massgeblich beeinflusst werden und der M3 hat von Haus aus ein Interface drin, das wie ein "geschrumpftes NXP MAM" aussieht. Bis 50 MHz tut das hervorragende Dienste. In den Firmen, fuer die ich und mit denen ich in den letzten 2 Jahren gearbeitet hab wurden viele Benchmarks gemacht und da ich jetzt mit den allermeisten Halbleiterherstellern als Partner arbeite werde ich mich auch etwas zurueckhalten, soviel aber sei gesagt, die Frequenz der CPU ist nur einer von vielen Performance Parametern. M3 ist bei gleicher Speicheranbindung und gleicher Frequenz normalerweisse etwas schneller aber nur recht wenig als der ARM7. M3 sollte eigentlich niedrigeren Stromverbrauch bringen aber ein Vergelich der Verbrauchswerte von Luminary, NXP, ST und Atmel lassen da keine so grossen Unterschiede erkennen, manchmal geht's sogar falsch herum und der ARM7 ist besser im Power Verhalten. Der langen Rede kurzer Sinn, schaut Euch die Chips genau an, ein neuer Chip hat meistens mehr Bugs als einer der schon 1-2 Jahre da ist, fuer eine neue CPU gilt das ebenfalls. Es gibt Gruende den ARM7 noch lange zu benuetzen aber auch Gruende bei kompletten Neuentwicklungen schon den M3 einzusetzen wenn man bereit ist sich mit 2 Anbietern zufrieden zu geben. Wird der M3 den ARM7 abloesen? Zumindest wird er viel staerker wachsen weil jetzt wohl in jedem Quartal neue Anbieter kommen werden. Gruss, Robert
@Michael >Für ein 30000! braucht mein Windows-Taschenrechner schon etliche >Sekunden. und was machst du mit dem Ergebnis wenn ich fragen darf ...
>>Für ein 30000! braucht mein Windows-Taschenrechner schon etliche >>Sekunden. >und was machst du mit dem Ergebnis wenn ich fragen darf ... Hier ins Forum posten und rummosern, dass er etliche Sekunden auf das Ergebnis warten musste.
Hallo Robert, danke für die Infos und neuen Aspekte. Ein paar Fragen bleiben doch noch für "Neueinsteiger" in die ARMe wie mich. Ist es nicht so, daß der M3 eine feste Interrupt-Latenz von 12 Zyklen hat, ein ARM7 dagegen eine von 24 bis 42 Zyklen? Zusammen mit dem Bit-Banding scheint mir der M3 besser an die typischen I/O-intensiven Mikrocontrolleranwendungen angepasst zu sein. "Die WS koennen durch das Speicherinterface massgeblich beeinflusst werden und der M3 hat von Haus aus ein Interface drin, das wie ein "geschrumpftes NXP MAM" aussieht. Bis 50 MHz tut das hervorragende Dienste." Auf der eigenen Homepage schreibt ST, daß bis 72MHz der Zugriff aufs Flash mit voller Geschwindigkeit erfolgt. Ist das dann falsch oder sind nur die ST-Teile schneller als die von Luminary?
Jochen wrote: > Auf der eigenen Homepage schreibt ST, daß bis 72MHz der Zugriff aufs > Flash mit voller Geschwindigkeit erfolgt. Reference Manual: >48MHz 2 Waitstates >24MHz 1 Waitstate wobei Prefetch Buffer existieren, die bei sequentiellem Code diese Waitstates kompensieren. Bei nichtsequentiellem Code (Sprünge) und Datenzugriffen jedoch nicht (anders als das MAM vom LPC2000). Exzessive Verwendung von in 32bit codierten Befehlen könnte allerdings geeignet sein, bei 2 Waitstates den 64bit Pfad zum Flash zu überfordern. Daher wohl Roberts "bis 50MHz".
Jochen wrote: > Zusammen mit dem Bit-Banding scheint mir der M3 besser an die typischen > I/O-intensiven Mikrocontrolleranwendungen angepasst zu sein. Ist er. ARM entstand Mitte der 80er für den Acorn Computer, wurde dann aber bald als Prozessor für Embedded Systems verwendet. Und was man mal als Designfehler in eine Architektur reinsteckt, kriegt man aus Kompatibilitätsgründen später nur schwer wieder raus. Der M3 hingegen ist fast 2 Jahrzehnte jünger und konnte aus den Fehlern und Schwachpunkten lernen. Ebenso wie beispielsweise AVR32, eine Architektur die unverkennbar von ARM/Thumb inspiriert wurde.
Wie Robert schon schreibt, ist insbesondere für den Einstieg ein Chip zu empfehlen, der schon ein paar Jahre auf dem Markt ist, auch wenn der nicht so sexy aussieht wie die neuesten Oevres. In den ersten Jahren gehört man nämlich zur Riege der Betatester, die sich mehr oder weniger freiwillig auf die Suche nach den nicht ganz offensichtlichen Fehlern begeben. Beim STR9 beispielsweise war die erste Version so schaurig, dass ST dieses Jahr eine "A" Version nachschob um sie deutlicher unterscheidbar zu machen. Wobei der STR9 nun mindestens 1,5 Jahre draussen ist, aber immer noch neue Fehler gefunden werden. NXP wiederum hatte die zweifelhafte Ehre, die meisten der schon einige Jahre etablierten LPC2000er noch in 2007 mit einem neuen Fehler auszeichnen zu dürfen (was aber hoffentlich auch heisst, dass er nicht allzu oft auftritt). Wobei das Timing perfekt gewählt war, wurde der Fehler doch erst erkannt, als die erheblich verbesserten /01 Versionen schon soweit gediehen waren, dass sie diesen Fehler ebenfalls enthalten.
Also bedeutet das zusammengefasst: Ich für meinen Teil warte noch bis ca. Mitte nächsten Jahres, bis die neue Cortex-M3 Revision von ARM in Silizium von NXP erhältlich ist. Bis dahin müssen die AVRs noch ausreichen.
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.