Hat schon jemand den LPC810 getestet?

OP #3079360
Lesenswert?

Hallo,

ich wollte mal fragen, ob sich schon jemand mit dem LPC810 beschäftigt 
hat? Inzwischen sind wohl erste Samples lieferbar.

z.I.: Es handelt sich um einen Cortex-M0 im 8Pin DIP-Gehäuse.

http://www.nxp.com/products/microcontrollers/cortex_m0_m0/LPC810M021FN8.html

Dank eingebautem Bootloader sollte er sich wohl ähnlich einfach wie der 
LPC1114 programmmieren lassen

http://vilaca.eu/lpc1114/
Gast #3212717
Lesenswert?

Hi,

ich bin auch an einem kleinen Projekt mit LPC810 dran. Das mit dem Code 
kann ich bestätigen. Könnte aber auch am CodeRed Compiler (GNU) 
liegen... Würde mich mal interessieren, ob es mit einem kommerziellen 
Compiler z.B. IAR deutlich kompakter wird.

Ein anderes Problem bei meinem Projekt war die Verwendung des Reset-Pins 
als GPIO. Ich hatte damit einen Haufen Ärger, da der Bootloader dann 
nicht mehr richtig funktioniert und auch das Programm nicht mehr sauber 
startet. Ich habe es deshalb erstmal aufgegeben, den Reset-Pin zu 
nutzen.

Auch scheint das Switchmatrix-Tool von NXP etwas buggy zu sein. Es wird 
z.B. immer der Reset-Pin als GPIO konfiguriert (auch wenn er mit 
Switchmatrix als Reset deklariert wurde).

Im Moment kämpfe ich gerade mit dem SCT, den ich für eine Soundausgabe 
(Beeper) nutzen möchte... Wenn da noich jemand einen Tip oder Samplecode 
hat, wäre ich dankbar..
Angehängte Dateien:
OP #3212767
Lesenswert?

Der Sinn für NXP besteht ganz konkret darin, mittels einer 
Softwarekompatiblen und Migrationsfähigen Plattform den 8 Bittern von 
Atmel und Microchip das Wasser abzugraben.

Auf Kosten- und Energieseite haben 8 Bitter bei den aktuellen 
Halbleiterprozessen keinen Vorteil mehr. Die Entwicklung zu ARM im 
Low-End liegt klar auf der Hand.
Gast #3212894
Lesenswert?

Ich weiß nicht wie es bei einem LPC ist, aber wenn ich mit nem STM4F4 
sehe, was es da an Overhead gibt, finde ich das gerade bei kleinen 
Projekten unnütz. Bei größeren Projekten is dieser ganze Kram wiederum 
sehr hilfreich. Muss man evtl abwägen...

Grundsätzlich finde ich 32Bit gut, aber für winzprojekte im DIL8 finde 
ich es absoluten Overkill, solange mir jemand tatsächlich ein Projekt 
nennt, wo hier 32Bit mehr Sinn machen als 8. unabhängig von den sowieso 
gleichen kosten...
Gast #3212899
Lesenswert?

A. K. schrieb:
> Mehr Bytes vielleicht,
Warum eigentlich? Die Thumb-Instruktionen sind auch fast alle 16bit groß 
wie beim AVR, behandeln dafür aber gleich 4fach so große Variablen... 
Beispiel: 32bit-Addition ist beim M0 eine 16bit-breite Instruktion (die 
auch noch auf Wunsch einen Shift durchführen kann), beim AVR 4 
16bit-Instruktionen (+ 1 16bit-Instruktion pro Shift-Bit).
#3212911
Lesenswert?

Dr. Sommer schrieb:
> Welche Initialisierung? Der Core ist sofort bereit C Code auszuführen.

Fertig initialisierte Stackpointer inklusive? Kenne diesen LPC nicht, 
aber üblicherweise muss man bei den Cortexen schon ein bissel was 
vorneweg machen. Zwecks Familienähnlichkeit werden auch die I/O-Module 
erheblich komplexer ausfallen.

Ausserdem programmiert man die nicht in Assembler, und die bestehenden 
Entwicklungssysteme für ARMs sind vom Overhead her sicherlich nicht 
schon durchweg auf solche Zwerge optimiert.
Gast #3212919
Lesenswert?

