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

Berg

Members
  • Постов

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

  • Посещение

Весь контент Berg

  1. Я и не вникал в ваш код, у меня из глаз кровь пошла от переменных: caunterTimer0, timerState, timerCaunter, caunter.
  2. Как то так И частота вывода на дисплей у вас высока. В Протеусе покажет, в железе едва. Ой, регистр TCCR0B забыл под ваш МК вернуть
  3. как вы это определили? уже три страницы любуемся сигналом на затворе и в курсе, что имеется 310В и более нифига если уж боитесь ткнуть осцилом на первичку транса, то мотаните несколько витков вторички
  4. Датчик движ. в состоянии покоя потребляет 33мкА, движение перед ним 180-250мкА. При Uпит. 5v., вывод out не подключен.
  5. Думаю тут не все так однозначно. К примеру сбились регистры таймера, обработчик прерывания перестал выполнятся, какие-то флаги не выставились, что-то не вычислилось и в итоге ракета не улетела в космос, дом сгорел и т.д., а основной цикл так и продолжает работать Когда делал термостат для водонагревателя, то для надежности в обработчике прерыв. выставлял флаг, а уже в основном цикле по состоянию флага сбрасывал wd. Если программа в результате анализа видит, что что-то не правильно работает, то выключаем таймер и МК уходит в рестарт.
  6. можно не кнопку, а делитель напряж. с фоторезистором.., светло - погасла, темно - загорелась
  7. осталось прикрепить к ней вибромоторчики, к лыжам зубные щетки и настроить чтоб ездила по кругу
  8. вскрывал только одну сигналку и там по входу сразу бросается в глаза после диода варистор 7D220K (18в если не ошибаюсь), далее последовательно резистор 10 Ом, эл-лит 100мкф, емкость 0.1мкф и уже сам 7805
  9. Для чего так много кнопок? Или это еще по совместительству клавишный музыкальный инструмент? Резисторы подтяжки кнопок можно использовать внутренние микроконтроллера. Резисторы индикаторов 600 - 1000 Ом Базовые 1.5к
  10. Электролитические конденсаторы проверь.
  11. Думаю Юрий Куклачев соорудил бы механическое устройство подачи корма. Останется научить нужного кота активировать подачу корма.
  12. можно и без переменной, а просто опросить нужные регистры PINB только переделайте под ваш CodeWizard #include <avr/io.h> uint8_t flag_but; int main(void) { PORTB |= (1<<PB0); // подтянем внутренним резистором к питанию (кнопка) DDRB |= (1<<PB3)|(1<<PB1); // на выход (светики) while(1){ if(!(PINB&(1<<PB0))){ if(!flag_but){ flag_but=1; // PORTB ^= (1<<PB1); // это ваш пример вкл/выкл 1 светика: нажали - загорелся, нажали - погас if(PINB&(1<<PB3)){PORTB &=~ ((1<<PB1)|(1<<PB3));} // если 2-ой лед уже горит, то гасим 1 и 2 (определили, что это 3-е нажатие) else if(PINB&(1<<PB1)){PORTB |= (1<<PB3);} // иначе если горит 1-ый, то зажгем 2 (определили, что это 2-е нажатие) else{PORTB |= (1<<PB1);} // иначе зажгем 1 (определили, что это 1-е нажатие) } } else{flag_but=0;} } }
  13. Потребовалось мне как-то зашить в флеш чип W25Q16 аудио фрагменты в количестве 88шт. для последующего воспроизведения микроконтроллером. Для этого пришлось в HEX-редакторе компоновать все эти фрагменты и отдельно записывать начальный адрес и длину каждого фрагмента. Это очень тяжкий рутинный труд, к тому же из-за однообразных телодвижений не сложно совершить ошибку и весь труд будет насмарку. На это у меня ушло несколько часов и как итог пропустил один фрагмент, и перепутал 2 аудио фрагмента местами. Все эти ошибки обнаружил уже после того как прошил флеш чип и стал пробовать в железе. Потом еще куча времени на поиск и исправление ошибок. И тут пришла мысль. А почему бы не автоматизировать весь этот процесс. В итоге написал не большую программку, которая сама собирает, выбранные аудио фрагменты, в файл прошивки. Так же генерируется код в виде массива и макросов для доступа к фрагментам из программы микроконтроллера. Т.е. теперь подготовить файл прошивки можно за несколько минут, а так же получаем код в виде массива и макросов. Копи-пастим в свой проект и редактируем при необходимости. Выкладываю сей софт и исходник (HiAsm), может кому пригодится. Это моя вторая программа созданная в HiAsm, так что там черт голову сломает. По сути делал то что мне нужно и параллельно вникал как HiAsm-ом пользоваться. files_flash1.zip
  14. В каком магазине брали?
  15. Чтоб больше не возникало таких вопросов http://fusecalc.mirmk.ru/ Выбираем МК и жмем кнопку "Установить значения по умолчанию". Не забываем ориентироваться по фьюзу SPIEN. Он всегда установлен.
  16. Ну если нет желания само обучаться, то искать готовое и пробовать повторять. Вот первая попавшаяся поделка для вывода загрузки ЦП на стрелочный индикатор. И на сайте этого форума что-то подобное видел без использования МК.
  17. Вспомнил. Не советую для вывода этого синуса использовать распространенный дисплей типа nokia5110, так как изображение его довольно инертно. Т.е. если на нем нарисовать горизонтальную полосу и быстро ее опустить вниз, то за этой полосой будет виден серый(градиентный) след. Это я иногда использую в своих самоделках при стирании содержимого экрана. Горизонтальная или вертикальная полоса пролетает по экрану, стирает его содержимое и при этом оставляет симпатичный серый след.
  18. Так в чем проблемы? Установите приложение HiASM. Видеоуроков по ней тьма на ютубе. Создайте в ней приложение работающее фоном. Параметр загрузки процессора выдавайте на COM порт. Далее через переходник на МК. И далее визуализируйте параметр загрузки процессора как вам угодно. Но думаю будет красивше, если параметр загрузки будет влиять на амплитуду синуса. Уверен, что такие самоделки уже существуют.
  19. Возьмите фен для волос и погрейте плату(ы). Если включаться станет нормально, то после остывания(снова появления проблем с включением), сужайте область прогрева для выявления проблематичного электролита.
  20. В ванной комнате ставь и все. Нефиг сидеть и смотреть на хим. процесс Не подогреваю. Реакция и так идет с выделением не большого кол-ва тепла. От применения хлоро содержащей бытовой химии вони куда больше.
  21. usbasp.atmega8.2011-05-28 (12.9kb) - такой прошивкой шил?
  22. как-то так #include <avr/pgmspace.h> … static const uint8_t small_number[][5] PROGMEM= { {7,5,5,5,7}, {1,3,1,1,1}, {7,1,7,4,7}, {7,1,7,1,7}, {5,5,7,1,1}, {7,4,7,1,7}, {7,4,7,5,7}, {7,1,1,1,1}, {7,5,7,5,7}, {7,5,7,1,7} }; uint8_t x,y,z; ... int main() { … x=1; y=1; z = pgm_read_byte(&(small_number[x][y])); // z будет равно 3 … }
×
×
  • Создать...