PWM duty cycle problem

N

nadre25

Guest
Hej, jeg har et problem at skabe denne form for bølgeform i PIC16F877A [url = http://images.elektroda.net/79_1308044622.jpg]
79_1308044622_thumb.jpg
[/url] min kode fik kun bølgeform, indtil den lodrette linje. Her er min kode: mens (1) {pwmplus = 10; for (lvl = 0; lvl
 
I den første del, øger du PWM med 10, end 20, over 30 .... med hver for iteration. Men i anden del, du trække 80 i første iteration, 70 i den anden, 60 i tredje, osv. ... Prøv noget som dette for anden del:
Code:
 pwmplus = 10; / / start fra 10 for (lvl = 0; lvl
 
Ikke for klart, hvis ønskede effekt bølgeform er en trekant af sinusoid. + + +
 
tak for svarene @ bjuric: Jeg har allerede gjort end det, men alligevel det gav mig fejl i at bruge simuleringen Proteus. er der en anden måde at skabe sådanne kurveform? @ Andre_teprom: den ønskede effekt er en PWM arbejdscyklus, der er stigende op til et punkt derefter vender tilbage til den originale arbejdscyklus. Jeg har allerede gjort det stigende del, jeg har problemer med faldende. Jeg har prøvet at isolere funktioner (stigende / faldende). Når jeg kører programmet med den stigende del uden faldende del, det virker, også med den faldende del uden den stigende del. men når jeg prøvede at køre det sammen, går programmet ned.
 
... men når jeg prøvede at køre det sammen, går programmet ned ...
Er du henviser til runtime fejl, eller at kompileringsfejl? + + +
 
runtime fejl. oversættelsen er vellykket, men ved hjælp af simulator Proteus, siger, at det, at fejlen ligger inden for CALL stakken.
 
Pwm1_Change_Duty (unsign_pwm-pwmplus)
Jeg har altid skrev i forsamlingen, så jeg har ingen sikker idé om, hvad "unsign_pwm" er. Jeg tror det er en konstant. I så fald ovenstående linje skal være: Pwm1_Change_Duty (unsign_pwm + pwmplus), mener jeg at holde + tegnet.
 
@ KerimF: im Undskyld jeg ikke sætte hele koden. Den unsign_pwm er en variabel output ADC. kan du fortælle mig, hvordan kan jeg vende tilbage til den oprindelige told cycly hvis im vil holde på + tegnet? tak.
 
Nope. det ville blive det samme. lad os bare sige, at unsign_pwm = 150;
 
ok ... så vi behøver kun at lade den variable pwmplus ... stigning derefter falde ... og intet andet. For eksempel har du ændre - til +, som jeg foreslog, og du ikke kunne få resultatet? Jeg tror, du allerede ved, at din løkke gentager 9 gange og ikke 8 ... ret? Tilføjet: Må jeg spørge, hvordan summen "unsign_pwm + pwmplus" er relateret til arbejdscyklus? Jeg mener som variabel bestemmer PWM periode (interval, hvis du kan lide) For at være ærlig, dit nummer 150 som en nedre grænse og 150 80 = 230 kan ikke give den almindelige form af signalet på dit billede af 1. post.
 
Er din PWM 8bit, med værdier 0-255? Hvorfor bruger du stige med 10, og hvorfor har du falde med 80 og derefter 70 .. 60 .. etc en værdi af 150 vil blive 160.170.180.190.200.210.220.230 og derefter 230-80, 150-70, 80-60 .. Er det hvad du vil gøre? [Syntaks = c] pwmplus = 80; for (lvl = 0; lvl
 

Welcome to EDABoard.com

Sponsor

Back
Top