A. K. schrieb:
> Ausserdem sind bei solchen Zwergprogrammen Bit-I/O und
> I/O-Registerzugriff signifikant, und da ist der Unterschied markant.
> Portbit setzen: AVR 2 Bytes, CM0 12-14.
Das stimmt sogar... Bei sukzessiven Zugriffen auf das selbe Register 
wirds aber etwas besser. Gäbe es einen Compiler der das Bit Banding vom 
ARM unterstützen würde ging's wohl in 6 bytes. Der Vorteil ist 
allerdings - es kann 4 GB an I/O Registern geben, bei einigen AVR's 
(ATmega*8 wimre?) läuft der I/O Adress Space über, was die Sache dort so 
ineffizient wie beim ARM macht.

A. K. schrieb:
> Fertig initialisierte Stackpointer inklusive?
Ja. Nur die FPU muss man ggf. aktivieren (4 Instruktionen).

A. K. schrieb:
> Kenne diesen LPC nicht,
> aber üblicherweise muss man bei den Cortexen schon ein bissel was
> vorneweg machen.
Für den Cortex Core an sich nicht; je nach Controller muss man aber 
Clocks initialisieren... (Nachteil: Codesize, Vorteil: unverfusbar)
> Zwecks Familienähnlichkeit werden auch die I/O-Module
> erheblich komplexer ausfallen.
Ja, die sind aber auch wesentlich mächtiger dann...

A. K. schrieb:
> Ausserdem programmiert man die nicht in Assembler,
Die Optimierungen, die Compiler machen können zur perfekten Ausnutzung 
der Pipeline etc. könnte man ja auch kaum von Hand schaffen.
> und die bestehenden
> Entwicklungssysteme für ARMs sind vom Overhead her sicherlich nicht
> schon durchweg auf solche Zwerge optimiert.
Zumindest beim GCC geht das schon ziemlich gut.
#3212927
Lesenswert?

Dr. Sommer schrieb:
> (Nachteil: Codesize, Vorteil: unverfusbar)

Doch, sowas in der Richtung geht auch, zumindest bei manchen. Mindestens 
ältere LPC2000 konnte man mit einer falsch programmierten PLL in den 
Halbleiterhimmel schiessen. Andere haben sich bei versehentlichem 
Zugriff auf undokumentierte Flash-Register zerlegt. Und manche kann man 
versehentlich zusperren und den Schlüssel wegwerfen - das rettende HVP 
gibts nicht.
Gast #3212930
Lesenswert?

A. K. schrieb:
> Der Cortex M0 hat kein Bitbanding. Der CM0+ optional.
Okay, die größeren haben das...

A. K. schrieb:
> Es sei denn zu ziehst unversehens die Newlib mit rein. Bei
> Freeware-Entwicklungsumgebungen passiert das schnell mal.
Stimmt, man muss eben aufpassen was man tut, nicht einfach mal fröhlich 
printf und scanf benutzen :)

A. K. schrieb:
> Doch, sowas in der Richtung geht auch, zumindest bei manchen.
Okay mit denen kenn ich mich weniger aus, bei den STM32 zB kann man 
schwer durch falsche Programmierung was kaputtmachen (dafür aber durch 
falsche Beschaltung)
OP #3213507
Lesenswert?

Bei dem Code kräuseln sich schon manchmal die Fußnägel. Untiges Beispiel 
Resettet das GPIO-Modul. Dazu muss ein Bit gelöscht und danach wieder 
gesetzt werden. -Os und -O3 erzeugen den gleichen Code.

1
  44:../src/gpio.c ****   LPC_SYSCON->PRESETCTRL    &= ~(1 << 10);
2
  38                  .loc 1 44 0
3
  39 000c 5968         ldr  r1, [r3, #4]
4
  40 000e 054A         ldr  r2, .L2+4
5
  41 0010 0A40         and  r2, r1
6
  42 0012 5A60         str  r2, [r3, #4]
7
  45:../src/gpio.c ****   LPC_SYSCON->PRESETCTRL    |=  (1 << 10);
8
  43                  .loc 1 45 0
9
  44 0014 5968         ldr  r1, [r3, #4]
10
  45 0016 8022         mov  r2, #128
11
  46 0018 D200         lsl  r2, r2, #3
12
  47 001a 0A43         orr  r2, r1
13
  48 001c 5A60         str  r2, [r3, #4]
14

15
  54 0020 00800440     .word  1074036736
16
  55 0024 FFFBFFFF     .word  -1025

Ergebnis: 9 Befehle, 2x32 bit Konstanten = 26 Bytes.

Fairerweise muss man aber sagen, dass die Zugriff auf die GPIO-Pins 
etwas effizienter sind.
Gast #3214148
Lesenswert?

Tim .  schrieb:
> Bei dem Code kräuseln sich schon manchmal die Fußnägel. Untiges Beispiel
> Resettet das GPIO-Modul. Dazu muss ein Bit gelöscht und danach wieder
> gesetzt werden. -Os und -O3 erzeugen den gleichen Code.
Okay, für einzelne Bits ists ohne Bitbanding tatsächlich unschön...  Der 
AVR kann das aber nur aufgrund dank SBI/CBI besser, mit den bekannten 
Einschränkungen... Die Cortex sind wohl doch besser für größere 
Dateneinheiten gemacht :-) Man versucht diesem Problem eher mit einfach 
mehr Flash & MHz zu begegnen, was wohl etwas einfacher als die 
"direkten" SBI/CBI ist...
Gast #3215230
Lesenswert?

>dafür sind die Sprungtabellen aufgrund der größeren
>Komplexität des ARMs
Die Sprungtabellen-Grösse hat aber nichts mit der "Komplexität" zu tun, 
sondern nur mit der Weite der Sprungziele.


>Die Cortex sind wohl doch besser für größere
>Dateneinheiten gemacht :-)
Ja, bis sageundschreibe 4kB (12ADRbits), denn nur das passt als IMM-ofs 
in den OPcode.

>Man versucht diesem Problem eher mit einfach
>mehr Flash & MHz zu begegnen,........
denn sonst müsste man ja (nach nur 3 Jahrzehnten) die CPU (bzw den 
Bef.satz) ändern.
Gast #3215241
Lesenswert?

MCUA schrieb:
>>Die Cortex sind wohl doch besser für größere
>>Dateneinheiten gemacht :-)
> Ja, bis sageundschreibe 4kB (12ADRbits), denn nur das passt als IMM-ofs
> in den OPcode.
Das ist aber Absicht, um die kurzen 16bit-Opcodes zu behalten - wie 
willst du 32bit-Adressen in 16bit-Opcodes packen?? Wenn man 
32bit-Adressen laden will, verwendet man eben seperate Konstanten.

>>Man versucht diesem Problem eher mit einfach
>>mehr Flash & MHz zu begegnen,........
> denn sonst müsste man ja (nach nur 3 Jahrzehnten) die CPU (bzw den
> Bef.satz) ändern.
Eher etwas einbauen, das in die RISC + Load-Store-Architektur vom ARM 
überhaupt nicht hineinpasst... Eine entsprechende Instruktion dafür wäre 
wohl genauso langsam wie die Folge der Einzelinstruktionen.
OP #3215283
Lesenswert?

>Eher etwas einbauen, das in die RISC + Load-Store-Architektur vom ARM
>überhaupt nicht hineinpasst... Eine entsprechende Instruktion dafür wäre

Für die GPIO-Register hat man das über die Peripherie getan. Für GPIO 
gibt es getrennte Addressen zum setzten und Löschen von Bits. Damit 
simuliert man die CBI und SBI-Befehle des AVR. Da diese über einen 
Speziellen Bus angesprochen werden, werden Zugriffe auf die 
GPIO-Bereiche auf Cortex-M0+ normalerweise auch in einem Taktzyklus 
ausgeführt.

Allerdings macht das die I/O Zugriff nicht schneller, sondern nur genau 
so schnell wie beim AVR. Die kleinen Cortex-M0 erreichen auch nur 30Mhz. 
Für I/O-Intensive Anwendungen ergibt sich noch kein klarer Vorteil.
Gast #3215301
Lesenswert?

>Das ist aber Absicht, um die kurzen 16bit-Opcodes zu behalten
Ja, vor 30 Jahren.

>Für die GPIO-Register hat man das über die Peripherie getan......
Besser als nichts, aber auch das geht in Wirklichkeit nicht mit 1 
Befehl.
OP #3215319
Lesenswert?

>>Für die GPIO-Register hat man das über die Peripherie getan......
>Besser als nichts, aber auch das geht in Wirklichkeit nicht mit 1
>Befehl.

Zum Halten der Basisaddressen und Bitmasken findet sich schon immer ein 
Register. Übrigens benötigen SBI und CBI auf den klassischen AVR auch 2 
Zyklen...
OP #3215371
Lesenswert?

Super. Ich bin gerade auf Wikipedia auf dieses kleine Detail gestossen, 
welches im User manual fehlt:

>Flash sizes of 4  8  16 KB general purpose, zero wait-state up to 20 MHz,
>one wait-state up to 30 MHz.

Da fast alle Befehle nur einen Taktzyklus benötigen, wird die 
Geschwindigkeit mit einem Waitstate fast halbiert. D.h. 24Mhz CPU-Clock 
entsprechen ungefähr 12Mhz. Interessant...
Gast #3215388
Lesenswert?

Tim .  schrieb:
> Da fast alle Befehle nur einen Taktzyklus benötigen, wird die
> Geschwindigkeit mit einem Waitstate fast halbiert. D.h. 24Mhz CPU-Clock
> entsprechen ungefähr 12Mhz. Interessant...
Nur bei Branches die aus dem aktuell im Cache verfügbaren Code heraus 
springen - "linearer" Code wird praktisch mit der angegebenen 
Taktfrequenz abgearbeitet. Und falls einem das nicht reicht kann man den 
Code immer noch in den RAM kopieren...
OP #3215391
Lesenswert?

>Nur bei Branches die aus dem aktuell im Cache verfügbaren Code heraus
>springen - "linearer" Code wird praktisch mit der angegebenen

Nur wie groß ist der Cache? Im User Manual taucht das Wort "Cache" nicht 
auf.

"Linearer" code ist ja eigentlich gerade das, was eine schlechte 
Cache-Ausnutzung erzeugt. Besser sind Schleifen.
Gast #3215393
Lesenswert?

Tim .  schrieb:
> Nur wie groß ist der Cache? Im User Manual taucht das Wort "Cache" nicht
> auf.
Da "Cache" nicht marketingwirksam ist, nennt das jeder Hersteller 
anders; bei ST sieht das so aus:

"The proprietary Adaptive real-time (ART) memory accelerator is 
optimized for STM32 industry-standard ARM® Cortex-M4F processors. It 
balances the inherent performance advantage of the ARM Cortex-M4F over 
Flash memory technologies, which normally requires the processor to wait 
for the Flash memory at higher operating frequencies. To release the 
processor full performance, the accelerator implements an instruction 
prefetch queue and branch cache which increases program execution speed 
from the 128-bit Flash memory. Based on CoreMark benchmark, the 
performance achieved thanks to the
ART accelerator is equivalent to 0 wait state program execution from 
Flash memory at a CPU frequency up to 168 MHz."
Müsste man für den LPC mal raussuchen.

> "Linearer" code ist ja eigentlich gerade das, was eine schlechte
> Cache-Ausnutzung erzeugt. Besser sind Schleifen.
Okay das ist noch besser. Ich meinte jetzt Code der wild durch die 
Gegend springt. Hängt aber auch von der Cache-Strategie ab...
OP #3215396
Lesenswert?

Hi, den ART kannte ich. Ich bezweifle nur, dass man einem 4kb Cortex-M0+ 
viel Cache spendiert. Wenn überhaupt, dann würde ich nur einen 
loop-buffer erwarten. Ich habe mal an den NXP-Support geschrieben.

Inzwischen habe ich herausgefunden, das msn die Waitstates bei 20 MHz 
manuell auf 0 setzen kann. Damit wird der LPC810 immerhin schneller als 
ein AVR. Warum das im CMSIS nicht erfolgt, ist mir ein Rätsel.
Gast #3215397
Lesenswert?

Tim .  schrieb:
> Inzwischen habe ich herausgefunden, das msn die Waitstates bei 20 MHz
> manuell auf 0 setzen kann. Damit wird der LPC810 immerhin schneller als
> ein AVR. Warum das im CMSIS nicht erfolgt, ist mir ein Rätsel.
Weil die CMSIS sich nur auf den Cortex Core bezieht, und das Zeug mit 
den Waitstates/Cache spezifisch für den Hersteller des ganzen 
Controllers ist (wie eben der ART für STMicroelectronics).
OP #3215399
Lesenswert?

Dr. Sommer schrieb:
> Weil die CMSIS sich nur auf den Cortex Core bezieht, und das Zeug mit
> den Waitstates/Cache spezifisch für den Hersteller des ganzen
> Controllers ist (wie eben der ART für STMicroelectronics).

Dazu passt dann aber nicht, dass das Clocksystem initilialisiert wird...

Überhaupt: Ich dachte CMSIS stellt gerade den Softwarelayer zur 
Peripherie bereit?
Gast #3215403
Lesenswert?

Tim .  schrieb:
> Dazu passt dann aber nicht, dass das Clocksystem initilialisiert wird...
Wird es nicht, das macht die Hardware Library des µC-Herstellers.
> Überhaupt: Ich dachte CMSIS stellt gerade den Softwarelayer zur
> Peripherie bereit?
Nein, nur zum Core. Für die Peripherie ist der µC-Hersteller zuständig.
OP #3215405
Lesenswert?

Jetzt bin ich etwas verwirrt. Der Hersteller muss CMSIS natürlich an 
seine Peripherie anpassen, das Softwareinterface ist aber schon 
standardisiert?
1
 * @file:    system_LPC8xx.h
2
 * @purpose: CMSIS Cortex-M0+ Device Peripheral Access Layer Header File
3
 *           for the NXP LPC8xx Device Series 
4
 * @version: V1.0
5
 * @date:    16. Aug. 2012
6
 *----------------------------------------------------------------------------
7

8
/**
9
 * Initialize the system
10
 *
11
 * @param  none
12
 * @return none
13
 *
14
 * @brief  Setup the microcontroller system.
15
 *         Initialize the System and update the SystemCoreClock variable.
16
 */
17
extern void SystemInit (void);
18

19
/**
20
 * Update SystemCoreClock variable
21
 *
22
 * @param  none
23
 * @return none
24
 *
25
 * @brief  Updates the SystemCoreClock with current core Clock 
26
 *         retrieved from cpu registers.
27
 */
28
extern void SystemCoreClockUpdate (void);
Gast #3215406
Lesenswert?

Tim .  schrieb:
> Jetzt bin ich etwas verwirrt. Der Hersteller muss CMSIS natürlich an
> seine Peripherie anpassen, das Softwareinterface ist aber schon
> standardisiert?
Hm okay, ich hab die Begriffe etwas verdreht. Die CMSIS ist einerseits 
die µC-unabhängige library zum Zugriff auf den Core (zB NVIC und sachen 
wie __enable_irq) und andererseits der "Standard" wie das API der 
Library der Hersteller drumherum auszusehen hat. ST nennt seinen Teil 
dann "Standard Periphal Library", und nur der unabhängige Teil für den 
Core CMSIS (der auch getrennt vom drumherum existieren kann). Wenn NXP 
das anders macht ists wohl auch richtig.
Das mit dem Clocksystem ist dann der herstellerspezifische Teil (und 
nicht die "eigentliche CMSIS")... :-)
Gast #3215519
Lesenswert?

Bei einem so kleinen Controller würde ich mir die ganzen Lib's der 
Hersteller noch viel weniger antun als bei den größeren Cortexen. Fakt 
ist doch eins, es wird jetzt erst mal die Tür aufgemacht für 32bit 
Cortexe in ganz kleinen Gehäusen. Es geht nicht darum ein paar Byte 
Flash zu sparen oder um ein paar Prozent Performanze. Wenn man sich in 
eine Entwicklungsumgebung für Cortex Mx eingearbeitet hat und stolpert 
nicht mehr über jeden Stein will man nicht mehr zurück zu AVR oder PIC. 
Da liegen im Handling Welten dazwischen. Es ist nicht die Frage ob es 
nötig ist. Wenn ich eine Entwicklung mit Cortex M3/M4 mache, die ein 
paar Monate Zeit kostet und dann wird mal schnell ein MC für eine 
primitive Sache benötigt wo sieht man sich dann um? Wenn es etwas gibt 
was mir nicht wieder einen Break im Kopf abringt, dann benutze ich das 
in meiner gewohnten Entwicklungsumgebung. Dass die Teile preislich 
mithalten können haben wir ja schon festgestellt.
Gast #3215840
Lesenswert?

temp schrieb:
> Dass die Teile preislich
> mithalten können haben wir ja schon festgestellt.

Können sie nicht. Gerade die kleinener Avrs sind günstiger (bspw. 
Atmega48 oder Attiny24). Und fang nicht mit einem Vergleich mit reichelt 
oder ebay an. Da sind sie meistens teuer.
Gast #3216812
Lesenswert?

>"The proprietary Adaptive real-time (ART) memory accelerator is
>optimized for STM32 industry-standard......
Nicht erwähnt -habs schon öfter erwähnt- haben die, dass der 4 Takte 
braucht, bis er Werte liefern kann. Das beginnt nach jedem Sprung, 
Branch usw von neuem! Und complett linearer Code -habs schon öfter 
erwähnt- gibt es bei Steuerungen usw faktisch nicht. Also grift das 
Dingen sehr oft überhaupt nicht. NXP hat bei manchen CM3's was 
ähnliches.
(das Zeugs müsste denkich mal in den entspr. Artikel rein)

>Jetzt kann man natürlich
>philosophieren, ob die (Clockabhängige) Konfiguration der Waitstates
>auch zur Initilialisierung des Clocksystems gehören...
Nö. kamm man nicht. Befehle, die nicht im Cache sind brauchen länger.
OP #3216871
Lesenswert?

MCUA schrieb:
>>Jetzt kann man natürlich
>>philosophieren, ob die (Clockabhängige) Konfiguration der Waitstates
>>auch zur Initilialisierung des Clocksystems gehören...
> Nö. kamm man nicht. Befehle, die nicht im Cache sind brauchen länger.

Die Waitstates bestimmen die Zyklenzeiten des Flash-Zugriffs. Default 
sind 1+1 Zyklen. Wenn man beim LPC810 die Waitstates nicht "per Hand" 
auf 0 stellt, wird die MCU unnötig langsam.
#3221367
Lesenswert?

lpc21isp (ab Version 1.91) sollte jetzt auch mit dem LPC8xx
zurecht kommen. Die Version ist hier erhältlich:

1) Yahoo-Gruppe (Registrierung nötig, wegen Spam-Vermeidung)
http://tech.groups.yahoo.com/group/lpc21isp/files/Beta%20versions/
Sie liegt dort als lpc21isp_191.zip (fast ganz unten auf der Seite)

2) github
https://github.com/capiman/lpc21isp

3) Sourceforge
http://sourceforge.net/projects/lpc21isp/

Feedback erwünscht!
Gast #3227026
Lesenswert?

Naja bei JLink oder einem anderen JTAG Debugger stellt sich bei einem 
Controller mit nur 8 Pins also maximal 6 nutzbaren GPIO schon die Frage 
nach dem Sinn... Es bleibt ja dann nix mehr für die Applikation übrig.
Gast #3227326
Lesenswert?

HWHardSoft schrieb:
> Naja bei JLink oder einem anderen JTAG Debugger stellt sich bei einem
> Controller mit nur 8 Pins also maximal 6 nutzbaren GPIO schon die Frage
> nach dem Sinn... Es bleibt ja dann nix mehr für die Applikation übrig.

Es sprach niemand von JTAG. Für SWD sind genau 2 Leitungen + Masse 
nötig. Bleiben also 4 übrig. Ob das Sinn macht oder nicht kann nur der 
Beantworten der es macht...
OP #3230913
Lesenswert?

Ich habe mich in den letzten Wochen damit beschäftigt, die LPC810 
Codebase zu optimieren.

Inzwischen ist der Overhead so klein, dass man in den 4kb tatsächlich 
sinnvolle Programme unterbringen kann. Außerdem hat sich nach Diskussion 
mit dem NXP support gezeigt, dass bei 30Mhz auch zero waitstate-Zugriff 
auf das Flash möglich ist.

Damit erreicht der LPC810 mit dem internen Oszillator ca. 30 MIPS und 
ist damit selbst bei 8 bit Arithmetik ca 50% schneller als der ATtiny 
85.

Alle änderungen sind inzwischen im Repository von microbuilder:

https://github.com/microbuilder/LPC810_CodeBase
#3231732
Lesenswert?

NXP ist nicht alleine auf dem Markt:

eben den hier gesehen:
http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1826/PF258968

TSSOP20 mit 0,65-Pitch würde ich noch als Bastlerfreundlich bezeichnen.

Im Vergleich zum LPC hat der
- 12 Bit ADC mit 1µs Sampletime
- 48 MHz
- DMA

dafür
- ist ein Cortex-M0 und kein M0+
- kein Analogcomparator
- kein Switch-Matrix-Feature, nur reguläre Alternate Functions. In wie 
weit die Switch-Matrix wirklich besser ist muß ich mir aber noch im 
Detail anschauen

Auch wenn "Active" dran steht ist das Ding noch nicht draußen. Es gibt 
auch noch kein Reference Manual. Dauert also noch ein wenig für den 
echten Vergleich.

Preislich sagt ST 0.425 US$ @ 10000. Beim schon erhältlichen 
STM32F050G4U6 werden 0.8 US$ @ 10000 angegeben, Mouser verlangt für 10 
Stück dann 1,61 EUR. Es besteht also gute Hoffnung daß das Teil auch in 
kleineren Stückzahlen unter 1 EUR landet.
OP #3231745
Lesenswert?

Gerd E. schrieb:
> NXP ist nicht alleine auf dem Markt:
>
> eben den hier gesehen:
> http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1826/PF258968
>
> TSSOP20 mit 0,65-Pitch würde ich noch als Bastlerfreundlich bezeichnen.

Nett! Ähnlich ist auch der XMC1000 von Infineon. Die gibt es auch im 
TSSOP-Gehäuse und unter in 1€ Stückzahlen. Im DIP Gehäuse ist NXP 
allerdings im Moment außer Konkurrenz.

>Im Vergleich zum LPC hat der
>- 12 Bit ADC mit 1µs Sampletime
>- 48 MHz
>- DMA

>The Flash memory access time is adjusted to the fHCLK frequency (0 wait >state 
from 0 to 24 MHz and 1 wait state above 24 MHz)

Sieht so aus, als wenn bei 48MHz ein wait state benötigt wird. Damit 
relativiert sich die Geschwindigkeit wieder...

DMA ist allerdings ein nettes Feature, welches NXP und Infineon nicht 
haben.

Der SCT im LPC81X ist prinzipiell auch noch ein interessantes Feature. 
Allerdings scheint es schwierig, ihn wirklich auszunutzen.
#3231770
Lesenswert?

Tim .  schrieb:
>>The Flash memory access time is adjusted to the fHCLK frequency (0 wait >state
> from 0 to 24 MHz and 1 wait state above 24 MHz)
>
> Sieht so aus, als wenn bei 48MHz ein wait state benötigt wird. Damit
> relativiert sich die Geschwindigkeit wieder...

Stimmt. In wie weit hängt allerdings davon ab was die für 
Prefetch-Technik eingebaut haben. Das steht im Detail normalerweise im 
Reference Manual, das ist aber noch nicht draußen...

Wenn Du aber z.B. schnellere PWM machen willst sind die 48 MHz natürlich 
schon praktisch.
OP #3231774
Lesenswert?

Gerd E. schrieb:
> Stimmt. In wie weit hängt allerdings davon ab was die für
> Prefetch-Technik eingebaut haben. Das steht im Detail normalerweise im
> Reference Manual, das ist aber noch nicht draußen...

Bei den ST32F05x ist der Prefetch-Buffer 3x4 Bytes groß. Ich gehe davon 
aus, dass es beim ST32F03x identisch ist. Das hilft nur bei sehr kleinen 
Schleifen...

> Wenn Du aber z.B. schnellere PWM machen willst sind die 48 MHz natürlich
> schon praktisch.

Normalerweise kann der Takt für die Peripherie getrennt vom Core 
eingestellt werden?
OP #3231776
Lesenswert?

Tim .  schrieb:
>> Wenn Du aber z.B. schnellere PWM machen willst sind die 48 MHz natürlich
>> schon praktisch.
>
> Normalerweise kann der Takt für die Peripherie getrennt vom Core
> eingestellt werden?

Ok, ich muss mich da korrigieren. Beim LPC810 wird nur der USART-Takt 
direkt von der Main CLK abgeleitet (Warum auch immer?). Die übrige 
Peripherie wird entsprechend der CPU getaktet.
Gast #3275911
Lesenswert?

Hallo, eine Frage: Ich habe dieses Mini-Kit und einen USB Adapter zum 
programmieren. Wie schließe ich das richtig an? Muss das Mini-Kit selbst 
am USB-Port hängen? Ich hatte VCC vom Board und dem Adapter zusammen 
geschlossen und beide an USB gesteckt, aber dann hats den 
Programmieradapter gehimmelt.
OP #3275915
Lesenswert?

lpc schrieb:
> am USB-Port hängen? Ich hatte VCC vom Board und dem Adapter zusammen
> geschlossen und beide an USB gesteckt, aber dann hats den
> Programmieradapter gehimmelt.

Tja, gut dass die USB-RS232 Adapter fast nix kosten.

Wenn Du die Stromversogung vom RS232 nimmst, bleibt der USB-Anschluss am 
Mini-Kit unbenutzt. Du musst nur folgende Leitungen verbinden:

Adapet - Mini Kit
5V -  VCC
GND - GND
RXD - RXD
TXD - TXD

Den Rest einfach offen lassen. Bei mir tut es ein billigster PL2303-HX 
RS232 Adapter.
Gast #3305459
Lesenswert?

Sieht aber aus, als bekommt man nur einen Gutschein,
den man dann bei Embedded Artists einlösen kann?
Wenn ich richtig gesehen habe, dann fallen Versandkosten
in Höhe von 22.20 Euro bzw. 7.60 Euro an...
(zumindest, wenn man das LPC812MAX, nicht das LPC810MAX auswählt,
LPC810MAX habe ich auf die schnelle nicht gefunden)
OP #3305499
Lesenswert?

Ingo schrieb:
> den man dann bei Embedded Artists einlösen kann?
> Wenn ich richtig gesehen habe, dann fallen Versandkosten
> in Höhe von 22.20 Euro bzw. 7.60 Euro an...
> (zumindest, wenn man das LPC812MAX, nicht das LPC810MAX auswählt,
> LPC810MAX habe ich auf die schnelle nicht gefunden)

Keine Ahnung, vielleicht sind die Versandkosten auch im Gutschein 
enthalten? 7.6EUR sind jetzt aber nicht so viel. Die wollen die Boards 
halt nicht kostenlos weggeben, damit die nicht bei Leuten Schrank 
verstauben, die sie nur genommen haben, weil sie kostenlos waren.
Gast #3344057
Lesenswert?

Tim .  schrieb:
> Die Versandkosten sind im Gutschein enthalten, man muss also nur 1€
> zahlen.

+ 25% Steuern = 1,25 Euro
Versand mit UPS.

> Allerdings hat es ewig gedauert, bis NXP mir den Gutschein zugesendet
> hat.

Das stimmt, ich habe ca. 2 Wochen auf den Gutschein gewartet. Dann geht 
es schnell: am 30.09. bei embeddedartists bestellt, eben ausgepackt.
Gast #3344078
Lesenswert?

Dr. Sommer schrieb:

> Gäbe es einen Compiler der das Bit Banding vom
> ARM unterstützen würde ging's wohl in 6 bytes.

Hätte der Hund nicht geschissen, hätte er den Hasen sicher gefangen...

> Der Vorteil ist
> allerdings - es kann 4 GB an I/O Registern geben

Das ist ja mal 'n extrem häufig benötigtes Feature. Insbesondere im 
Bereich kleiner µC-Anwendungen...

> bei einigen AVR's
> (ATmega*8 wimre?) läuft der I/O Adress Space über

Ja, das stimmt. Allerdings bemüht sich Atmel, die Register, auf die ein 
besonders schneller Zugriff wünschenswert ist, im IO-Space zu halten. 
Gut, das klappt natürlich nicht für jeden Anwendungsfall.

> was die Sache dort so
> ineffizient wie beim ARM macht.

Noch lange nicht. Zwei Ticks statt einem und vier Bytes Code statt zwei. 
Und damit immer noch wesentlich effizienter als ARM.
Gast #3344145
Lesenswert?

@c-hater: Was willst Du uns damit sagen?

1. Nur mal so
2. Der AVR ist tot, es lebe der AVR

Falls 2.: Es gibt genügend Leute, die sich aufgrund der Preisentwicklung 
im 32bit Bereich überhaupt nicht mehr mit 8bit beschäftigen. Wozu auch. 
Es macht in diesem Fall Sinn, auch bei kleinen Anwendungen bei 32bit zu 
bleiben. Krampfhaftes Festhalten an Technologien des 20. Jahrhunderts 
ist eigentlich nur dann angeraten, wenn Altlasten zu pflegen sind.

(Falls sich jemand am Begriff "Sinn machen" anstelle "Sinn haben" stört, 
ich bleibe dabei)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren