Krik99 Опубликовано 24 декабря, 2006 Поделиться Опубликовано 24 декабря, 2006 Доброго времени суток. Помогите написать програму на Си для гирлянды на АVR (у меня есть ATMega8, но потом могу переделать на какойто ATiny).Три канала. Пару эфектов я придумал.Но у меня появились вопросы. 1вопрос.Как сделать чтобы можно было переключать все програмы одной кнопкой. 2вопрос.Как соединить эти все програмы. 3вопрос.Как сделать чтобы один канал плавно зажигался ,а другой плавно затухал. 0 Хочу AVR с тактовой частотой 100мгц. Ну вот! Я же говорил - ноль... а ты единица... единица... Ссылка на комментарий Поделиться на другие сайты Поделиться
pirojok Опубликовано 24 декабря, 2006 Поделиться Опубликовано 24 декабря, 2006 (изменено) а тебе именно на СИ? глянь тему http://forum.cxem.net/index.php?showtopic=12666 я там прогу свобю выложил как раз то что тебе надо. плавно затухает. только с АВРами я ещё на работал. я программатор то собрал дня 3 назад. Но вобщем программа рабочая и суть уловить можно по ней. но у меня задача посложнее 4 светодиода. и эффектов хочу штук 10... пока для самых основных проги написал. И вот ещё загвоздка чтобы все это переключалось одной кнопкой. Надо как то так сделать... пальцем же кнопу замыкаешь миллисикунд в лучшем случае на 200 и при этом может смениться не один а несколько эффектов. Вот надо как то сделать чтобы только сделующий эффект был. есть пара идей но пока не начал в этом копаться... да и в ассемблере знания не глубокие у меня Изменено 24 декабря, 2006 пользователем pirojok 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Krik99 Опубликовано 24 декабря, 2006 Автор Поделиться Опубликовано 24 декабря, 2006 (изменено) Нашёт кнопки я могу подсказать.Для кнопки после програмы обработки самой кнопки надо писать паузу гдето так на 1сек. Если хочеш могу на Си написать.Так как я вооообще не знаю не Бейсик не Асемблер. Изменено 24 декабря, 2006 пользователем Krik99 0 Хочу AVR с тактовой частотой 100мгц. Ну вот! Я же говорил - ноль... а ты единица... единица... Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
pirojok Опубликовано 24 декабря, 2006 Поделиться Опубликовано 24 декабря, 2006 а во время этой паузы основная программа будет выполняться? я просто думал начинать выполнять опрос кнопки через какое то время. секунду примерно. давай пример на си 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 24 декабря, 2006 Поделиться Опубликовано 24 декабря, 2006 (изменено) а про прерывания вы забыли? пишите прсотенькое прерывание при нажатии инкремент константы.. в зависимости от константы выбирается подпрограмма плавное изменение спомощью ШИМ делаете? у мну етсь подлая идея сделать плавную регулировку света в комнате .. вот думаю как организовать Изменено 24 декабря, 2006 пользователем Duhas 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
Krik99 Опубликовано 24 декабря, 2006 Автор Поделиться Опубликовано 24 декабря, 2006 Duhas -есле не трудно напишите пример на Си желательно.Заранние спасибо. 0 Хочу AVR с тактовой частотой 100мгц. Ну вот! Я же говорил - ноль... а ты единица... единица... Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 24 декабря, 2006 Поделиться Опубликовано 24 декабря, 2006 (изменено) к сож-ю.. моему и наверно вашему, не пишу на си под МК.. тока на PC... пишу на асме.. выглядит следующим образом .org 0x02 rjmp <имя подпрограммы> <имя подпрограммы>: inc stat <- инкремент константы.. нада только еще ограничить его кол-вом эффектов reti <- выход из прерывания в сях можно выставлять векторы прерываний.. есть курс па си.. вроде бы он у мну сохранен был вопщем пошел я его смареть.. пасмарел.. вопщем.. #pragma interrupt_handler (название функции обработчика) : (номер прерывания по ДШ) так поределяем обработчик прирывания #pragma interrupt_handler timer0_ovf_isr:7 void timer0_ovf_isr(void) { //TIMER0 has overflowed TCNT0 = 0xB8; //обновить число начал счета } тут прерывание переполнения таймера.. но никто не мешает переделать его в прерывания изменения состояния одной из I/O линий... тоесть по идее будет так #pragma interrupt_handler change:2 /* я юзаю 32-ю мегу... 2 - прерывание INT0.. ну с этим я думаю разберетесь...*/ void change(void) /*вот хз нада ли вводить нашу константу в функцию.. я си уже забываю может не не void а int stat - ну тут тоже разберетесь*/ { if(stat < <кол-во эффектов>) stat++; else stat=0; } ну и в общем цикле делаем проверку типа switch (stat) и вызываем подпрограммы... по идее нада 1 раз выполнив подпрограмму эффекта вернуться к выбору эффекта... может можно и без этого но в голову пока не приходит как .. http://forum.cxem.net/ вам в помощь Изменено 24 декабря, 2006 пользователем Duhas 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
pirojok Опубликовано 24 декабря, 2006 Поделиться Опубликовано 24 декабря, 2006 да,а про прерывания кстати тема. так наверное и сделаю. надо будет сначала почитать что это такое и с чем его едят,а то я только в общих чертах знаю. насчет света в комнате наткнулся на одну интересную конструкцию. именно как раз плавное зажигание и и гашение и все это с сенсором. но там на пике12ц508. если интересно ссылку могу кинуть как за компом окажусь. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 24 декабря, 2006 Поделиться Опубликовано 24 декабря, 2006 да неоткажусь... пик не пик.. разницы.. мне больше важна аналоговая часть и принцип управления ею.. остальное голову пока в стостоянии придумать в прирываниях ничего сложного .. разрешил их для начала.. указал векторы.. работает.. толко вот есть детали.. к примеру я сначала не догнал в чом суть проблемы.. жму калвишу а срнабатывает 2 раза или 1 или 3 када как.. думал дребезг .. ага .. не он а другое.. выставил прерывание по изменению лог уровня.. а башка деревяшка не додумалась сроазу что при нажатии происходит 2 изменения ... 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
pirojok Опубликовано 25 декабря, 2006 Поделиться Опубликовано 25 декабря, 2006 http://www.kursovik.net/electronic.html вот там все эти девайсы. сам как то искал наткнулся. Попробуй, если получится напиши поделись впечателниями, я тож соберу 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
M@T_F@Q Опубликовано 30 декабря, 2006 Поделиться Опубликовано 30 декабря, 2006 (изменено) Уважаемый Krik99, Вы разобрались с регулировкой яркости??? Просто я делал бегущие огни на АТ2051, получилось около 100 эффектов на 8 гирлянд, а вот с яркостью заглох. Если есть какието идеи помогите пожалуйста. Изменено 30 декабря, 2006 пользователем M@T_F@Q 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 31 декабря, 2006 Поделиться Опубликовано 31 декабря, 2006 делается на скоклько я знаю и понмаю широтно импульсной модуляцией... нада ярче делаем импульсы шире, а паузе меньше... нада меньше яркости увеличиваем паузы пропорционально уменьшая ширину импульса ... скора могет буду писать такую приблуду... если соберсь выкину код .. 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
M@T_F@Q Опубликовано 31 декабря, 2006 Поделиться Опубликовано 31 декабря, 2006 Если изменять только яркость светодиода, то нужно делать именно задержкой, а если нагрузкой использую симмистр??? Тут уже нужна привязка к нулю, вот сама эта привязка и интересна, как её правильно определить по фронту или по спаду??? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 31 декабря, 2006 Поделиться Опубликовано 31 декабря, 2006 попробуй узнаешь 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
M@T_F@Q Опубликовано 4 января, 2007 Поделиться Опубликовано 4 января, 2007 В этом то и дело, что пробовал уже много, но безрезультатно. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 4 января, 2007 Поделиться Опубликовано 4 января, 2007 я к сожалению не силен в теории из области симисторов.. вазьми эмулятор типа протеуса.. и вперед.. как я понимаю симистор- ключ.. откроется при приложении напряжения.. или закроется при приложении отр напряжения.. мона если есть отрицательное взять транзюком коммутировать вход симистора на отр напряжение.. я пол ночи просидел над гемором включить релюшку при 0 или 1 на вводе мк.. схема с 1 транзюком тупо открывается а закрываться не хочет ... в итоге дожил до оптопары ))) зато работает Ж) 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
Krik99 Опубликовано 15 января, 2007 Автор Поделиться Опубликовано 15 января, 2007 Я никак не могу разобраться с прирываниями кто разбираеться в прирываниях напишите (если не трудно) простую програму на Си чтобы она мигала двумя светодиодами (при этом используя прирывание). 0 Хочу AVR с тактовой частотой 100мгц. Ну вот! Я же говорил - ноль... а ты единица... единица... Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 15 января, 2007 Поделиться Опубликовано 15 января, 2007 напиши в личку конкретную задачу... т.е. к примеру при прерывании переключаться с мигания одного на мигание другова.. при новом прерывании снова переключаться и тд ... 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
Krik99 Опубликовано 17 января, 2007 Автор Поделиться Опубликовано 17 января, 2007 А мне лижбы два светодиода мигало.1 светодиод зажогся, 2 светодиод потух,2 светодиод зажогся , 1 светодиод потух. И так далие.Кокую программу вам лехче написать, такую и пишите мне просто надо изучить на примере прерывание в МК ATmega8 на Си. 0 Хочу AVR с тактовой частотой 100мгц. Ну вот! Я же говорил - ноль... а ты единица... единица... Ссылка на комментарий Поделиться на другие сайты Поделиться
Jozef Опубликовано 18 января, 2007 Поделиться Опубликовано 18 января, 2007 (изменено) Вот пример кода, мигающего светодиодами по очереди (написано в среде IAR Embedded Workbench). За работоспособность на Mega не очень ручаюсь, у меня она в прерываниях не могла i++ сделать. Но пока другой контроллер лень воткнуть в плату, хотя он есть сессия Точно могу утверждать, что эту же задачу этим же способом успешно решал, когда учился азам на основе AT89C51RC. #include "iom8.h" #include "inavr.h" #include "math.h" char WDT_FLAG=0xA5; unsigned int i=0; //------------------------------------// __C_task void main(void) { __disable_interrupt();//отключение прерываний // что-то с watchdog таймером WDTCR=0x18; // 0001 1000 change enable WDTCR=0x0F; // 0000 1111 watchdog set 2048 ms __watchdog_reset(); comparator_off; // отключение компаратора (чтоб наверняка) // тут что-то со вторым таймером. пока не надо. TCCR2=0x19; // FOC2=0 WGM20=0 COM21=0 COM20=1 WGM21=1 CS22=0 CS21=0 CS20=1 OCR2=(73728/38)/20-1; // Timer2: setting ADC frecuency(ADC_FREC) (вроде настройка ШИМ) TCCR0=0x05; // предварительный делитель тамера 0 1/1024 CK // тактовая частота 7200 Гц (кварц 7.3728 МГц) TCNT0=0xB7; // период следования прерываний 0.01 c (100 Гц) TIMSK=(TOIE0); // прерывания по переполнению таймера-счетчика 0 // инициализация портов ввода-вывода // DDRB=0xff; // PORTB весь выход DDRC=0xff; // PORTC весь выход DDRD=0xff; // PORTD весь выход PORTB=0x00; PORTC=0x00; PORTD=0xc0; TCCR1B=7; __enable_interrupt(); //запуск прерываний PORTB=0x55; //0101 0101 for(;;) { __watchdog_reset(); // 1 раз в секунду инвертируем PORTB if(i==99) { i=0; PORTB=!PORTB; } WDT_FLAG=0xA5; } } // прерывания по переполнению таймера-счетчика 0 // #pragma optimize=0 #pragma vector=TIMER0_OVF_vect __interrupt void Timer0_Overflow(void) { TCNT0=0xB7; //частота прерываний 100 Гц i++; if(WDT_FLAG==0xA5){__watchdog_reset();WDT_FLAG=0;} } Изменено 18 января, 2007 пользователем Jozef 0 73 de R9FDJ ex. UB8FCG | QTH LO88AA, PM-03, Пермь | RCWC #1256 Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 18 января, 2007 Поделиться Опубликовано 18 января, 2007 вопщем я вапще не ощущаю на кой хрен в мигании 2-мя диодами нужно прерывание миганите мона на асме сделать в разы проще Ж) не используя ни одного таймера.. все задержки делаются оч легко ... тут моск нада включать а не городить кучу текста 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
Jozef Опубликовано 19 января, 2007 Поделиться Опубликовано 19 января, 2007 (изменено) не, это то понятно.. просто раз Krik99 пытается разобраться в прерываниях и просит показать работу с ними на каком-либо примере... название темы навевает пример вполне четко.. и эта прога написана очень и очень давно, на шаблоне от промышленного измерителя температуры, потому и текста много понятно, что лучше в прерываниях посерьезнее замутить что-либо. по крайней мере, кроме i++ у меня в них еще индикация включается с частотой 72 Гц (или около того) Изменено 19 января, 2007 пользователем Jozef 0 73 de R9FDJ ex. UB8FCG | QTH LO88AA, PM-03, Пермь | RCWC #1256 Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 19 января, 2007 Поделиться Опубликовано 19 января, 2007 нет, я о другом, прерывания и мигание диодов вещи для меня совершенно не пересекающиеся между собой... мигание монжно сделать элементарным свдвигом + задержка..и все..и пустить в цикл.. задержка делается на асме декрементом и переходом ... на любое время 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
Krik99 Опубликовано 20 января, 2007 Автор Поделиться Опубликовано 20 января, 2007 (изменено) Duhas А если например мигать двумя светодиодами и например таймер на 2часа с регулировкой времени.То мне кажеться что всётаки понадобиться прирывания. Да и если хтото напишет желательно под компилятор WinAVR.А в журналах Радиоаматор 2005 нет случайно чего нибудь про прирывания в AVR. Изменено 20 января, 2007 пользователем Krik99 0 Хочу AVR с тактовой частотой 100мгц. Ну вот! Я же говорил - ноль... а ты единица... единица... Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 21 января, 2007 Поделиться Опубликовано 21 января, 2007 ладна, прочитаем краткий курс по МК, хотя не считаю седя достаточно квалифицированным для этого... МК выполняет заложенную в него программу стартя с адреса 0х0000 ,этот адрес является адресом вектора прерывания reset, которое происоходит при самом прерывании и всключении МК.. далее идут адреса других перываний... после адреса 0х0050 можно писать свой код, вот как рас этот код и выпоняет мк после включения.. из-за манипуляции вида: пишу на асме, ибо в си все по идее вроще, все это само по себе делается по идее.. .org 0 rjmp START .org 0x02 rjmp tonoff /вот это уже переходы к меткам иначе говоря вектора прерываний .org 0x04 rjmp light .org 0x20 rjmp ADCE .org 0x50 START: 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.