Mikrocontroller mit DAC?

OP #6801345
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
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???
Gast #6801462
Zwar nicht der günstigste aber sehr komfortabel bzgl. DAC sind auch die 
PSoc5LP von Infineon/Cypress. Aber auch diverse PICs haben 5Bit (ob mehr 
weiß ich gerade nich) DACs.
(Firma: S-C-I DATA GbR) #6801660
Und die MSP430 bei TI können dies alle auch ;-)

Und wenn du es Richtig machst giebt's Einzelstücke sogar direkt bei TI 
als Free sample.
[Humor]
Bitte nicht Schlagen wenn ich nicht auch AVR oder PIC schreie ..GRINS..
[/Humor]
Aber es gibt auch die allseits beliebten TI-Launchpads ;-)
(Firma: S-C-I DATA GbR) #6801781
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
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
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
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
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
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
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
[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
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
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
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
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
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
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.
(Firma: S-C-I DATA GbR) #6803017
Alex schrieb:
> wäre das R/2R-Netzwerk eine Notlösung.

Habe ich gaaaanz früher noch bei GA's so ALTERA EPM-MAX7032 & Co 
gemacht.
(PS: Nicht mit MAXIM MAX7032 verwechseln das ist ganz was anderes)
Habe aber dazu R/2R Netzwerke im SIP genommen, die waren extra für das 
gemacht.
Ich glaube habe da sogar noch etliche von im Ersatzteillager :-D
#6811600
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

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.