Forum: Mikrocontroller und Digitale Elektronik Unterschied zwischen PSoC vs. normalem uC


von Manuel Stein (Gast)


Lesenswert?

Hallo,

kennt jemand elekt. Anwendungen/Beispiele, die man mit einem PSoC aber 
nicht/schwierig mit einem normalen uC (z.B. AVR) realisieren kann oder 
was kann man diesen programmierbaren Analog- und Digitalblöcke (Op-Amps, 
CT- oder SC- Blöcken) machen, was man mit einem noramlen uC nicht machen 
kann?
(habe keine großartigen elektronik Schaltungskenntnisse)

uC: Festgelegte Anzahl von DAC, ADC, PWM, Interfaces
PSoC: Festgelegte Anzahl von DAC, ADC, PWM, Interfaces + programmierbare 
Analog-(CT/SC-Blöcke) und Digitalblöcke

Was ich herausgefunden habe ->
-noramle uC haben nicht die Möglichkeit eines Delta Sigma ADCs  oder SAR 
ADC.
-Filter sind zwar softwaremäßig realisierbar, aber mit einem PSoC kann 
man diese wirklich hardwaremäßig realisieren.


Was der Unterschied zwischen den anderen PSoC-ADCs und den 
normalen-uC-ADCs ist oder was man mit den z.B. mit den Op-Amps, CT- oder 
SC- Blöcken anstellen kann, ist mir leider auch nicht wirklich klar?

Vielen Dank!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Manuel Stein schrieb:
> Was ich herausgefunden habe -> -noramle uC haben nicht die Möglichkeit
> eines Delta Sigma ADCs

Da es µC mit Delta-Sigma-ADC gibt (z.B. den MSP430F2013), ist auch das 
nicht das entscheidende Merkmal.

Der entscheidende Unterschied ist die konfigurierbare analoge 
Signalaufbereitung. Die ist bei µCs sonst nur recht rudimentär 
ausgeprägt.

https://en.wikipedia.org/wiki/PSoC

von Sven L. (svenl)


Lesenswert?

Mit dem PSoC lassen sich sehr gut weite Schaltungsteile und sinnvolle 
Peripherie (OpAmps) in das IC integrieren. Die externe Beschaltung wird 
einfach weniger und die Schaltung kompakter.

Eine Stärke der PSoC5 sind zum Beispiel auch deren analoger und 
digitaler Interconnect: Du kannst, bis auf die Stromversorgung und die 
Hardware-OpAmps, jede Funktion auf jeden Pin legen. Natürlich gibt es 
auch da Grenzen, aber da muss man das Ding schon sehr gut ausnutzen, 
dass das zum Tragen kommt.

Die digitalen Filterblöcke sparen Dir mitunter einen gesonderten DSP auf 
der Platine.

Viele Grüße!

Sven

von Günter N. (turtle64)


Lesenswert?

Geh mal auf http://www.cypress.com/cdc.
Dort findest Du jede Menge Infos zu den verschiedenen PSoCs. Es gibt 
PSoC1 und PSoC3 (8 Bit) sowie PSoC4 und PSoC5LP (32 Bit). PSoC1 würde 
ich aber als veraltet betrachten.
Vom PSoC4 gibt es das CY8CKIT-049-42XX für ca. 4 Euro. Das enthält neben 
dem PSoC4 noch einen PSoC5, der eine USB-Verbindung zu einem PC 
herstellt, über die programmert (aber nicht debugged) werden kann. Das 
Ding hat (aus dem Gedächtnis) 26 I/Os, mit denen man schon eine Menge 
anstellen kann.
Auf der Website gibt es auch Hunderte Beispiele für Projekte, die schon 
realisiert worden sind.

Ich habe schon viele Projekte mit PSoCs realisiert. Das Schöne ist, dass 
man fast keine andere Elektronik braucht, außer ein bißchen Vogelfutter.

Man kann in der Entwicklungsumgebung festlegen, welche analogen und 
digitalen Funktionen der PSoC haben soll, z.B. wie viele UARTs, und vor 
allem welche Pins diese Funktionen belegen sollen. Man kann sich quasi 
einen maßgeschneiderten Prozessor zusammensetzen.

