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

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

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

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

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

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

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

Закрытая тема
Опции темы
Непрочитано 05.03.2012, 18:38   #111
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 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.RU
 
Регистрация: 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 код Выкл.

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Снова о коллекционировании. Roshens Делимся опытом 0 13.12.2010 19:43
СНОВА ЖКИ 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, время: 14:16.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot