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