Es gibt natürlich Grenzen. So kann z.B. nicht jede Funktion auf jeden 
Pin gelegt werden, und die Anzahl der A/D-Wandler ist auch begrenzt.

Am besten ist es, man lädt sich die Entwicklungsumgebung herunter (PSoC 
Creator) und registriert den Keil-Compiler einmal (kostenlos).
Dann konfiguriert man sich die Hardware, indem man die benötigten Module 
per Drag-And-Drop auf die entsprechende Seite zieht (ADC, DAC, Timer, 
Counter, Interrupts, MUX, OpAmp ...). Dabei muss man auch IO-Pins 
anlegen. Auf einer anderen Seite weist man dann den IO-Pins 
physikalische Pins zu. Dann übersetzen lassen. Dann weiß man, ob diese 
Konfiguration so geht.

Ich arbeite immer parallel mit Eagle und PSoC Creator. So kann ich das 
Layout einfach halten und bin gleichzeitig sicher, dass der PSoC kann, 
was ich will.

Die größeren PSoC5 arbeiten mit bis zu 80MHz und haben bis zu 256MB 
Flash und 64MB RAM. Es gibt verschiedene Gehäusebauformen, die TQFP100 
lassen sich noch recht gut von Hand löten.

von Sven L. (svenl)


Angehängte Dateien:

Lesenswert?

Günter N. schrieb:
> Die größeren PSoC5 arbeiten mit bis zu 80MHz und haben bis zu 256MB
> Flash und 64MB RAM. Es gibt verschiedene Gehäusebauformen, die TQFP100
> lassen sich noch recht gut von Hand löten.

Korrektur: 256 kByte Flash und 64 kByte RAM. Es lässt sich aber externer 
RAM anbinden, sofern man dies wünscht.

Interessant sind zum Beispiel auch fertige Bausteine für 
Quadraturdecoder, Entprellung, Display-Ansteuerung HD44780, I2C, SPI, 
UART usw. - Man muss nicht mehr jedes Register einzeln einstellen (kann 
man aber). Die APIs sind ausgereift und die Code-Erzeugung durch den 
PSoC Creator funktioniert gut.

Obwohl der Creator hier und da auch so seine Macken hat, gibt es 
wahrlich schlechtere IDEs.

Bei größeren Projekten freut man sich, dass man sich auf das wesentliche 
konzentrieren kann und nicht noch den ganzen I/O-Kram mit Timern, 
Interrupts, FIFOs usw. zu Fuß erledigen muss. Zudem ist das Clocking 
über die interne PLL sehr gut zu konfigurieren.

Anbei ein Beispiel wie schnell man 4 Taster mittels Debounce-Komponenten 
entprellt und dann in entsprechende ISRs überführt.

Meiner Meinung nach ist der PSoC in vielen Anwendungsfällen einem STM32 
mit gleicher Geschwindigkeit überlegen und die Entwicklungszeit wird 
deutlich verkürzt. - Bei höheren Taktraten haben die STM32 die Nase 
vorn.

Viele Grüße!

Sven

: Bearbeitet durch User
von Günter N. (turtle64)


Lesenswert?

Du hast natürlich Recht, 256kB Flash und 64MB RAM.
Man kann einen Teil des Flash auch als EEPROM einrichten, um Parameter 
dauerhaft zu speichern.
Wenn man mit sich ständig ändernden Werten zu tun hat und den letzten 
Messwert auch über ein Ausschalten hinaus erhalten will, ist es günstig, 
ein FRAM (gibt es jetzt auch von Cypress) mit einzubauen. Die sind 
(anders als EEPROMS) extrem schnell zu beschreiben und haben praktisch 
keine Lebensdauerbegrenzung.

von Jörg S. (joerg-s)


Lesenswert?

Ich hab sowohl mit PSoC1 und PSoC5 gearbeitet. Einerseits ist man 
teilweise recht schnell weil es die API gibt, aber immer wieder ist 
genau das das Problem. Bei speziellen Problemen muss man erst mal 
herausfinden was die API da überhaupt macht und wie sich der Block im 
Kern überhaupt verhält. Wann wird z.B. ein Interrupt zurückgesetzt? Bei 
einem normalen µC schaut man ins Datenblatt und weiß bescheid, beim PSoC 
sind solche Infos sehr schwer zu finden (wenn überhaupt). Je komplexer 
die Aufgabe wird, desto mehr häufen sich diese Probleme.
Und dann noch die Beschränkung der Blöcke bzw. das man schlecht planen 
kann ob alles rein passt. Beim letzten Projekt mit PSoC5 sind z.B. die 
Clock-Quellen "ausgegangen", es waren also nicht mehr möglich. Das ist 
dann sehr ärgerlich.
Sie sind schon sehr interessant, aber ob ich das weiter empfehlen 
würde.. Ich weiß nicht. Bei "normalen" µC hab ich mich noch nicht so oft 
geärgert :)

von Mark W. (kram) Benutzerseite


Lesenswert?

DIE ANWENDUNG, die nur mit dem PSoC realisierbar ist und nicht oder nur 
schwer mit anderen Micros,  gibt es meiner Meinung nach nicht. Genauso 
wie es DIE ANWENDUNG fuer Atmel, AD, MSP, STM32, NXP Controller nicht 
gibt. Man kann fast immer alles mit allen machen, es kommt immer drauf 
an, letzten Endes auch auf persoenliche Vorlieben.
Der groesste Vorteil ist vielleicht der, dass viele Komponenten bereits 
auf dem Chip vorhanden sind und flexibel konfiguriert werden koennen, 
was den Platzbedarf auf der Platine reduziert.
Was vielleicht noch nicht genannt wurde, der PSoC, zumindest der 5lp, 
kann sich auch aus seinem integrierten Boostkonverter versorgen. Der 
akzeptiert ab 0.5V, fuer Versorgung aus Solarzellen z.Bsp.. Sind aber 
noch externe Komponenten notwendig, spart aber auch Platinenplatz.

von pcrom (Gast)


Lesenswert?

Es gibt natuerlich sehr viel sachen die darueber geschrieben werden 
koennen, aber auch sehr unterschiedliche Projekten die man machen kann.

Also versuche dir mal ein Pojekt zu machen mit zB CY8CKIT-059 fuer $10

Meine erfahrung, kommende von ATMEGA2560 :

* Wahrende mein entwicklungstraject musste ich mit ATMEGA viel oefter 
hardware changes machen wenn die Specs meiner Project sich geander 
haben. So habe ich beim PSOC-3 einen 16-kanals temperaturmessgeraet 
gebaut, und nachdem kam die wuensch um auch Seebeck-Compensation dabei 
machen. Also dann musz die strom umgepolt werden. Mit ATMEGA und die 
meiste (alle?) andere prozessoren haette das ein hardware-redesign 
gewesen, jetzt nur software.

* PSOC3/5lp gibt viel mehr flexibilitaet, aber dadurch musz man selber 
das Project mehr professionel aufbauen. Kein problem aber am anfang kann 
das die lern-kurve erlangern, abhangig von deine erfahrung.

* Soviel eingebaut im PSOC, habe ich noch nie beim anderen uP gesehen : 
Ich baute ein Produkt wo ich viele sachen benoetigte (14+bit ADC, 20+ 
analoge eingangen, 4 directe strom-DACs 0..2mA, betrieb ab 1V0 mittels 
dcdc, platine-groesse max 10x15x2mm (!)). Beim PSOC hat mit das fast 
keine extra componenten gekostet. Ich kenne weiter auch kein uC wo das 
alles drin ist.

* Die resources (libs) sind gut documentiert und von Cypress selber 
unterstutz, auch mittels guten service. Meine erfahrung mit zB Atmel ist 
das man mehr die guten libs zusammen suchen musz. Wenn man die einmal 
hat (FatFs, Lufa, Bootloader, Twi usw) hat man mehrere ansprechpunkten. 
Beim Cypress 1 ansprechpunkt, die koennen dich mit (fast) alles helfen. 
Und es gibt sehr viele libs

* Man brauch viel weniger als beim ATMEGA im datasheet zu gucken; alles 
ist integriert im IDE. Statt auf zu suchen welche bits auf welche porten 
man setzen musz, klickt man im design an wie man die port benutzen woll. 
Dabei kann das design eber optimiert werden fuer 3v3/5v0 oder extra 
hohes temperaturbereich

