asyx Postat Ianuarie 22, 2012 Partajează Postat Ianuarie 22, 2012 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
criss Postat Ianuarie 22, 2012 Autor Partajează Postat Ianuarie 22, 2012 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
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum