Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Ответ
Опции темы

И снова ШИМ

Непрочитано 05.03.2012, 18:38   #111
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: И снова ШИМ

Сообщение от Pajatel Посмотреть сообщение
..и чё велосипед изобретаете? ..
Не не так . Мы пытаемся объяснить работу софтового ШИМ...
Реклама:
__________________
Осторожно , злой кот
dosikus вне форума   Ответить с цитированием
Непрочитано 05.03.2012, 20:27   #112
Pajatel
Прописка
 
Аватар для Pajatel
 
Регистрация: 04.12.2010
Сообщений: 243
Сказал спасибо: 9
Сказали Спасибо 51 раз(а) в 32 сообщении(ях)
Pajatel на пути к лучшему
По умолчанию Re: И снова ШИМ

Сообщение от dosikus Посмотреть сообщение
Мы пытаемся объяснить работу софтового ШИМ...
...а я что, я только за, тем более сам в софтовом шиме не очень.. теоритически понимаю, а практически пока не понадобилось такое решение. Зато железный шим перепахал вдоль и поперёк, как только над ним не извращался... Потому и посоветовал ТС взять готовый проектик и трахать его во все щели, так мне кажется понимание придёт гораздо бытрее, что там и по чём...
Pajatel вне форума   Ответить с цитированием
Непрочитано 06.03.2012, 00:55   #113
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: И снова ШИМ

В данном проектике я ни нашел исходника на С а с ассемблером не дружу хоть и когда то его изучал .

Просто программирование МК почему то отличается от стандартного программирования. Просто я изучал и С и паскаль и Визуал Бейсик и Делфи и как ни как ассемблер и к примеру если взять таймер в объектно ориентированном программированиито (Визуал Бейсик, Делфи) то оно выглядит очень просто таймер и пиши что хочешь а вот с МК совершенно все иначе, наверное если быя с самого начала изучал программирование для МК, тогда бы у меня такой путаницы не было.
Завтра надеюсь сгоняю в магазин и куплю кварц на 16мгц и еще такой вопрос как рассчитываются емкости на кварце для входа в резонанс ? какая примерно нужна емкость или там идет предел от 20 до 40пф ?

Yurkin2007 спасибо что разъяснил принцип работы софтверного ШИМ, я до недавнего времени даже не знал, что такое название существует, кстати объяснил популярно и разжевал, огромное спасибо.

Еще раз хочу поблагодарить всех кто мне помогает и разъясняет !!!
SAHA_T вне форума   Ответить с цитированием
Непрочитано 06.03.2012, 00:57   #114
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: И снова ШИМ

leartis и dosikus отдельное спасибо за практику !!!
SAHA_T вне форума   Ответить с цитированием
Непрочитано 06.03.2012, 01:42   #115
leartis
Частый гость
 
Регистрация: 04.10.2007
Адрес: Запорожье
Сообщений: 43
Сказал спасибо: 8
Сказали Спасибо 14 раз(а) в 13 сообщении(ях)
leartis на пути к лучшему
По умолчанию Re: И снова ШИМ

Сообщение от SAHA_T Посмотреть сообщение
и еще такой вопрос как рассчитываются емкости на кварце для входа в резонанс ? какая примерно нужна емкость или там идет предел от 20 до 40пф ?
Я обычно ставлю 22p
Миниатюры:
Нажмите на изображение для увеличения
Название: crystal_mega16.gif
Просмотров: 50
Размер:	30.6 Кб
ID:	32460  
leartis вне форума   Ответить с цитированием
Непрочитано 07.03.2012, 18:45   #116
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: И снова ШИМ

Вчера и сегодня возился с сопротивлениями, наконец свершилось, все сопротивления на месте.
Залил прошивку сперва решил сделать для одного пина а0 залил настроил фузы под кварц результат есть, но не такой как бы хотелось а именно
При включении почему то на выходах присутствует 1.

DDRA=0xFF; //порты - на выход
PORTA=0x0; // начальное значение 0

отключаю циклы Шим
/*or(i=0;i‹128;i++) {
Kanal_0=i;
_delay_ms(n);
}*/

а на выходе все равно 1

Сейчас сижу ковыряюсь с исходником, не могу понять почему на выходе 1 если PORTA=0x0;


Также я не понимаю почему светодиод не гаснет полностью, т.е как только срабатывает цикл допустим на снижение яркости то при 0-м значении светодиод еще светится а не гаснет полностью

Последний раз редактировалось SAHA_T; 07.03.2012 в 19:39.
SAHA_T вне форума   Ответить с цитированием
Непрочитано 08.03.2012, 00:58   #117
leartis
Частый гость
 
Регистрация: 04.10.2007
Адрес: Запорожье
Сообщений: 43
Сказал спасибо: 8
Сказали Спасибо 14 раз(а) в 13 сообщении(ях)
leartis на пути к лучшему
По умолчанию Re: И снова ШИМ

Программу если изменял - покажи
leartis вне форума   Ответить с цитированием
Непрочитано 08.03.2012, 03:26   #118
picavr
Почётный гражданин KAZUS.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: И снова ШИМ

Сообщение от SAHA_T Посмотреть сообщение
к примеру если взять таймер в объектно ориентированном программированиито (Визуал Бейсик, Делфи) то оно выглядит очень просто таймер и пиши что хочешь а вот с МК совершенно все иначе
А НИФИГА ПОДОБНОГО )) да всё то же самое - ПИШИ В ТАЙМЕР ЧТО ХОЧЕШЬ )))
То же стандартное программиование, просто стандарты разные, у кого то в дюймах у кого то в миллиметрах )))
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
picavr вне форума   Ответить с цитированием
Непрочитано 08.03.2012, 04:48   #119
SAHA_T
Прописка
 
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
SAHA_T на пути к лучшему
По умолчанию Re: И снова ШИМ

picavr вот и я о том же принцип одинаковый, таймер он и в африке таймер, но в АВР таймер по другому вызывается и всякие прерывания, т.е для меня который ни разу не программил для АВР и не работал с прерываниями , это вызывает трудности а в ООП поставил таймер и пиши что хочешь в самом таймера

код я не изменял оставил как есть просто решил сделать для 1 пина.
Т.е получается что при подаче питания на выходах уже 1 вместо 0, также нет полного гашения светодиода.

#define TMR 65380L //0xFF64 : 78 мкс (при тактовой 16МГц и делителе : 1 такт 128-разрядного ШИМ
#define sbi(p,m) ((p) |= 1‹‹(m)) //установить бит m порта p
#define cbi(p,m) ((p) &= ~(1‹‹(m))) //сбросить бит m порта p
//#define Kanal_0 =0;
volatile unsigned int Tic; //счетчик тиков/прерываний/шагов ШИМ
volatile unsigned int i,m,n;
volatile unsigned char Ch_0,Ch_1,Ch_2,Ch_3,Ch_4,Ch_5,Ch_6,Ch_7,Ch_8,Ch_9, Ch_10,Ch_11,Ch_12,Ch_13,Ch_14,Ch_15;
volatile unsigned char Kanal_0=0,Kanal_1,Kanal_2,Kanal_3,Kanal_4,Kanal_5, Kanal_6,Kanal_7;
volatile unsigned char Kanal_8,Kanal_9,Kanal_10,Kanal_11,Kanal_12,Kanal_1 3,Kanal_14,Kanal_15;

//Прерывание по переполнению таймера 1
ISR(SIG_OVERFLOW1)
{
TCNT1 = TMR; //начальное значение таймера
// Канал 0
if (Tic ‹ Ch_0) sbi(PORTA,0);
else cbi(PORTA,0);
// Канал 1
if (Tic ‹ Ch_1) sbi(PORTA,1);
else cbi(PORTA,1);
// Канал 2
if (Tic ‹ Ch_2) sbi(PORTA,2);
else cbi(PORTA,2);
// Канал 3
if (Tic ‹ Ch_3) sbi(PORTA,3);
else cbi(PORTA,3);
// Канал 4
if (Tic ‹ Ch_4) sbi(PORTA,4);
else cbi(PORTA,4);
// Канал 5
if (Tic ‹ Ch_5) sbi(PORTA,5);
else cbi(PORTA,5);
// Канал 6
if (Tic ‹ Ch_6) sbi(PORTA,6);
else cbi(PORTA,6);
// Канал 7
if (Tic ‹ Ch_7) sbi(PORTA,7);
else cbi(PORTA,7);
// Канал 8 - здесь переходим к следующему порту
if (Tic ‹ Ch_ sbi(PORTC,0);
else cbi(PORTC,0);
// Канал 9
if (Tic ‹ Ch_9) sbi(PORTC,1);
else cbi(PORTC,1);
// Канал 10
if (Tic ‹ Ch_10) sbi(PORTC,2);
else cbi(PORTC,2);
// Канал 11
if (Tic ‹ Ch_11) sbi(PORTC,3);
else cbi(PORTC,3);
// Канал 12
if (Tic ‹ Ch_12) sbi(PORTC,4);
else cbi(PORTC,4);
// Канал 13
if (Tic ‹ Ch_13) sbi(PORTC,5);
else cbi(PORTC,5);
// Канал 14
if (Tic ‹ Ch_14) sbi(PORTC,6);
else cbi(PORTC,6);
// Канал 15
if (Tic ‹ Ch_15) sbi(PORTC,7);
else cbi(PORTC,7);

Tic++; //увеличиваем счетчик тиков
if(Tic==12 {
Tic=0; //начинаем все сначала
//и только теперь переходим к новым значениям яркости
Ch_0=Kanal_0;
Ch_1=Kanal_1;
Ch_2=Kanal_2;
Ch_3=Kanal_3;
Ch_4=Kanal_4;
Ch_5=Kanal_5;
Ch_6=Kanal_6;
Ch_7=Kanal_7;
Ch_8=Kanal_8;
Ch_9=Kanal_9;
Ch_10=Kanal_10;
Ch_11=Kanal_11;
Ch_12=Kanal_12;
Ch_13=Kanal_13;
Ch_14=Kanal_14;
Ch_15=Kanal_15;
}
}

int main(void)
{
DDRA=0xFF; //порты - на выход
PORTA=0x00;

n=10; //задержка в мс между шагами яркости
m=500; //задержка в мс между "кадрами"

TCNT1 = TMR; //начальное значение счетчика

TIMSK &= ~(1‹‹TOIE1); //запрещаем Ovf1
cli(); //запрещаем прерывания

TIMSK |= 1‹‹TOIE1; //Разрешить Ovf1

TCCR1B |= 0x2; //включить таймер 1 с делителем 8

sei(); //разрешить прерывания

while(1)
{

for(i=0;i‹128;i++) {
Kanal_0=i;
_delay_ms(n);
}

/* for(i=128;i›0;i--) {
Kanal_0=i;
_delay_ms(n);
*/
}
}
}

Последний раз редактировалось SAHA_T; 08.03.2012 в 12:48.
SAHA_T вне форума   Ответить с цитированием
Непрочитано 08.03.2012, 22:08   #120
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: И снова ШИМ

Сообщение от SAHA_T Посмотреть сообщение
// Канал 0
if (Tic ‹ Ch_0) sbi(PORTA,0);
else cbi(PORTA,0);
// Канал 1
if (Tic ‹ Ch_1) sbi(PORTA,1);
else cbi(PORTA,1);
// Канал 2
if (Tic ‹ Ch_2) sbi(PORTA,2);
else cbi(PORTA,2);
// Канал 3
if (Tic ‹ Ch_3) sbi(PORTA,3);
else cbi(PORTA,3);
// Канал 4
if (Tic ‹ Ch_4) sbi(PORTA,4);
else cbi(PORTA,4);
// Канал 5
if (Tic ‹ Ch_5) sbi(PORTA,5);
else cbi(PORTA,5);
// Канал 6
if (Tic ‹ Ch_6) sbi(PORTA,6);
else cbi(PORTA,6);
// Канал 7
if (Tic ‹ Ch_7) sbi(PORTA,7);
else cbi(PORTA,7);
Не лучше ли завести локальную переменную и её выводить в порт:
Код:
unsigned char port=0;
f (Tic ‹ Ch_0) port|=1;
// и так далее
PORTA=port;
Аналогично с другими портами. Будет более синхронно
_Артём_ вне форума   Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СНОВА ЖКИ Gladkih Микроконтроллеры, АЦП, память и т.д 0 27.12.2009 23:48
И снова блютуз! Haulpak Ремонт оргтехники 0 10.03.2009 05:06
Снова DNA1001 R666 Информация по радиокомпонентам 0 25.01.2008 16:39
И снова температура ua_gruzin Поиск схем. Делимся схемами 0 14.02.2007 01:18


Часовой пояс GMT +4, время: 07:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.