h köprü sürmek için pwm üreten mikroişlemci önerileriniz.

Başlatan ilhan_mkp, 21 Ocak 2015, 22:40:42

berkay_91

bu program Atmega8A da sinüs sinyali üretmek için, Atmelin pwm çıkış bacağına RC filter bağlamayı unutmayın
(R=10 k ohm C=10nF olabilir)

/*
 * sine_wave_generating.c
 *
 * Created: 09.01.2015 17:14:52
 *  Author: BERKAY
 */ 


#define F_CPU 1000000
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include "sine.h"

volatile uint8_t i=0;

ISR(TIMER1_COMPA_vect){
	
	OCR1A= pgm_read_byte(&sine_wave[i]);
	i++;
	
	if(i>=255)
	i=0;
}
 
void pwm_init(){
	
	OCR1A=80; // İnitialization value
	
	TCCR1A=(1<<COM1A1)|(1<<COM1B0)|(1<<WGM10);// MODE 1 phase correct PWM (8 bit)
	
	TCCR1B=(1<<CS10); // prescalar is 1
	
	TIMSK=(1<<OCIE1A); //enable output compare interrupt for OCR1A
	
	sei(); // enable global interrupt 
		
}

int main(void) {
	
    DDRB|=(1<<1); // for OC1A Pin
	PORTB|=(1<<1);
	
	pwm_init();

	while (1) {
		
	}
}


buda kütüphanesi:

/*
 * sine.h
 *
 * Created: 09.01.2015 17:43:15
 *  Author: BERKAY
 */ 
static const PROGMEM unsigned char sine_wave[] = //256 values
{
	0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
	0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
	0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf5,
	0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
	0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
	0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
	0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
	0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83,
	0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51,
	0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
	0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a,
	0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,
	0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,
	0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c,
	0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c
};



skara1214

Alıntı yapılan: ilhan_mkp - 22 Ocak 2015, 09:08:18
Yanlış anlamayın ama pic haric sorduğum halde niye ısrarla pic öneriliyor anlam veremiyorum
kusura bakma sadece ilk satırı okuyup yorum yapmışım
Herkes ölür ama herkes gerçekten yaşamaz

ohacagatay

atmega164/324/644P  'yi kullanabilirsin, atmega16,32,64 ile aynı şekilde programlanıyor fakat 6 adet timer 'ı var
0A,0B,1A,1B,2A,2B sanırım yeterli olucaktır
Some people believe çiğ köfte is a matter of life and death, I am very disappointed with that attitude. I can assure you it is much, much more important than that

ilhan_mkp

attiny bile iş görür hocam bir analog giriş ikide pwm çıkışı bir adette dijital giriş yeticek şimdilik.

elimde birkaçtane stm8s003k3 var onlarla nasıl yapılır merak ediyorum açıkçası.

internetten bulma örnekdeğilde datasheetle biraz boğuşsak daha eğitici olacak.