Перейти к содержанию

Zver2011

Members
  • Постов

    44
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Zver2011

  1. Благодарю за ответы.

    19 часов назад, Ahneus сказал:

    5 Вольт должны быть на базе Q4904, это защита от перегрузки, КЗ.

    Стабилитрон D4922 проверял?

    Проверял. Не пробит. 

    18 часов назад, FOLKSDOICH сказал:

    А кондёрчик перед 7805 как себя чувствует?

    Был в каком-то черном налете (стоит рядом с трансформатором, думаю от него). Сразу выпаял, проверил - емкость и ESR в норме. Правда по схеме там должен быть 2200 мкФ, а стоял 1000 мкФ. В общем, заменил на новый 2200мкФ, что бы соответствовало схеме.  Поведение усилителя, при этом, не изменилось.

    Впаял обратно диод D4902. Сделал замеры на вкл. усилителе. Видны отклонения на транзисторах: Q4904 и Q4909 (см. рис). Отклонения на Q4909 думаю из-за того, что основное питание не поднято (ошибаюсь?).

    Спойлер

    1449039541_.png.1919ae04928842f274ab84429f9463c1.png

     

  2. Здравствуйте!

    Подскажите , пожалуйста, куда копнуть. В усилителе пропал звук, при этом управление кнопками работает, проц реагирует на нажатие.

    По схеме (стр 22). выяснил, что включение основного питания зависит от вкл. реле RE490. Сигнал <Power Relay> проверил, все ок. Заметил заниженное дежурное напряжение по линии 12В (7,8-8,5В). По цепям 12В все проверил, ничего критичного. Выпаял диод D4902, через который идет питание 5.6В (7805), отключив цепь защиты и цепь включения динамиков. Попробовал включить - как результат, напряжение линии 12В вернулось в норму, реле перекинуло якорь, питание усилителя поднялось, правда тоже занижено немного: +51.9В и -50.9В . Сопротивления между выходом усилителя и +питанием = 10КОм, выходов усилителя и -питания = 2КОМ - подозрительно для меня (может ошибаюсь). 

    В цепях защиты и вкл./выкл. динамиков прошелся по транзисторам, пробитых не нашел.  Сигнал <protect> = 4.9В. На схеме есть точки измерений, измеренные значения почти все соответсвовали схеме, кроме замеров на транзисторе Q4904, на базе было 5В вместо 0В.

    Спойлер

    1.png.20dc3c765ef84e898b6c8735fe0c7816.png

    Вопрос: Сдохла микросхема усилителя STK401-120 или же проблема в цепи защиты/вкл динамиков?

    ca9335.pdf

  3. Здравствуйте!

    Мать Gigabyte-H110-D3A, зависает на пост коде 01 на определенное время, потом перезагрузка. По спецификации МП, используется AMI UEFI BIOS. Запускал в минимальной комплектации (процессор и мамка) и почти полным комплектом (процессор, ОЗУ, видеокарта) со сбросом настроек UEFI BIOS. Пост код тот же. Железо проверил на такой же мамке, все рабочее. Судя по пост-коду, проблема связана с прерыванием NMI.

    Прошу подсказать куда стоит все же копать, подобную неисправность еще не встречал. 

    Прикрепил фото пост кода МП, boardview и схему на мамку (нашел в открытых источниках). 

    Gigabyte GA-H110-D3 Rev1.0 Boardview(PDF).pdf Gigabyte GA-H110-D3 Rev1.0.pdf

     

    IMG_20201122_004459.thumb.jpg.bea464d384e0d7b7fea3507f710b3d36.jpg

  4. Добрый день. Пытаюсь вникнуть в процессы запуска современных материнок и возможно попутно починить материнку.

    Мать MSI B250 Gaming M3 LGA 1151, ШИМ UP9508Q, драйвер мосфетов UP1961S,  Мультиконтроллер NCT6795 (даташита на него не нашел). Схему брал от материнки на Z370 чипсете, на ней питание процессора сделано на этих же элементах. Repair Guide брал от мамки с чипсетом B250 ASUS. 

    Был заменен ШИМ, так как был сильный нагрев микросхемы. Однако, питание процессора не появляется. На драйверы мосфетов сигнал разрешения не приходит от ШИМа. Как я понимаю из  POWER ON SEQUENCE , что бы поднялось питание VCORE, необходимо что бы были сняты ресеты H_CPURST#  и PCH_PLTRST# чипсетом  и все предыдущие стадии (секвенсы) были пройдены успешно. Осциллографа, к сожалению, нет. Вот что намерил по сигналам, которые используются в предыдущих "секвенсах":

    P.S. перемычка j1 замкнута, процессор не установлен.

    VRM_EN - 3.56V
    VRM_PGD - 4.23V
    VCCSA_PG - 4.23V
    VCCST_PWRGD - 0.94V
    PCH_PWROK - 3.4 (ДО РЕЗИСТОРА)
    CPU_PWRGD (PROCPWRGD)- 0.99V
    CPURST# - 0V
    PCH_PLTRST# - 0V
    DDR_PWRGD - 4.75V

    Думаю, я что то еще не проверил, направьте, пожалуйста.

    UP1961S.pdf UP9508Q.pdf

  5. 32 минуты назад, I_I_Iok сказал:

    И ещё на заметку. Есть такая штука, как воздействие тепла на характеристики светодиода. Чем больше нагрев - тем больше ток через светодиод и больше нагрев. Также желательно выставить максимальное напряжение в пределах, когда лента светит достаточно хорошо, при этом нагрев не значительный. Моя лента из китая при повышении на доли вольта больше 12 уже греется намного больше. Стабилизация тока в этом деле очень важна, если нужна длительная работа без выгорания

    такой вариант лучше

    5c2528efb22e8_.thumb.png.939e9418b333b7bf0e98265a75d86df4.png

    Видел подобные решения для МОП транзисторов. Драйвера еще советуют ставить. Но в тех решениях коллектор биполярного транзистора был подключен к питанию от 10В и выше. Так как полевики открываются напряжением от 10 В. Почему в Вашей схеме коллектор подкл. к 5В? IRF540 не с логическим уровнем открытия ведь.

    P.S Конечно же, как всегда хочется получить маленькое компактное устройство с минимум деталей. А как начнешь проектировать, так сразу начинается поиск баланса между компактностью, количеством деталей и правильными решениями.

    По поводу ленты, блок питания не регулируемый, выдает 12,85 В. Ставить стабилизатор напряжения на 12 Вольт? Если откалибровать напряжение питания ленты, то тогда нужный ток ограничат резисторы на самой ленте, которые рассчитаны именно на 12 вольт?

  6. 11 минуту назад, I_I_Iok сказал:

    Транзистор с радиатором? Если нет, то почему он НЕ должен греться? Да и эта серия не рассчитана на большие токи. Их больше ставят в качестве ключей в повышающих или понижающих преобразователях. Для Ваших целей стоит воспользоваться irfz44, или чем-то из этой серии, у него сопротивление 0,017 Ом в открытом состоянии, греться будет в разы меньше.

    Радиатор есть. Не большой. Спасибо за совет, сейчас посмотрим, что за транзюк такой.

    image.png.84e1263f29b1ffcda5e633b56bd89eae.png

  7. Всем привет! 

    Дано: Контроллер подсветки рабочей зоны кухни, реализованный на Tiny 13A.  Светодиодная лента длиной 2,3 метра, led 5050, 120 светодиодов/метр. Принципиальная схема устройства ниже:

    Принципиальная схема

    Код прошивки:

    #include <tiny13.h>
    #include <delay.h>
    
    int triggered = 0;
    int ontimer = 0;
    
    void main(void)
    {
    
    // Input/Output Ports initialization
    // Port B initialization
    // Function: Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=Out 
    DDRB=(0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (1<<DDB0);
    // State: Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=0 
    PORTB=(0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
    
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 37,500 kHz
    // Mode: Fast PWM top=0xFF
    // OC0A output: Non-Inverted PWM
    // OC0B output: Disconnected
    // Timer Period: 6,8267 ms
    // Output Pulse(s):
    // OC0A Period: 6,8267 ms Width: 0 us
    TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (1<<WGM00);
    TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (0<<CS00);
    TCNT0=0x00;
    OCR0A=0x00;
    OCR0B=0x00;
    
    
    
    while (1)
          {
           if (PINB.1==1) {
                triggered = 1;
                ontimer = 60;
            };
            
            if (ontimer > 0) {
                ontimer--;
            } else {
                triggered = 0;
            };
            
            if (triggered) {
                if (OCR0A<255) {
                    OCR0A++;
                    };
                }
            else {
                if (OCR0A>0) {
                    OCR0A--;
                    };
                };
    
            delay_ms(10); 
          }
    }

    Возникшая проблема:

    Греется полевой транзистор при работе. 

    Изначально поискав информацию на данную проблему, начал прикидывать. 

    Смотрим график зависимости пропускаемого тока стока (ID )от приложенного напряжения  затвор-сток (VGS),  при температуре окруж. среды 25 градусов: ID = 14 А (2,3 метра светодиодной ленты не могут столько кушать, по крайней мере я такую не видел).

    image.png.c3a17bf71cc7a209c18588b3bad85b0c.png

    Было предположение что частота переключения ШИМ высокая - отсюда транзистор в не определенном состоянии = нагрев. Рассчитал макс. частоту так:

    Rg = 100 Ом, Vgs = 5V

    Заряд затвора:
    Qiss = Ciss * Vgs = 1800pF * 5v = 9nC

    Скрость нарастания:
    S = Rgate * Qiss = 100Ohm * 9nC = 0.009mV*sec

    Время на открытие или закрытие транзистора:
    t=S / Vgs = 0.002mV*sec * 3.2v = 4.5uSec

    Период  - это открытие + закрытие:
    T = t + t = 4.5uSec + 4.5uSec = 9uSec

    Максимальная частота переключения:
    F < 1 / T = 1 / 9uSec = 111KHz

    Ток через затвор (G) и цифровой выход Tiny 13A:
    I = Qiss / t = 2mA

    Максимальный выходной ток GPIO у Tiny 13A 40.0mA
    2mA < 40.0mA

    Выставил частоту ШИМ на 37,5 кHz. Вуаля - при подключении 1м светодиодной ленты (тестировал на обрезке), нагрева нет. Но как только подключил все 2,3 метра - транзистор стал снова спустя время греться, аж дотронуться не возможно.  Захотел померить ток, который потребляет 1 метр ленты, проверить продавца. Потребление 1 метра ленты оказалось вместо заявленных 600 мА, все 1,85 А, причем заметил странную вещь - ток начал возрастать спустя время на сотые доли  и дошел до 1,9 А. Дальше ждать не стал. Режим амперметра в мультиметре сломался?

    Далее подумал что слишком большая мощность рассеивается на транзисторе. Если учесть то, что при открытом транзисторе, его переход можно представить в виде линейного резистора с маленькой величиной сопротивления,  можно рассчитать рассеиваемую мощность на транзисторе:

    Смотрим сопротивление транзистора в открытом состоянии при VGS = 5В : RDS(on) = 0.18 Ом

    P1 = 1,9*1,9*0,18 = 0,65 Вт. (1 метр св.ленты).

    Раз мы взяли потребление 1 метра ленты  1, 9 А, тогда 2,3 метра потребляют  = 4,4 А. (Теперь не уверен в своем мультиметре).

    P2=4.4*4.4*0.18 = 3.5 Ватт - довольно таки многовато я думаю.

    В общем: Правильно ли я делаю расчеты? Что упустил?  Как снизить нагрев транзистора, без применения вентиляторов и здоровенных радиаторов? Есть вариант замены светодиодной ленты на что нибудь поменьше жрущее (60 светодиодов/ метр например), но в будущем еще много раз придется сталкиваться с полевиками, хотелось бы разобраться .

  8. Спасибо всем, за помощь. Тему можно закрывать. Причина неисправности была в КЗ по линии 12В. Невнимательность моя тут блин. Монитор видать ремонтировали и впаяли вместо родного диода Шоттки FCH10U15, STPR1020CT без прокладки к радиатору и изолирующей втулки для винтика.

  9. ZD101, R109
    после вылета полевика лучше сразу менять.
    Напряжение на сетевом конденсаторе так же скачет от 300 до 311В.
    ТН101 как поживает?

    Хорошо поменяю, только ZD101 непонятно на схеме - любой стабилитрон на 3,3 вольта чтоли? маркировка то должна быть.

    Выпаял термистор, сопротивление 11 Ом, нагревая паяльником плавно спадает сопротивление до нуля, так и должно быть, но в схеме написано 100 Ом почему-то.

    И ты проверял старый конденсатор С101 на наличие емкости?

    По поводу конденсаторов, вообще я C101 заменил на новый. Параметры ESR C101 - 127 мкФ, 0,43Ом

    Все электролиты поменял на новые, писал выше.

  10. БП включаю без мат. платы, через лампу накаливания. КЗ отсутвует,

    Где КЗ отсутствует, что за "лампа накаливания"? Где стоит?

    Что на сетевом лите и на выв. питания МС? Вместо мат платы надо подгрузить БП резистором.

    Я же в начале темы расписал: напряжение на сетевом электролите скачет - 300-311В, напряжение питания МС ШИМ-а тоже скачет от 8 до 11 вольт. Лампа последовательно, вместо предохранителя. при включении вспыхивает и гаснет.

    резистор в цепи затвора транзистора

    Оба заменили?

    У вас схема есть, для чего такие ребусы с описанием цепи, где стоит резистор?

    Блок и без нагрузки прекрасно должен работать.

    Второй R106 не менял у него сопротивление 2,2 кОм. А ребусы для тех людей которые не смотрели приложение в первом посту.

  11. По моему кнопка здесь не причем. При выключенном мониторе должен гореть желтый индикатор, при включенном - синий. Сейчас не горит никакой. По вашей теории тогда дежурное питание должно приходить на мат. плату монитора. А "дежурка" приходит только на шим. В добавок на мат. плату уже должны приходить +5 и +12 В а уже на ней стоят стабилизаторы на 1,8 и 3,3 вольт для процессора и др. микрух. Так что здесь БП должен сразу выдавать 5 и 12 вольт, не зависимо от кнопки питания.

  12. Так, наверное, и не должен - сигнала от кнопки включения-то нет.

    Ага, если долго мучится, то что-нибудь получится! :yes: Только пока я что то в тупике. Уже пробовал включать и с мат. платой. Толку ноль, все тоже самое.

  13. Приветствую! Моник LG Flatron 1953Tr с микросхемой ШИМ FAN7601 на борту - принесли с сильным запахом гари. После вскрытия в блоке питания обнаружились угольки дросселя, битые диоды в мосту, сетевой конденсатор , ключевой транзистор.

    Поменяно: Все элктролиты кроме C105 в обвязке шим-а, дроссель поменян на похожий с др. блока питания, диоды в диодном мосту, конденсатор CY104(4.7 нФ 400В), ключевой транзистор 7N60B, резистор в цепи затвора транзистора, микруха Шим, Tl-431, оптрон, и smd резистор R104 на 1 кОм (был подозрительный).

    Проверил: ZD101, R109, диод в цепи затвора транзистора, диод и резистор в цепи питания шим, и выпрямительные диоды - все целое.

    БП включаю без мат. платы, через лампу накаливания. КЗ отсутвует, но БП не стартует. Выходных напряжений нет. Напряжение питания ШИМ скачет от 8 до 11 вольт. Напряжение на сетевом конденсаторе так же скачет от 300 до 311В.

    Помогите куда копать дальше? Возможно ли межвитковое в ТПИ? Осцилографа нет. Заранее спасибо!

    1953TR.pdf

  14. У меня успешно все получилось. Зуммер подключил через транзистор, свет моргать перестал, громкость правда снизилась (наверно не так подключил - исправляю) Пересчитал все значения нот для OCR при 4МГц и 8МГц. Сделал быстро в Exel используя формулы. Мелодия приятней стала аж)))

    Отдельное большое спасибо Вам Сергей, без вас бы не справился. Очень благодарен. :drinks: Сейчас уже много начал понимать по программированию на СИ. Читаю книжку по ассемблеру, но что то Си мне больше нравится все же.

  15. Подключение выполнено у меня правильно, к 15 выводу. Просто схема была для другой прошивки. Отключил светодиод и зуммер, включил напряжение на ножке 9 МК увеличивается на 0,04 В без скачков. Но не до 4В а до 2,7В, дальше программа МК дает команду плавно тушить свет. В принципе все нормально. Подключил светодиод, зуммер не подключал. Подал питание и свет не моргая без скачков плавно включается и плавно выключается. Значит дело в зуммере, буду пробовать подключать через транзистор.

    Высокочастотный звук мелодии стал после переделки прошивки. Мелодии первоначально по книге Белова для МК частотой 4 МГц. Переделанная прошивка работает на 8МГЦ. Пробовал на 4 но тогда вообще не играет а просто щелкает.

    Зуммер без внутреннего генератора, проверил как вы сказали. При подключении питания он только щелкнет один раз, но не пищит.

  16. Поясните, что значит "моргает, под ноты мелодии". Как это выглядит?

    Программно во время исполнении мелодии обращение к OCR0B находится только в одном месте и OCR0B

    может только плавно увеличиваться в момент смены ноты.

    Какой излучатель звука вы используете и какой источник питания?

    Не просаживается ли питание во время исполнения мелодии?

    Позже скину видео работы этого устройства.

    Пьезо у меня такой (включен напрямую к ноге МК) (может транзистор поставить? хотя я думаю не такой он уж и мощный)

    items-f-ucw03-500x500.jpg

    Источник питания 4 Батарейки AAA (через стабилизатор на 5V), так же питал от БП ПК - разницы нет.

  17. Спасибо за помощь. В коде я увидел некоторые непонятные моменты, попозже разберу что это такое. А пока просто прошил МК этим кодом. понравилась идея не циклично проигрываемой мелодии, а то надоедает. Но проблема осталась, светодиод моргает по прежнему, под ноты мелодии. Уже пробовал повесить RC цепочку на светодиод - тоже не помогает. Может быть дело в схеме?

  18. Сергей, спасибо что выделяете свое время, я благодарен вам. Похоже мы в разных версиях моего кода работали. Вообщем так я подставил ваш код. Теперь при запуске (частота мк 8МГц) у меня играет звук подобный тому, который раньше был при подключении к интернету через телефонный провод :lol2: . Проходит пару тактов и начинает играть мелодия которая закодирована. Свет мигает по прежнему. Не работает отсчет переменной ontimer. При частоте в 4 МГц мелодия не играет, издаются странные звуки.

    Вопрос по вашему коду: переменная Counter это переменная таймера? при ее максимальном значении таймер идет в прерывание?

    Чтобы было понятно какой код у меня сейчас сверну под спойлер его (мелодии из книжки Белова для мк с частотой 4 МГц):

    #include <tiny2313.h>
    //Таблица задержек
    flash unsigned int tabz[]={16,32,64,128,256,512,1024};
    //Массив коэфициентов деления
    flash unsigned int tabkd[]={0,4748,4480,4228,3992,3768,3556,3356,3168,2990,2822,1187,1120,1057,998,942,889,839,792};
    //Массив с мелодией "Улыбка"
    flash unsigned char mel[]={107,104,141,139,102,105,104,102,164,128,104,107,109,109,
    					 109,111,114,112,111,109,144,139,128,109,111,144,96,111,109,104,107,105,173,128,
    					 111,109,112,107,111,109,109,107,102,104,134,132,128,100,103,107,107,107,107,139,
    					 112,100,103,102,102,102,134,102,103,107,105,107,108,108,108,108,107,105,107,108,
    					 144,142,128,112,107,110,140,112,105,108,107,107,105,140,139,139,112,103,102,
    					 103,105,108,107,105,103,128,112,107,110,108,108,108,140,112,105,108,107,107,107,
    					 139,112,103,102,103,105,108,107,105,103,105,139,132,128,96,96,96,255};
    unsigned char fnota; //код тона ноты
    unsigned char dnota; //код длительности ноты
    flash unsigned char *nota; //ссылка на текущую ноту
    int Counter, Delay;
    unsigned char Pause; // признак задержки между нотами
    void SoundStart() {TCCR1A|=1<<COM1A0; };
    void SoundStop() {TCCR1A&=~(1<<COM1A0);};
    int triggered = 0;	 //Переменная вкл./выкл.
    int ontimer = 0;	 //Переменная таймера задержки полного выключения
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {Counter++;
    if(Counter>Delay)
    {Counter=0;
    if(Pause==0)						 //Pause=0 - играем ноту или паузу
     {Pause=1;								
    	 if (OCR0B<255) {OCR0B++;};					 //каждую ноту или паузу прибавляем свет
    	 if(*nota==0xFF)								 //Проверка на конец мелодии
    	 {nota=mel;}						
    	 else
    	 {nota++;};
    	 fnota=(*nota)&0x1F;									 //Определяем код тона
    	 dnota=((*nota)>>5)&0x07;									 //Определяем код длительности
    	 if(dnota==0)					
    	 {SoundStop();}							 //если пауза убираем звук
    	 else
    	 {SoundStart();							 //если нота включаем звук			
    	 };
    	 OCR1A=tabkd[fnota];
    	 Delay=tabz[dnota];
     }
    else								 //Pause=1 - играем задержку
     {SoundStop();
    	 Pause=0;
    	 Delay=tabz[0];
     };
    };
    }
    void main(void)
    {
    //Инициализация порта B
    DDRB=0b00001000;
    PORTB=0b00000000;
    //Инициализация порта D
    DDRD=0b0100000;
    PORTD=0b0000000;
    // Timer/Counter 0 initialization
    TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (1<<WGM00);
    TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (1<<CS00);
    TCNT0=0x00;
    OCR0A=0x00;
    OCR0B=0x00;
    // Timer/Counter 1 initialization
    TCCR1A=0x00;
    TCCR1B=0x09;
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=(0<<TOIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<ICIE1) | (0<<OCIE0B) | (1<<TOIE0) | (0<<OCIE0A);
    // Analog Comparator initialization
    ACSR=(0<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
    DIDR=(0<<AIN0D) | (0<<AIN1D);
    while (1)
    {
    if (ACSR&(1<<ACO)) { //если на выходе компаратора 1 тогда устанавливаем флаг включения устройства, и устанавливаем обратный отсчет
    triggered = 1;
    ontimer = 100;
    };
    
    if (ontimer > 0) { //если значение таймера > 0, тогда начать обратный отсчет для автоматического отключения при отсутсвии сигнала на датчике звука
    ontimer--;
    } else { //иначе устанавливаем флаг выключения устройства
    triggered = 0;
    };
     if (triggered) {	 //если включено, тогда плавно включать свет и проигрывать мелодию
     #asm("sei")
     }
     else { // иначе плавно выключить свет и остановить мелодию
    	 if (OCR0B>0) {OCR0B--;};
    	 SoundStop();
    	 };
    };
    }
    

  19. Сделал функции как вы посоветовали, TCCR1B настроил и оставил. Конечно же я прерывание разрешил в регистре TIMSK , бит TO1E0. Глобальные прерывания разрешены до цикла while(1).

    Перепрошился - так же как и было. Попробовал принудительно включить компаратор. В итоге горит свет(без плавного включения), мелодия... слышно что играет, но очень быстро, скрежет в общем. В добавок в коде есть переменная ontimer, по убыванию которой свет и мелодия должны отключиться - она тоже не работает.

    Время паузы я считал так: частота таймера 0 - 125 000 ГЦ, период 2,048мс (будем считать 2 мс) Тогда: 130/2=65мс, 40/2=20мс, 200/2=100 мс. от изменения этих чисел в переменной Delay толку нет.

    Что я думаю: В коде присутствуют и запрещения прерываний и разрешения. может это из-за них?

    void play()
    {
    	 OCR1AH = (char)(Bit>>8); //записываем текущую ноту в OCR1A
    	 OCR1AL = (char)Bit;	
    	 SoundStop();
    	 Delay=65;			 //пауза = t паузы / t T0(период таймера T0) = 130/2=65
    	 Pausa=1;
    	 #asm("cli")			 //запрещаем прерывание чтобы оборвать ноту
    	 SoundStop();
    	 Delay=20;			 //пауза = t паузы / t T0(период таймера T0) = 40/2=20
    	 Pausa=1;
    	 #asm("sei")
    	 i++;
    }
    void pause()
    {	
     #asm("cli")	 //пауза между нотами
     SoundStop();
     Delay=100;		 //пауза = t паузы / t T0(период таймера T0) = 200/2=100
     Pausa=1;
     #asm("sei")
     i++;
    }
    void stop()
    {
    #asm("cli")
    PORTD.3=0x00;
    i=0;
    }
    

  20. Спасибо, я не знал что так можно))) уже написал код прошил мк, только вот похоже накосячил где-то. Мелодия не играет, свет загорается и тухнет сразу же.

    Правильно я включаю и выключаю таймер 1?

    void SoundStop()
    {
    TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
    }
    void SoundStart()
    {
    TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
    }
    

  21. Почитал я про реализацию задержек с помощью таймеров в режиме CTC. Вариант как раз подошел бы мне только вот одно НО. В тини 2313 - 2 таймера и в моем проекте они все используются, 8-ми битный - включение светодиода по ШИМ каналу, а 16-и битный - проигрывание мелодии (используется один канал).

    В коде только 3 делея величинами 200, 130, 40 ms, они нужны для правильной игры мелодии. Идея у меня есть, только не совсем понимаю как ее реализовать.

    В кратце: За каждый такт МК генерируется определенная частота звука, если пауза то мк гоняет пустой цикл делея(Правильно?)

    Что если этот делей n-ой продолжительности закодировать как и все остальные (до, ре, ми и т.д.) только не воспроизводимой частотой для пьезо? Тогда по моему и код проигрывания мелодии уменьшиться, переделывать мелодии придется...

    Что скажете? надеюсь я более менее понятно изложил свою мысль.

  22. вы должны понять, что _delay_ms() останавливает всю программу( ВСЮ ключевое слово) пока будете пользоваться этой функцией он у вас будет мигать. а если вы будете использовать прирывания по совпадению например, то у вас внутри прирывания тоже будет код выполнятся(программа не будет останавливаться) и мигать ничего не будет

    Это я понял, работаю над этим уже

×
×
  • Создать...