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!
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
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
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.
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
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.
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 :)
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.
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.
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?
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
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.
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.
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. :-)
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...
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.