Sari la conținut
ELFORUM - Forumul electronistilor

PWM=>factor umplere&frecventa


criss

Postări Recomandate

imaginea postata a doua oara este doar uCul, fara sarcina, am deconectat rezistenta din baza tranzistorului si am pus testerul pe rezinstenta.Iar pe iesire are totusi varfuri.

sa fie ceva din prgramare?
Link spre comentariu
  • Răspunsuri 16
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • criss

    9

  • asyx

    7

  • nr4

    1

Top autori în acest subiect

Imagini postate

atasez si programul.

 

Cuprinde mai multe 'magarii' dar eu doar partea cu PWMul il folosesc.

 

#include <avr/io.h>#include <avr/interrupt.h> #include "lcd.h"#include <stdlib.h>#include <inttypes.h>char s[7];volatile unsigned char LcdDelay;   // 200 mS LCD delaystatic uint32_t new_value; // button //---------- timer ----------------------------ISR (TIMER0_OVF_vect) {// timer static unsigned char Count1mS = 0;  static unsigned char Count10mS = 0;   TCNT0 += 6; // Adjust count so we get 250 uS rollover period      if (++Count1mS == 2)   {      // Set a flag to indicate 1mS has elapsed      Count1mS = 0;	if (++Count10mS == 200) // 200ms	{	Count10mS = 0;	LcdDelay = 1;	}		}}// -------------------------------------------------------------------void Timer_0_setup(void){// setup timer 0 TCCR0 |= (1 << CS01); // 8 dividerTCNT0 = 0;            // Initial value TIMSK |= (1<<TOIE0); //Timer/Counter0 Overflow Interrupt Enable }//------------------------------output pwm control------------------------------------- void pwm(void){// Fast PWM 14; ICR1 Clear OC1A/OC1B on Compare Match, set OC1A/OC1B at BOTTOM, (non-inverting mode)   TCCR1A  = ((1<<WGM11) | (1 << COM1A1) );   // Fast PWM, Fcpu speed; clkI/O/8 (From prescaler)   TCCR1B  = ((1<<WGM13) | (1<<WGM12) | (1 << CS11));   //where 0xA is the desired brightness   ICR1  = 24; // 20 khz}//-------------------------------------------------------------------int main(void){DDRB |= (1 << 1); // Set led as outputTimer_0_setup();pwm();// LCD initlcd_init(LCD_DISP_ON); /* initialize display, cursor off */lcd_clrscr(); /* clear the screen*/sei();  while (1) /* loop forever */   {OCR1A=new_value;new_value=7;if (LcdDelay==1){lcd_clrscr();  lcd_gotoxy( 0, 0 );	lcd_puts("%:");lcd_gotoxy( 8, 0 );	 utoa(new_value, s, 10);lcd_puts(s);LcdDelay = 0;}}}

uCul ruleaza la 4Mhz ceas intern.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări