Jump to content

    

ШИМ в at90pwm3

PSC в at90pwm3 удобная вещь.Представляет собой ШИМ по типу: один счётчик-два регистра сравнения-два выхода.Т.е.записав в оба регистра одну величину по идее должны получить на выходах идентичные импульсы.

Собственно вопрос:в документации at90pwm2_3.pdf указано ,что при работе PSC в Center Aligned Mode импульсы на выходах в вышеуказанном случае должны быть в противофазе.В реальности же они абсолютно идентичны.

Вопрос конечно специфичный.В других темах по этому МК всё замерло на вопросах приобретения и программирования.Но хотелось бы знать ляп ли это Atmel и неизбежно ли внешнее инвертирование.

Если кто-то может прояснить буду очень признателен и возможно не только я.

Share this post


Link to post
Share on other sites

А erratа Пушкин читать будет?

 

5. PSC: Output Polarity in Centered Mode

In centered mode, PSCOUTn1 outputs are not inverted, so they are active at the same time as PSCOUTn0.

Workaround:

Use an external inverter (or a driver with inverting output) to drive the load on PSCOUTn1.

 

А errata там знатная, из 18 пунктов....

В tiny45 всего 5, зато какие...

Share this post


Link to post
Share on other sites

Выходит более-менее правильные чипы маркируются at90pwm2B,at90pwm3B.Может для кого-то,как и для меня это будет новостью.

Обещаю читать самые свежие errata.

Share this post


Link to post
Share on other sites

не могу запустить шим, что я делаю не так?

void PWM_ini(void)
{
	Start_pll_64_mega();
	Wait_pll_ready();
	//PSOC2 имеет возможность управлять мостом (четыре выхода)
	PSOC2|=(1<<POEN2D)//PSCOUT23 подключен к PSC2 
	     |(1<<POEN2B)//PSCOUT21 подключен к PSC2 
		 |(1<<POEN2C)//PSCOUT22 подключен к PSC2 
		 |(1<<POEN2A);//PSCOUT20 подключен к PSC2 
	PSOC2&=~(1<<POS23)//PSCOUT23 подключен к генератору В
		 |(1<<POS22);//PSCOUT22 подключен к генератору A
	//PSOC2&=~(1<<PSYNC2_0);PSOC2|=(1<<PSYNC2_1);//no synchronization signal
		
    PCNF2|=PSC_FOUR_RAMP//Four Ramp Mode
	     |(1<<PCLKSEL2)//выбираем CLK PLL дш. стр.162 таб.16-9
	     |OUTPUT_ACTIVE_LOW;//выходы закрыты
	
	PCTL2|=(1<<PBFM2)//ширина импульса будет меняться на On-Time 0 и On-Time 1.
		 |(1<< PAOC2B)//сигнал неисправности для генератора B действует на PSCOUT21 и  PSCOUT23
		 |(1<<PAOC2A);//сигнал неисправности для генератора A действует на PSCOUT20 и  PSCOUT22
	PCTL2|=(1<<PPRE20);PCTL2&=~(1<<PPRE21);//делитель CLK PLL на 4 дш. стр.162 таб.16-9
	PCTL2|=(1<<PRUN2);//запускаем PSC
	//генератор А
	//режим аварии 7 (остановка PSC и ожидание действия програмного обеспечения)
	PFRC2A|=(1<<PRFM2A0)|(1<<PRFM2A1)|(1<<PRFM2A2);PFRC2A&=~(1<<PRFM2A3);
	
	PFRC2A|=(1<<PFLTE2A)//шумоподавление в 4 цикла
	      |(1<<PELEV2A);//аварией будет появление 1 на выбраном канале
	
	//генератор В
	//режим аварии 7 (остановка PSC и ожидание действия програмного обеспечения)
	PFRC2B|=(1<<PRFM2B0)|(1<<PRFM2B1)|(1<<PRFM2B2);PFRC2B&=~(1<<PRFM2B3);
	
	PFRC2B|=(1<<PFLTE2B)//шумоподавление в 4 цикла
	      |(1<<PELEV2B);//аварией будет появление 1 на выбраном канале
	
	//PIM2|=(1<<PEOPE2);//когда этот бит установлен прерывание генерируется когда PSC 
	//достигает конца цикла (один цикл по сути это период)
	On_time=OCR2RA=OCR2RB=200;//ширина импульса
	OCR2SA=OCR2SB=50;//dead-time   
}

преобразователь мостовой. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this