PWM-Tastverhältnis Problem

N

nadre25

Guest
HALLO, ich habe ein Problem beim Erstellen dieser Art von Wellenform in PIC16F877A [url = http://images.elektroda.net/79_1308044622.jpg]
79_1308044622_thumb.jpg
[/url] mein Code bekam immer nur die Wellenform, bis die vertikale Linie. hier ist mein Code: while (1) {pwmplus = 10; für (lvl = 0; lvl
 
Im ersten Teil, erhöhen Sie PWM mit 10, als 20, höchstens 30 .... mit jeder für Iteration. Aber im zweiten Teil subtrahieren Sie 80 in der ersten Iteration, 70 im zweiten, 60 in der dritten, usw. ... Probieren Sie etwas wie dies für die zweite Teil:
Code:
 pwmplus = 10; / / ab 10 für (lvl = 0; lvl
 
Nicht allzu klar, wenn gewünscht Ausgangswellenform ist ein Dreieck von Sinuskurve. + + +
 
Danke für die Antworten @ bjuric: Ich habe dies bereits getan, als aber es gab mir Fehler im Umgang mit der Simulation Proteus. gibt es einen anderen Weg, solche Welle Formular zu erstellen? @ Andre_teprom: die gewünschte Ausgabe ist ein PWM-Tastverhältnis, dass eine Erhöhung um bis zu einem Punkt dann wieder zurück auf die orignal Einschaltdauer. Ich habe schon die zunehmende Teil getan, ich habe Probleme abnimmt. Ich habe versucht zu isolieren Funktionen (steigend / fallend). Wenn ich das Programm mit der zunehmenden Teil laufen, ohne die abnehmende Rolle, es funktioniert auch mit der abnehmenden Teil ohne die zunehmende Rolle. aber wenn ich versucht, läuft es zusammen, das Programm stürzt ab.
 
... aber wenn ich versucht, läuft es zusammen, stürzt das Programm ...
Sind Sie auf Laufzeitfehler oder Kompilierungsfehler? + + +
 
Laufzeitfehler. die Zusammenstellung ist erfolgreich, aber mit Hilfe des Simulators PROTEUS, heißt es, dass der Fehler innerhalb des Call-Stack.
 
Pwm1_Change_Duty (unsign_pwm-pwmplus);
Ich habe immer geschrieben in der Montage, damit ich keine Ahnung, was sicher "unsign_pwm" ist zu haben. Ich denke, es ist eine Konstante. In diesem Fall wird die obige Zeile sollte sein: Pwm1_Change_Duty (unsign_pwm + pwmplus), ich meine um das Zeichen + zu halten.
 
@ KerimF: im sorry Ich habe nicht den gesamten Code. die unsign_pwm ist eine Variable Ausgang des ADC. können Sie mir sagen, wie kann ich wieder zurück auf die ursprüngliche Aufgabe cycly wenn im um das Zeichen + weitermachen? Dank.
 
Nö. es würde gleich bleiben. können nur sagen, dass die unsign_pwm = 150;
 
ok ... so brauchen wir nur auf die Variable pwmplus lassen ... Erhöhung dann Abnahme ... und sonst nichts. Zum Beispiel haben Sie ändern - bis + wie ich und schlug vor, man konnte nicht das Ergebnis? Ich denke, Sie wissen bereits, dass Ihr Schleife 9 Mal und nicht 8 durchläuft ... richtig? Hinzugefügt: Darf ich fragen, wie die Summe "unsign_pwm + pwmplus", um die Einschaltdauer ist zu tun? Ich meine, die Variable der PWM-Periode (Intervall, wenn Sie möchten) bestimmt Um ehrlich zu sein, Ihre Nummer 150 als ein Minimum zu beschränken und 150 80 = 230 nicht geben kann die allgemeine Form des Signals auf Ihr Bild von der 1. Post.
 
Ist Ihr PWM 8bit, mit Werten von 0 bis 255? Warum benutzen Sie um 10, und warum haben Sie um 80 verringern und dann 70 .. 60 .. etc einen Wert von 150 wird 160.170.180.190.200.210.220.230 und dann 230-80, 150-70, 80-60 .. Ist das, was Sie tun möchten? [Syntax = c] pwmplus = 80; für (lvl = 0; lvl
 

Welcome to EDABoard.com

Sponsor

Back
Top