* Sehr gutes upgrade-traject beim PSOC : Alles 3/5lp libraries sind 
gleich und funktionieren auf alle varianten. Man designed auf dem 
groessesten variant und wenn man fertig ist kann man ihm fuer andere 
varianten kompilieren. Pin-compatible. Verschiedene packages. Hat auch 
damit zu tun das PSOC viel neuer ist und keine historische bagage mit 
braucht zu nehmen.



PS : Mit PSOC meine ich PSOC3/5lp, die andere habe ich keine erfahrung.

von Manuel Stein (Gast)


Lesenswert?

Vielen Dank! Echt Super von Euch, für die sehr schnelle Antworten.

@Sven L. - Da ich nicht so eingebettet bin im Bereich Elektronik, was 
für Beispiel-Schaltungen könnte ich denn in den PSoC-uC verlagern?

@Günter Nowinski - Leider kann ich mir auch hier keine Elektronik 
vorstellen, die ich durch einen PSoC sparen würde. Könntest du mir bitte 
ein kleines Beispiel nennen?

@Mark W. - Könntest du mir bitte ein Beispiel nennen indem ich 
Komponenten spare?

@pcrom - Leider kann ich einfach nicht erkennen, wo du jetzt Elektronik 
Bauteile sparen konntest, da ich wieder keine Elektronik-Schaltung 
kenne.

Könnte mir jemand eine Beispiel Elektronikschaltung posten, die ich 
innerhalb eines PSoCs realisieren könnte, jedoch nicht in einem normalen 
uC oder ein paar allgemeine/gängige Elektronikschaltungen, die auf fast 
jede Platine gehören, aber die man sich mit einem PSoC sparen kann?

von Sven L. (svenl)


Lesenswert?

Manuel Stein schrieb:

> @Sven L. - Da ich nicht so eingebettet bin im Bereich Elektronik, was
> für Beispiel-Schaltungen könnte ich denn in den PSoC-uC verlagern?

Direkte Beispiele kann ich Dir keine nennen, da diese Firmengeheimnisse 
sind, aber es gibt ein paar Szenarien:

Die internen Opamps können intern sowie auch extern beschaltet werden. 
Üblicherweise realisiert man damit zum Beispiel Mess- bzw. 
Intrumentenverstärker, um die Auflösung des wirklich guten ADCs auch gut 
ausnutzen zu können. Oder man benutzt die Opamps in Kombination mit 
FPGA-Schmitt-Triggern zur Signalformung bei jeglichen 
Empfangsschaltungen etc.

Des weiteren bietet es sich an jegliche Formen von Logikgattern, die man 
extern einsetzen würde, in den FPGA-Teil zu setzen. Das können einfache 
Dinge wie Negatoren oder einzelne Gatter sein, aber auch komplexere 
Dinge wie zum Beispiel ein Hardware-Zähler. Es wäre zum Beispiel möglich 
mit den entsprechenden Flipflops einen Hardware-Zähler im FPGA zu 
implementieren, mit welchem man einen Frequenzzähler umsetzen kann.

Ein Beispiel, was ich schon gesehen habe: Ein I/Q-Demodulator mit 
digitalen Filterblöcken und kompletter A/D- und D/A-Wandlung alles ohne 
externe Beschaltung. In Software ist da noch gar nichts passiert, 
sondern rein in Hardware.

Man muss natürlich die Grenzen des Designs kennen, aber die Auslegung 
des PSoCs ermöglicht es den Controller an vielfältige 
Anwendungsszenarien anzupassen, ohne auf einen anderen Typen 
auszuweichen. Was ich mit 10 verschiedenen dsPICs oder STMs oder SAMs 
machen kann, dafür reicht vermutlich ein einziger PSoC5LP, wobei es von 
diesem auch zig Versionen gibt (zusätzliche on-board Hardware wie zum 
Beispiel CAN-Transceiver oder ähnliches).

Weiter oben hat jemand den internen Boost-Converter genannt: Es ist in 
der Tat so, dass man nur die Speicherdrossel und die Diode extern 
braucht und schon kann man das Ding ab 0,5 V selbst versorgen.

Das Ding ist für kostenoptimierte Designs in hohen Stückzahlen gemacht, 
denn man kann i.d.R. 1-2 externe ICs und das dazugehörige Hühnerfutter 
wegoptimieren. Aber auch bei geringen Stückzahlen spart der Controller 
bei vielen Standardanwendungen enorm Entwicklungszeit gegenüber den 
Konkurrenzprodukten. Leider sind die PSoC5LP recht teuer mit ungefähr 
$10 bei 1k Abnahme.

Just my 2ct....

Sven

von Reiner W. (reiner_w)


Lesenswert?

Sven L. schrieb:
> Anbei ein Beispiel wie schnell man 4 Taster mittels Debounce-Komponenten
> entprellt und dann in entsprechende ISRs überführt.

Das Bild zeigt ja schon, dass sich die Programmierung etwas von der 
konventionellen C-Entwicklung unterscheidet.
Der PSoC Creator stellt grafische Werkzeuge zur Verfügung, die die 
Verbindungen zwischen Analogen/Digitalen Komponenten generiert.
Der Vollständigkeit halber sei angemerkt, das die Debouncer Komponenten 
gleich 8 Tasten auf einmal debouncen kann (Sofern sie sich in einem 
PIN-Block befinden).

Jörg S. schrieb:
> Bei speziellen Problemen muss man erst mal
> herausfinden was die API da überhaupt macht und wie sich der Block im
> Kern überhaupt verhält.

Na ja, das sollte eigentlich für alle Plattformen gelten;-) Die 
Unterlagen von Cypress sind eigentlich sehr gut. (Wenn man dann mal die 
passenden gefunden hat) Die Datasheets zu den Komponenten sind in der 
IDE stets verfügbar und sauber gepflegt. Dafür könnte es für mein 
Geschmack ruhig etwas mehr Beispiele geben.

Mark W. schrieb:
> DIE ANWENDUNG, die nur mit dem PSoC realisierbar ist und nicht oder nur
> schwer mit anderen Micros,  gibt es meiner Meinung nach nicht.

Wohl war. Allerdings ist es schon so, dass die meisten (kleineren 
Projekte) ohne zusätzliche Hardware auskommen, weil halt ne Menge 
analoger/digitaler Standardkomponenten gleich mit im Chip drin sind.

von Günter N. (turtle64)


Lesenswert?

Hallo Manuel,

in einem Projekt hatte ich z.B. einen analogen Sensor. Der Messwert 
wurde im PSoC über einen OpAmp mit einstellbarem Gain verstärkt, dann 
gefiltert und mit einem ADC digitalisiert. Weiter wurden 2 serielle 
Schnittstellen verwendet und eine EEPROM-Komponente. Mehrere Tasten zur 
Bedienung wurden auch direkt angeschlossen.

In einem anderen Projekt habe ich mit einem einzigen PSoC3 6 
UART-Schnittstellen in Hardware realisiert sowie einen DMS-Verstärker, 
hier allerdings mit zwei INA125 zusätzlich.

Ich sage nicht, dass das mit anderen Controllern nicht geht. Ich habe 
aber den Eindruck, dass die Konfigurierbarkeit der analogen und 
digitalen Hardware viele Möglichkeiten bietet.

von Mark W. (kram) Benutzerseite


Lesenswert?

Manuel Stein schrieb:
> Vielen Dank! Echt Super von Euch, für die sehr schnelle Antworten.
>
> @Mark W. - Könntest du mir bitte ein Beispiel nennen indem ich
> Komponenten spare?

Schau Dir mal das Voltmeter Beispiel von Cypress an und ueberlege wie 
man das mit einem uC loesen wuerde, um auf uV Aufloesung zu kommen. Der 
PSoC kann das mit nur auf dem Chip vorhandenen Komponenten.
Also generell wurde ich sagen, dass saemtliche Analogsensoren mit den 
eingebauten Komponenten gut auswertbar sind.
Alles was bei anderen uC noch an Analogfrontend extern dazu kommt, hat 
man bereits auf den Chip. Also Opamps, Filter, Analog Multiplexer(64 
Eingaenge), Comparatoren usw.

Letztendlich muss man das selbst ausprobieren und vergleichen. Du kannst 
eine Aufgabenstellung an 10 verschiedene Leute vergeben und realisieren 
lassen. Du wirst 10 verschiedene Loesungen, die bestenfalls alle den 
Anforderungen entsprechen, bekommen. :-)

von Gästchen (Gast)


Lesenswert?

So eindeutig ist die Unterscheidung nicht mehr zu machen. Meiner Meinung 
nach ist ein PSOC auch nur ein "ganz normaler" µC:

Versucht man die Unterscheidung nur anhand der Features, dann stellt man 
schnell fest, dass viele analoge Featuers kein Alleinstellungsmerkmal 
sind.

Beispiel:
PIC24FJ128GC006 - da ist neben OPV, einem Sigma-Delta-ADC und 
Komparatoren auch ein Interconnect-Netzwerk drin - jede digitale 
Funktion auf jeden Pin. Naja, fast, wie bei Cypress halt auch. Das oben 
erwähnte Voltmeter geht mit dem PIC also auch.
Das ist aber nich mal PIC-spezifisch, sondern eine Eigenschaft von 
vielen modernen µC - viel Peripherie, auch analoge.

Der herausstechende Vorteil der PSOC ist aus meiner Sicht die größere 
Flexibilität der Peripherie, zum Beispiel dieser FPGA-Teil. Da kann man 
in Verilog eine handgeklöppelte exotische Schnittstellen reintun, die 
sonst ein CPLD erfordern würden.
Oder die Ressourcen für mehr Standardschnittstellen nutzen, das dafür 
mit simplen, fertigen Blöcken.

PS:
Wer Bluetooth-Module sucht,sollte sich die PSOC4-Module ansehen.
Statt wirrem IOT-Gebrabbel (wie bei Redpine oder Bluegiga) gibts bei 
Cypress nämlich Datenblätter, vollständige Zertifikate und kaufbare 
Hardware. Ohne Registrierung.
Für solche Geschichten fast unerhört...

von Manuel Stein (Gast)


Angehängte Dateien:

Lesenswert?

vielen Dank !!!
habe Auch noch ein paar nette Sachen gefunden.

Der PSoC1 bietet drei verschiedene programmierbare Analog-Hardware 
Blöcke. Der erste der drei Blöcke ist ein sog. „Continuous Time“-Block 
(CT-Block). Dieser benötigt keinen Takt. Er realisiert z.B. Absolut- 
oder Differenzverstärker, Schwellwertdetektoren oder Verstärker mit 
einstellbarer Verstärkung. Die anderen zwei Blöcke arbeiten nach dem 
Swicht-Capacitor-Verfahren (SC-Block) zeitdiskret. Sie ermöglichen das 
Integrator-Verhalten. Die beiden Blöcke unterscheiden „Typ C und D“ sich 
ein wenig und sind lokal verbunden. Der detaillierte Aufbau ist im 
„Technical Reference Manual (TRM) PSoC 1“ dokumentiert. In diesen 
Blöcken können z.B. Filter 2.Ordnung, AD-und DA Wandle, andere 
dynamische Komponenten realisiert werden. 
Multiplexer verbinden die Blöcke untereinander.
Die jeweiligen Bauteile lassen sich über die jeweiligen Register 
konfigurieren z.B. die RESISTORMATRIX „CT-Block“ (Reg.-RTapMUX) kann 
verschiedene Widerstände dazu- und abschalten. 
Die CT- und SC-Blöcke manuell zu konfigurieren ist sehr umständlich. Der 
PSoC-Designer bietet daher fertige UserModule an z.B. Verstärker, 
Tiefpass, … .Der Entwickler  muss sich nicht um die interne Verschaltung 
bzw. Bauteil Konfig. Kümmern.                     Der programmierbare 
digitale Block basiert auf dem gleichen Grundkonzept wie der analoge. 
Dieser kann als Zeitgeber, Zähler, Pseudozufallsgenerator, 
Pulsbreitenmodulator oder zur zyklischen Redundanzprüfung verwendet 
werden. Ein Block enthält 8 FlipFlops und es existieren fertige 
Usermodule.

von Chris (Gast)


Lesenswert?

Und hier noch ein Psoc5 Beispiel fuer Arduinoliebhaber:
Beitrag "Re: PSoc 5lp Prototyping Kit Inbetriebnahme"

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
Noch kein Account? Hier anmelden.