Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
08.04.2010, 09:59
|
#1
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
AtTiny2313 ШИМ на два плеча
Доброго Вам времени суток уважаемые !
Есть надобность сделать ПН для питания ЛДС с регулированием яркости по 1-wire. Питание - 12 вольт. Не хотелось бы питать лампу постоянным напряжением. Поэтому решено было использовать в трансформаторе ПНа два плеча. Которые, как вы понимаете, не должны одновременно открываться. Покопавшись в даташите не совсем понял - не ужто запуск в режиме Phase Correct PWM не способен создать такой режим работы ? Или я не доглядел ? Приходит на ум схема с использованием триггера и пары логических элементов. Но добавлять к такой простой задаче еще пару корпусов - не совсем "прямое" решение. Может кто решал подобную задачу (я про два плеча на ШИМ)? Также не хотелось бы писать программный ШИМ, так как частота играет большую роль при намотке трансформатора, а его хотелось бы сделать поменьше.
|
|
|
|
08.04.2010, 10:09
|
#2
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: AtTiny2313 ШИМ на два плеча.
Я помню делал два шима. У одного диапазон скажем от 0..126,у другого 129..255
Deadtime = 129-126=3
|
|
|
|
08.04.2010, 10:16
|
#3
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: AtTiny2313 ШИМ на два плеча.
Устраивает. А не подскажите - как делали ?
|
|
|
|
08.04.2010, 10:26
|
#4
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: AtTiny2313 ШИМ на два плеча.
Я же только что сказал как.
|
|
|
|
08.04.2010, 13:14
|
#5
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: AtTiny2313 ШИМ на два плеча.
Тоесть Вы предлагаете использовать оба имеющихся таймера ? Не, так не пойдёт. Один из таймеров будет использован для реализации 1-wire на прерываниях. Еще варианты есть ? Можно на внешних элементах. Может это возможно реализовать на одном корпусе ?
|
|
|
|
08.04.2010, 13:28
|
#6
|
Вид на жительство
Регистрация: 09.10.2009
Сообщений: 356
Сказал спасибо: 21
Сказали Спасибо 64 раз(а) в 46 сообщении(ях)
|
AtTiny2313 ШИМ на два плеча.
Код:
|
/************************************************** ***
Project : PWM half-bridge controller
Version :
Date : 27.05.2009
Author : OneTech
Company : OneTech
Chip type : ATtiny13
Clock frequency : 9,600000 MHz
Memory model : Tiny
External SRAM size : 0
Data Stack size : 16
************************************************** ***/
#include ‹tiny13.h›
#include ‹delay.h›
#define ADC_VREF_TYPE 0x20
unsigned char c;
interrupt [PCINT0] void pin_change_isr(void)
{
};
unsigned char read_adc(void)
{
ADMUX=ADC_VREF_TYPE|1;
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
};
void PWM_set(unsigned char PWM_data)
{
if (PWM_data›=122)
{
PWM_data=122;
};
OCR0A=PWM_data;
OCR0B=PWM_data^255;
};
void main(void)
{
// Declare your local variables here
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
// State5=T State4=T State3=T State2=T State1=0 State0=0
PORTB=0x00;
DDRB=0x03;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 9600,000 kHz
// Mode: Phase correct PWM top=FFh
// OC0A output: Non-Inverted PWM
// OC0B output: Inverted PWM
TCCR0A=0xB1;
TCCR0B=0x01;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0xFF;
// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: On
GIMSK=0x20;
MCUCR=0x00;
PCMSK=0x10;
GIFR=0x20;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
// ADC initialization
// ADC Clock frequency: 600,000 kHz
// ADC Bandgap Voltage Reference: Off
// ADC Auto Trigger Source: None
// Only the 8 most significant bits of
// the AD conversion result are used
// Digital input buffers on ADC0: Off, ADC1: Off, ADC2: Off, ADC3: Off
DIDR0&=0x03;
DIDR0|=0x3C;
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x84;
// Global enable interrupts
#asm("sei")
while (1)
{
c++;
if (c›=122)
{
c=0;
};
delay_ms(10);
PWM_set(c);
read_adc();
};
} |
|
|
|
Сказали "Спасибо" OneTech
|
|
|
08.04.2010, 13:48
|
#7
|
Вид на жительство
Регистрация: 09.10.2009
Сообщений: 356
Сказал спасибо: 21
Сказали Спасибо 64 раз(а) в 46 сообщении(ях)
|
Re: AtTiny2313 ШИМ на два плеча.
Пардон, забыл указать что это для ATtiny13 и Вам на С нужен код или на асм?
|
|
|
|
08.04.2010, 14:29
|
#8
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: AtTiny2313 ШИМ на два плеча.
Сообщение от Classic001
|
Тоесть Вы предлагаете использовать оба имеющихся таймера ? Не, так не пойдёт. Один из таймеров будет использован для реализации 1-wire на прерываниях. Еще варианты есть ? Можно на внешних элементах. Может это возможно реализовать на одном корпусе ?
|
На одном таймере
|
|
|
|
08.04.2010, 14:48
|
#9
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: AtTiny2313 ШИМ на два плеча.
Сообщение от OneTech
|
Пардон, забыл указать что это для ATtiny13 и Вам на С нужен код или на асм?
|
Мне всё равно. Спасибо. Код заработал без изменений.
|
|
|
|
08.04.2010, 23:50
|
#10
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: AtTiny2313 ШИМ на два плеча.
Сообщение от Classic001
|
Можно на внешних элементах. Может это возможно реализовать на одном корпусе ?
|
PIC16F690 DIP20, имеет железный ШИМ полумостом и мостом + програмируемая пауза между верхним и нижним. + Аппаратная защита.
Это автоматическое выключение ШИМ выходов при срабатывании:
1 го из двух компараторов на борту
отдельной ножки.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:59.
|
|