PWM und AD-Wandlung zeitgleich

Gast #208052
Lesenswert?

Hallo
Ich möchte mittels PWM ein Rechtecksignal ausgeben und "zeitgleich"
den AD-Wandler arbeiten lassen. Alleine geht es prima.
Benutze einen Atmel Mega8 und oder Mega16 Jedenfalls Timer1 im
PWM-Modus läuft alleine super. AD-Wandlung läuft alleine auch super.
Führe ich beide Teile zusammen, dann bekomme ich zwar mein PWM-Signal
aber die AD-Wandlung schlägt fehl!
Zuerst wäre ich über eine Antwort, ob es überhaupt geht schon sehr
zufrieden :-)gibt es was zu beachten? Benutze BASCOM Basic habe aber
PWM und AD-Wandlung direkt über Register laut Datenblatt eingestellt..
Na gut erstmal vielen Dank.
Gast #208053
Lesenswert?

Also zeitgleich gehts nicht, da erst PWM oder die AD-Wandlung
abgearbeitet werden muß. Dazu müsste der µC eine
Multitaskingeigenschaft haben, welcher der Controller nicht hat.

Also erst das eine , dann das andere machen, vielleicht Interrupt
gesteuert.
Gast #208058
Lesenswert?

Hi!

PWM und AD Wandlung sollte auf jedenfall funktionieren! Ich hab selbst
eine Schaltung gebaut, die 4 analoge Spannungen über 4 Kanäle des ADC
digital konvertiert und je nach Wert über 4 Portpins ein
frequenzmoduliertes Signal ausgibt. Für ne PWM wären praktisch nur
geringe Änderungen möglich.

Übrigens mache ich die AD-Umwandlung in einer While-Schleife und die 4
FM Signale mache ich per Software... D.h. ich lasse einen Timer laufen
und bei nem Overflow ziehe ich bei 4 Variablen eins ab. Wenn eine der
Variablen 0 erreicht, dann wird der Portpin getoggelt!

Als uC verwend ich den Mega8 mit 16 MHz Takt. Als Compiler hab ich den
AVR-GCC in Verwendung!

mfg
Andreas
#208059
Lesenswert?

"Also zeitgleich gehts nicht, da erst PWM oder die AD-Wandlung
abgearbeitet werden muß."


Das ist Mumpitz.
Da ADC und PWM separate Hardware haben, gehen sie sehr wohl
gleichzeitig.

Anders ginge es auch gar nicht, da eine PWM ja nicht unterbrochen
werden darf.

Allerdings können die Schaltflanken der PWM den ADC stören.
Also die PWM möglichst wenig belasten (Reihenwiderstand 100_Ohm
unmittelbar am Ausgang und separate Treiberstufe (74HC04).

Ich benutze für die PWM eh immer einen 74HC04, der dann über eine
hochkonstante 5V-Referenz versorgt wird.
Denn die ungenauen digitalen 5V eines 7805 sind für 16Bit PWM ein
Witz.


Peter
Gast #208060
Lesenswert?

Vielen Dank für die schnellen Antworten..Also prinzipiell gehts. Und mit
meinem Atmega16 hats jetzt auch funktioniert, wenn ich den timer1 mit
einem prescaler >1 betreibe.. naja jedoch wie peter schon vermutete,
stört der pwm den ad für meine begriffe zu sehr..
Aber dies ist letztlich auch ein Ergebnis. Vielen Dank.

Denny
Gast #208061
Lesenswert?

"Ich benutze für die PWM eh immer einen 74HC04, der dann über eine
hochkonstante 5V-Referenz versorgt wird.
Denn die ungenauen digitalen 5V eines 7805 sind für 16Bit PWM ein
Witz."

Hallo Peter ,
sonst verstehe ich Deine Beiträge recht gut , denk ich .
Dieses mal aber nur Bahnhoff ...
Kannst mal bisschen besser erklären ?
Gast #208062
Lesenswert?

Wenn deine PWM 16 Bit hat und du sie zum Erzeugen eines Analogsignales
über einen Tiefpaß (DA-Wandler) nutzen möchtest, dann hast du
Ausnutzung der kompletten 16 Bit eine Schrittweite von 5V/(2^16). Wenn
die Betriebsspannung schon einen absoluten Fehler im 2-3 stelligen mV
Bereich hat, dann nützt dir die hohe Auflösung der PWM nichts mehr.

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