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.
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.
Wie immer bei solchen Problemen: Häng den Source mit an! In diesem Fall liegt der Fehler beim Anwender, d.h. es sollte gehen.
"Dazu müsste der µC eine Multitaskingeigenschaft haben, welcher der Controller nicht hat." Und , wenn der µC es in Hardware kann ? Geht sehr wohl . Nur dass die PWM den ADC stört ...
Ich weiß nicht welchen uC Du verwendest. Evtl verwenden A/D-Wandler-Modul und das PWM-Modul den selben Timer. Gerhard
Der ADuC841 z.B. kann das alles autonom . Quarztakt als Basis . Timer hat man extra ( 3 Stück ) . Ist ein 8051er .
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
"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
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
"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 ?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.