10 комментариев

  1. Salim говорит:

    Автор профи! Практически всё работает на прерываниях, код оптимизирован на все 100. Сам только учусь, и многое почерпнул из Ваших исходников. Спасибо!

  2. Kamu говорит:

    Здравствуйте. Не могу понять, почему в протеусе прошивка работает, а в железе нет. Подскажите в чём причина. Прошивку заливал на отладочную плату собранную по Вашей схеме. Другие примеры с ШИМ на плате работают. Только в примере регулятора ШИМ с использованием АЦП в коде есть опечатка.

    • OSBoy говорит:

      Так какой пример не работает — этот, с кнопками? Или тот что с АЦП? Я в Протеусе их не пробовал, сразу опробовал в железе и оба прекрасно работают. И почему Вы решили, что опечатка в коде? Компилируются оба примера без ошибок, тем более в Протеусе, сами говорите, что работают нормально… Может у Вас в железе какая-то проблема? Чем компилируете?

      • Kamu говорит:

        Извиняюсь, опечатка в бегущем огне volatile _Bool direction = 0.
        Не работает ШИМ с кнопками. При нажатии кнопки на входе PB4 сразу загорается светодиод на выходе PB0. Гаснет только при сбросе микроконтроллера. Компилирую с помощью atmel studio 6,2.

        • OSBoy говорит:

          Код ШИМ с кнопками я, как будет возможность, попробую ещё раз на отладочной плате протестировать.
          А что не так с «volatile _Bool direction = 0» ? У Вас компилятор на тип переменной _Bool ругается? Если у Вас в студии 6.2 проект на C++, попробуйте заменить «_Bool» на «bool», хотя по идее должно и так, и так работать. Я в 4 студии компилирую, код на С написан и всё отлично работает. Если что, типы переменных _Bool или bool определены в стандартной библиотеке stdbool.h для С и С++ соответственно.

          • Kamu говорит:

            Да, при компиляции программа выдавала ошибку. Заменил на bool ошибка пропала.

      • Alex говорит:

        Спасибо за подсказку и код! Вчера в протеусе все опробовал. шикарно.
        А можно ли переделать этот код на два шим внутри одного микроконтроллера, используя скажем Tiny2313.
        4 кнопки (две на регулировку оборотов кулера и две на регулировку температуры). Не будет ли проблем с прерываниями, да и вообще еще каких аномалий?
        *Достался строй_фен со сломанной платой управления (понимаю что дешевле купить на Али).

        • OSBoy говорит:

          Учитывая, что на Tiny2313 два таймера — думаю, что проблем не должно возникнуть, если сделать по аналогии. Хотя в принципе, думаю, что можно даже попробовать обойтись одним таймером на tiny13, используя вместо кнопок — две крутилки потенциометров и подавая с них напряжение на два входа АЦП. Например, для выходов ШИМ тогда можно использовать ноги OC0A (PB0) и OC0B (PB1), а для АЦП входов — ноги ADC3 (PB3) и ADC2 (PB4). А дальше дело техники — главное чтобы код в 1кБ влез.

Оставить комментарий