PWM på PIC...

Hej!

Jeg sidder lige og fusker lidt med en lysstyring styret ved hjælp af en PIC16F84...

Egentligt er jeg godt tilfreds med den nuværende lysstyring, men det kunne da være sjovt at kunne få lyset den styrer til at fade op/ned, dertil havde jeg tænkt mig at anvende PWM, men jeg synes ikke rigtigt jeg kan få det til at spille nogenlunde uden det fylder en farlig masse. Nogle der har nogle gode idéer uden at jeg skal have fat i en anden PIC med allerede implementeret PWM?

--
MVH Troels
Reply to
Troels Pedersen
Loading thread data ...

"Troels Pedersen" skrev i en meddelelse news:400c4652$0$143$ snipped-for-privacy@dread11.news.tele.dk...

at spille nogenlunde uden det fylder en farlig masse. Nogle der har nogle

Hi troels Hvis den skal være 18 pins i 16F er denne nok den billigste

formatting link

Ellers er der også kommet en 18 pins i 18F serien den har også PWM

MVH Henrik

Reply to
Henrik Nielsen

Prøv at kigge på

formatting link
. Det er næsten alle tænkelige applikationer, eller i hvert tilfælde noget pseudo-kode, der kan bruges.

Mvh. René Kirstein

havde

til

Reply to
René Kirstein

Hej Troels Jeg har leget lidt med det i C, det var vist blot to løkker inden i hinanden. Jeg kan nok godt finde det frem, hvis det har interesse.

Mvh Lars Sch-M

Reply to
Lars Schaumburg-Müller OZ1CJX

Hvis ikke det er alt for langt væk har det interesse... Men brug nu ikke hele natten på at finde det ;o)

--
MVH Troels
Reply to
Troels Pedersen

Hej Troels ...

Her er noget kode til P/F korrekt PWM jeg har fusket med ...

Ideen er at lave en tæller som tæller i savtand ... og skifte niveau når tælleren er nulstillet på denne måde fjerner man glitches osv...

M.v.h. Lasse Madsen

// Timer 2 overflow interrupt service routine interrupt [TIM2_OVF] void timer2_ovf_isr(void) { static unsigned char pwm_temp=0,direction=1,channel_1=1,phase=0; static unsigned char channel_2=0,channel_3=0,channel_4=0,channel_5=0,channel_6=0; if ( pwm_temp == channel_1 ) OUT_AA = ~OUT_AA; if ( pwm_temp == channel_2 ) OUT_BA = ~OUT_BA; if ( pwm_temp == channel_3 ) OUT_CA = ~OUT_CA; if ( pwm_temp == channel_4 ) OUT_AB = ~OUT_AB; if ( pwm_temp == channel_5 ) OUT_BB = ~OUT_BB; if ( pwm_temp == channel_6 ) OUT_CB = ~OUT_CB;

// Sørg for at PWM tælleren kører i Savtands modus if ( pwm_temp == 100 ) { direction = 0; }

// Find Bund Positionen if ( pwm_temp == 0 ) { direction = 1;

if ( phase == 3 ) { channel_1 = pwm0; channel_2 = pwm1; channel_3 = pwm2; channel_4 = pwm3; channel_5 = pwm4; channel_6 = pwm5; phase = 0; } else phase++; }

// Skift Retning på tæller if ( direction == 0 ) pwm_temp--; else pwm_temp++;

TCNT2=0x9E; }

Reply to
Lasse Madsen

Her er en application note.... hvis den fylder for meget kan du sikkert barbere noget overflødigt af.

formatting link

Håber du finder en løsning

Med venlig hilsen Rene Nielsen

Reply to
Rene Nielsen

Kanskje kan denne modifiseres? :

formatting link

Mvh Leon

"Troels Pedersen" skrev i melding news:400c4652$0$143$ snipped-for-privacy@dread11.news.tele.dk...

havde

til

Reply to
Leon Gjerland

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.