Например TDA7294

Форум РадиоКот • Просмотр темы - ШИМ-генератор для ADuC812
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс июл 27, 2025 22:10:26

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 3 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: ШИМ-генератор для ADuC812
СообщениеДобавлено: Чт дек 08, 2011 14:52:29 
Первый раз сказал Мяу!

Зарегистрирован: Чт дек 08, 2011 14:19:22
Сообщений: 34
Рейтинг сообщения: 0
Всем доброго времени суток!
Начинаю работать с микроконтроллерами. Первое с чем я столкнулся это микроконтроллер AduC 812 (ядро Intel MCS51).
Есть не большая программа, которая производит формирование линейно нарастающего напряжения на выходе ЦАП0, преобразование входного напряжения на 0-канале АЦП, а также передачу полученной информации по интерфейсу RS-232. Мне необходимо дополнить ее так, что бы получился ШИМ-генератор в зависимости от напряжения на входе АЦП (период 1кГц).
Вот код имеющейся программы:
# Include <ADuC812.h>
# Include <stdio.h>
# Include "ADC.h"
# Include "DAC.h"
# Include "max.h"
# Include "vect.h"

float in, out;
unsigned int i;
void INT_T0 (void) interrupt 1
{
out = out + 0.1;

if (out> = 5) out = 0;
SetVoltage (out, 0);
TR1 = 1;

}
void INT_T1 (void) interrupt 3
{
in = GetVoltage (0);

printf ("DAC0 =% f", out); /
printf (": ADC0 =% f \ n", in);
TR1 = 0;
TF1 = 0;
TH1 = 0;
TL1 = 0;
}

void main (void)

{
//---------- Set UART ----------
SCON = 0x40;
REN = 1;
/ / timer 2 ------
RCLK = 1;
TCLK = 1,
RCAP2L = 0xDC;
RCAP2H = 0xFF;
TR2 = 1
ES = 0,
TI = 1; RI = 1;
EA = 0;
//----------
EA = 1;
ET0 = 1;
ET1 = 1;
TMOD = 0x00010101;
TR0 = 1;
SetVect (1, INT_T0);
SetVect (3, INT_T1);
SwitchDAC (0,1);
InitDAC (0);
SetVoltage (5,0);
InitADC ();
while (1)
{}
}
Очень нужна помощь!
Заранее всем спасибо!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ШИМ-генератор для ADuC812
СообщениеДобавлено: Сб дек 10, 2011 08:19:08 
Модератор
Аватар пользователя

Карма: 14
Рейтинг сообщений: 37
Зарегистрирован: Чт дек 11, 2008 14:52:26
Сообщений: 11492
Откуда: град Нижний
Рейтинг сообщения: 0
Приветствую, пушистый..

Си для 51-х вообще не знаю, а насчёт ШИМа скажу:
Для реализации ШИМ, те нужно настроить один из внутренних таймеров на частоту 1кГц*bitsPWM, где bitsPWM - максимальное значение ШИМа..
Т.е. для 8-ми битного ШИМа частота прерывания от таймера должна быть 256кГц..

_________________
ИзображениеМежду людьми возникает напряжение, если у них разный потенциал...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ШИМ-генератор для ADuC812
СообщениеДобавлено: Вс дек 11, 2011 08:52:09 
Первый раз сказал Мяу!

Зарегистрирован: Чт дек 08, 2011 14:19:22
Сообщений: 34
Рейтинг сообщения: 0
Спасибо за подсказку! сделал следующим образом:

unsigned char pwm_width;
bit PWMPIN;
bit pwm_flag = 0;
void pwm_setup(){
TMOD = 0;
pwm_width = out;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void timer0() interrupt 1 {
if(!pwm_flag) {
pwm_flag = 1;
PWMPIN = 1;
TH0 = pwm_width;
TF0 = 0;
return;
}
else {
pwm_flag = 0;
PWMPIN = 0;
TH0 = 255 - pwm_width;
TF0 = 0;
return;
}
}
не знаю на сколько правильно! на данный момент не имею под рукой оборудования! и никто не может проверить и сказать где ошибки!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y