Mikrocontroller mit DAC?

OP #6801345
Lesenswert?

Hallo,

ich brauche zwecks eines Projekts einen analoge Spannung, die ich mit 
einem uC vorgeben kann. Wie kann ich das lösen? Gibt es günstige uCs mit 
einem DAC?
Kann ich einfach einen PWM Ausgang mit einem Tiefpass (RC) glätten?
Gibt es ICs, die ein PWM signal wandeln?
Gast #6801358
Lesenswert?

Dieter H. schrieb:
> Hallo,
Ebenso.
> ich brauche zwecks eines Projekts einen analoge Spannung, die ich mit
> einem uC vorgeben kann. Wie kann ich das lösen?
Es gibt viele Lösungen.
> Gibt es günstige uCs mit einem DAC?
Ja.
> Kann ich einfach einen PWM Ausgang mit einem Tiefpass (RC) glätten?
Ja.
> Gibt es ICs, die ein PWM signal wandeln?
Aber sicher doch.

Und bist du jetzt schlauer???
(Firma: S-C-I DATA GbR) #6801781
Lesenswert?

Jörg W. schrieb:
> Das hat mich schon etwas geschockt, als ich das erste Mal mit den Teilen
> zu tun hatte.

Na es Gibt wenigstens dank den XMSP's auch Errata's, bei vielen anderen 
MPU's geht's einfach nicht und keiner weis warum ;-)
Dazu sind wir als Fremdfirmen-Betatester da, die von TI im 
Unterstützerteam sind;-)

Nee wenn man ein Aktuellen und von TI supported Kompiler verwendet, muss 
man sich nicht um die Errata kümmern, denn das macht der Kompiler für 
dich.

Natürlich nur wenn man auch eine aktuelle Version hat.
Moderator Persönliche Seite #6801813
Lesenswert?

Patrick L. schrieb:
> Nee wenn man ein Aktuellen und von TI supported Kompiler verwendet, muss
> man sich nicht um die Errata kümmern, denn das macht der Kompiler für
> dich.

Wie kümmert sich ein Compiler drum, wenn man einen Timer nicht während 
des Betriebs sicher auslesen kann, ohne ihn vorher anzuhalten? Baut der 
Compiler dann automatisch Code ein, der den Timer kurz stoppt? Das würde 
mir anders über die Hutschnur gehen …
(Firma: S-C-I DATA GbR) #6801867
Lesenswert?

Jörg W. schrieb:
> Wie kümmert sich ein Compiler drum,

Je nach Errata bzw Bug.
IAR zum Beispiel, aus Erfahrung:
BUG "insert a Nop bevore Set General Interrupt Enable bit"
generierter Code:
1
NOP                       ; If important on Architectur of MSP430FR2355 boefore GIE set!
2
bis.b   #GIE+CPUOFF,SR    ; Set General Interrupt Enable bit
Sprich Kompiler fügt es selber ein

Dein genanntes oder ähnliches:
Kompiler gibt Warnung aus und macht dich auf den Bug aufmerksam.
Schlägt oft wen möglich, auch grad Lösung vor.

In den Errata's steht das übrigens auch welche Kompiler diesen Bug 
selber und wie lösen, oder dir ein Lösungsvorschlag unterbreiten.

Mittlerweile sind da sogar auch GNU Kompiler mit erwähnt.

Ich für mein Teil lese aus Prinzip zuerst Datenblatt und allenfalls das 
Errata wenn ich ein "Livesupported Design" mache, ansonsten würde mir 
der QM was Husten.

Jeder  MPU Kennt Bug's
In PIC wimmelte es, als ich den noch verwendete und ein Errata gab's in 
dem sinne noch nicht. AVR's kennen auch längere Erratas (Wurde an 
anderer Stelle hier im Forum aber auch schon von Nutzern Zitiert)
Ja selbst in Intels usw.

Es ist nicht Grundlos das die TI MSP430 zu den wenigen MPU's gehören die 
FDI Zulassungen haben. Ein PIC würde es beispielsweise wohl eher nicht 
in einen Herzschrittmacher schaffen.
#6801942
Lesenswert?

PSoC schrieb:
> Zwar nicht der günstigste aber sehr komfortabel bzgl. DAC sind auch die
> PSoc5LP von Infineon/Cypress.

Konfortabel >> Voellig einverstanden
Nicht der Günstigste >> Fuer einige exempleren sehr billig

Also fuer $10 bekommt man ein kit genennt CY8CKIT059, processorboard 
PSOC-5lp MIT abbrechbaren Programmer. Enthaelt ARM prozessor 4 Voltage 
DACs, 4 Strom-DACs, 2 SAR-ADCs, 1 High-precision Delta-Sigma ADC der an 
jedem Pin gemultiplexed werden kann und noch viel mehr. Alles on-board 
ohne zusatzliche Komponenten.

Ja, teuerer wird es wenn man der processor auf eine eigene platine haben 
woll, dann kostet er wahrscheinlich mehr als $10 aber fuer hobbie reicht 
oft der CY8CKIT059 (oder einer der andere developer-boards, auch 
verfuerbar mit Anschlusz fuer Arduino-shields)

Patrick aus die Niederlaende.
Moderator Persönliche Seite #6801949
Lesenswert?

Patrick L. schrieb:
> Dein genanntes oder ähnliches:
> Kompiler gibt Warnung aus und macht dich auf den Bug aufmerksam.

Na gut, das geht noch.

Allerdings fand ich den Bug selbst (und dass er auf der ewigen 
Weltbestenliste verblieb, ohne Chance, ihn zu reparieren) arg 
bescheuert. Wenn ich einen Timer erst anhalten muss zum sicheren 
Auslesen, dann hat der Hardwaredesigner schlicht was vergeigt 
(Synchronizer verpasst). Das gehört repariert und nicht nur 
dokumentiert.

Damit war das Teil damals für uns praktisch unbrauchbar, denn weder 
zwischenzeitliches Anhalten noch dreimaliges Auslesen wären in dieser 
Anwendung machbar gewesen. Der Kunde, der da unbedingt einen MSP430 drin 
haben wollte, war dann aber eh abgesprungen.
Gast #6801952
Lesenswert?

Patrick C. schrieb:

> Also fuer $10 bekommt man ein kit genennt CY8CKIT059, processorboard
> PSOC-5lp MIT abbrechbaren Programmer. Enthaelt ARM prozessor 4 Voltage
> DACs, 4 Strom-DACs, 2 SAR-ADCs, 1 High-precision Delta-Sigma ADC der an
> jedem Pin gemultiplexed werden kann und noch viel mehr. Alles on-board
> ohne zusatzliche Komponenten.

Hast du einen Link wo dieses Kit zu dem Preis noch zu bekommen ist?
Gast #6801968
Lesenswert?

H. H. schrieb:
>> ich brauche zwecks eines Projekts einen analoge Spannung, die ich mit
>> einem uC vorgeben kann. Wie kann ich das lösen?
>
> Bei Geheimprojekten ist Hilfe kaum möglich, da kennt ja niemand die
> Anforderungen.

Die vielen Antworten beweisen doch das Gegenteil ;-)
Mein Vorschlag wäre ein Motorpoti.
Damit können dann die 230 VAC beliebig verändert werden.

Dieter H. schrieb:
> STMs kriegt man ja gerade gar nicht.

Welchen hattest Du Dir denn ausgesucht? Hast Du mal eine LED blinken 
lassen?
Will Dein Lehrer vielleicht einen 8051 sehen?
(Firma: S-C-I DATA GbR) #6801969
Lesenswert?

[OT]
Jörg W. schrieb:
> Damit war das Teil damals für uns praktisch unbrauchbar, denn weder
> zwischenzeitliches Anhalten noch dreimaliges Auslesen wären in dieser
> Anwendung machbar gewesen.

Ja tut mir Leid für Dich, hättest du mich gefragt hätte ich dir eine 
bessere Lösung gehabt.
War Tatsächlich da ein Betatester hab noch von den XMSP dieses Bugs hier 
;-)

Beste Lösung (Etwas verrückt aber ging) Timer nicht in RAM oder Register 
Kopieren, sondern in eine andere Pheripherie die du nicht brauchst und 
von dort dann abholen. Ist zwar ein Undokumentierter Workaround (Auf 
mein Vorschlag diesen aufzunehmen Antwort von TI "Zu Komplex für den 
Nutzer")

Ich habe Hier einer mit Integriertem LCD Kontroller, da nutze ich LCD 
Segmentspeicher für solche Sachen, von Pins die eh nicht ausgeführt 
sind.
Obendrein sind die Befehle auch meist schneller als zuerst in ein RAM zu 
kopieren. Manchmal nutze ich auch PIN I/O Pheripherien von nicht 
ausgeführten Pins, für solche (Makaberen Zwischenspeicher) man kann sich 
so ein paar Byte mehr RAM "Ergattern" da ja jeder Befehl der auf RAM 
passt, passt auch auf Pheripherie.
Auch wen MPY vorhanden ist, mache ich Oft über Berechnungen 
Speicherzugriffe und verwende dann je nach art der Adressierung eines 
der Res(8bit) oder Res(16bit) Register. Sehr schnelle Zugriffe lassen 
sich so auch mit dem MAC der MPY32 machen ;-)
"Multiplikation und automatisches Addieren, über einen DMA Kanal 
ersetzen den von mir aus der Z80er zeit fehlenden LDIR Befehl" eignet 
sich hervorragend für Tabellen.

Der Bug war ähnlich sch...e wie der Coproz Bug von Intel damals.

Also wenn wer Probleme mit Erratas hat, mich fragen.
Wen ich den XMSP dieses MPU's besitze weis ich in der Regel auch ne 
Lösung.
[/OT]
Moderator Persönliche Seite #6802002
Lesenswert?

Patrick L. schrieb:
> Also wenn wer Probleme mit Erratas hat, mich fragen

Ja, wenn sie mir nochmal übern Weg laufen. ;-)

Später haben wir dann aber auch die Xmegas durch ARM ersetzt, da wurde 
vieles unkritischer. Auch die Portierung von Atmel-ARM auf STM32 war so 
kompliziert nicht, am meisten Aufwand hat der völlig andere 
Extern-Interrupt-Kram gebraucht.

Aber ja, OT, außer dass es natürlich massig ARMs mit integriertem 
(Parallel-)DAC gibt. Aber Dieter ist sowieso verschwunden.
Gast #6802890
Lesenswert?

Patrick C. schrieb:
> Konfortabel >> Voellig einverstanden
> Nicht der Günstigste >> Fuer einige exempleren sehr billig

Im Prinzip meinte ich es genauso. Das Evalkit (wenn erhältlich) ist 
wirklich günstig, nur als Einzel-IC (auch in großen Stückzahlen) sind 
die PSoC meißt teuerer als andere.
Gast #6802896
Lesenswert?

m.n. schrieb:
> H. H. schrieb:
>>> ich brauche zwecks eines Projekts einen analoge Spannung, die ich mit
>>> einem uC vorgeben kann. Wie kann ich das lösen?
>>
>> Bei Geheimprojekten ist Hilfe kaum möglich, da kennt ja niemand die
>> Anforderungen.
>
> Die vielen Antworten beweisen doch das Gegenteil ;-)

Woher weißt du, ob die vielen Antworten eine Hilfe sind. Ohne die 
Anforderungen zu kennen, kann man nur vermuten, dass eine passende 
Lösung dabei ist. Der Nebelwand von möglichen Lösungsansätzen gibt dem 
TO immer noch keine Antwort, wie er zur Lösung SEINES Problem am besten 
vorgehen soll.
(Firma: S-C-I DATA GbR) #6802914
Lesenswert?

Jörg W. schrieb:
> Damit war das Teil damals für uns praktisch unbrauchbar,

Noch mal's Kurz ein [OT]
Habe nachgeschaut warum der Bug so lange Bestand:
Ursache trat nicht immer auf, es wurde am Stärksten wenn der Timer 
Asynchron zur CPU läuft. dan konnte tatsächlich wärend des Auslesen ein 
paar Bit Instabil werden und das Ausgelesene meist in den unteren 4 Bit 
Nibbles irgend was drin haben, nur nicht dass was im Timer stand.

Nachvolgende Timer die dann Ohne diesen Bug waren, Haben ein 
Zusätzliches Shadowregister bekommen (Was eine massive Layoutänderung 
des Die bedeutete) was dann aber der CPU ermöglichte den Timer Synchron 
auszulesen.
Deshalb blieb der Bug, über mehrere Versionen bestehen und auch auf 
mehreren Typen vorhanden.

Im übrigen ist mit genau diesem Bug (Der ja Logisch ist wen CPU und 
Timer asynchron getaktet werden) auch bei einigen Anderen MCU's 
vorhanden (Nicht TI) aber oft nicht dokumentiert. und sorgt in der 
Realen Welt immer wieder zu Kuriosen Verhalten von Programmen, auf 
Verschiedenen MCU's und Hersteller.
Einige haben dies sogar damit gelöst das die CPU Kurzzeitig angehalten 
wird, um Timer auszulesen, was ich speziell als schlechtere Variante 
ansehe als das Shadow Register.
[/OT]
Moderator Persönliche Seite #6802980
Lesenswert?

Patrick L. schrieb:
> Ursache trat nicht immer auf, es wurde am Stärksten wenn der Timer
> Asynchron zur CPU läuft.

Das war auch bei uns der Fall.

Allerdings: andere Architekturen synchronisieren in diesem Fall den 
Timer-Takt mit dem CPU-Takt (was natürlich zur Folge hat, dass er 
maximal halb so groß werden kann, hätte uns aber genügt), um genau das 
Problem zu vermeiden. Oder aber, gängige Methode beim mit dem 
32-kHz-Quarz getakteten Timer, man hat ein "busy"-Flag, auf das man 
warten muss.
Gast #6803014
Lesenswert?

Eine quick & dirty Lösung wäre auch, ein R/2R-Netzwerk aufzubauen. Falls 
Du schon einen µC Deiner Wahl hast und falls ein 8 Bit-Port noch frei 
ist, dann
wäre das R/2R-Netzwerk eine Notlösung.

Falls Du nicht so viele Widerstände parallel oder in Serie schalten 
möchtest, kannst Du mit E24-Werten leicht passende Wertekombinationen 
erzeugen: 10k/20k, 11k/22k, 12k/24k, 15k/30k, 18k/36k.
#6811600
Lesenswert?

Patrick C. schrieb:
> Loxo schrieb:
>> Hast du einen Link wo dieses Kit zu dem Preis noch zu bekommen ist?
>
> Sorry ich sehe jetzt das das in der Tat schwierig wird. Habe selber noch
> 10 davon liegen, vor 2 jahren gekauft ich denke bei Cypress selber.

Update : Es gibt noch andere kits die einen PSOC-5LP CY8C5868LTI-LP039 
benutzen als abbrechbarer programmer, die kann man auch 
neu-programmieren mittels USB-bootloader.
zB die folgende kits :
CY8CKIT-043
CY8CKIT-146

Beiden haben sowohl der programmer als auch irgendeinen PSOC4 drauf.
Preise  unter 10 euro (Lieferanten u.a. Farnell, RS, Digikey, Mouser)

Solange es noch verfuerbar ist... Ich habe mir gleich einige davon 
bestellt

Patrick aus die Niederlaende

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