demiurg1978

Members
  • Публикации

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

  • Посещение

Репутация

19 Обычный

О demiurg1978

  • Звание
    Осваивающийся

Информация

  • Город
    Новосибирск

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    Новосибирская область
  • Оборудование
    Промышленное оборудование

Посетители профиля

681 просмотр профиля
  1. Не работает задержка

    DDRC |= (1>>0); PORTC &= (~(1>>0)); /* Replace with your application code */ while (1) { PORTC ^= (1>>0); _delay_ms(10000); } 1 - У операторов есть так называемая приоритетность, поэтому, чтобы в дальнейшем не париться, оборачивайте операции в скобки. Иначе, когда-нибудь поймаете трудноопределяемую ошибку. 2 - Настало время программных таймеров. Максимальное время сработки сторожевого таймера 2 секунды. А у вас на 10 секунд delay мк вешает.
  2. Не читается Atmega 128 16au

    Вообще, по идее, чтобы в дальнейшем не вляпываться, в программаторах должна быть функция прямого ввода числа. На калькуляторе получаете шестнадцатеричное число и вводите его. И не нужно ставить галочки, то есть, изначально убираем фактор ошибочной установки фьюзов.
  3. LCD 1602

    Это проблема всех дисплеев на этом контроллере. Причина в помехах. Защититься от этого никак. Решения проблемы: создание буфера в ОЗУ, в который мы выводим информацию. И через определенные промежутки времени посимвольно выводить информацию на дисплей из буфера. Алгоритм модуля дисплея: инициализация дисплея, переменных. Настройка программного таймера. Скажем на 1 мс. Как только время вышло, если новая строка отправка адреса строки. Затем вывод строки. Все это каждые 1 мс. Полное обновление дисплея происходит за (16 * 2) + 2 адреса строк = 34 мс. Вариант второй. Каждые от 100 мс до 1 секунды выводить нужную информацию на дисплей. Но это тормозит МК на все время вывода информации. Поэтому решение выбирается из требований к проекту. Реакции системы на события.
  4. Я из Новосибирска. Напишите свои контакты.
  5. Считывание данных с DS1307

    Я делаю на устройства на заказ. И мой принцип - сделал и забыл. Последние слова - ключевые. А это значит, что никакого контрафакта. Зато и сплю спокойно, с чистой совестью. Конечно бывают, ммм, нюансы... Но это - рабочие моменты, из которых делаются выводы. Да, это значит, что комплектующие дороже. Но нервы и время мне дороже.
  6. Считывание данных с DS1307

    А вот нечего гнаться за китайщиной и дешевизной. Попалась китайщина - в мусорку, продавца в бан или поставить на вид.
  7. Считывание данных с DS1307

    Опять же. Аппаратный I2C или ногодрыг.
  8. Считывание данных с DS1307

    Понимаете, в чем фишка написания программ на си для МК. Это на ассемблере можно меряться у кого короче. Но на си короче - не значит быстрее, компактнее по выхлопу. Это зависит от программиста и компилятора. Берем TINY и MEGA. У Tiny нет команды умножения. На Mega умножение на 10 будет производиться аппаратно. Поэтому: //======================================================================== __C_task main (void) { u08 a = 2; u08 b; u08 c; wdt_enable (WDTO_15_MS); sleep_mode_init (); init_soft_timers (); Init_Events (); __enable_interrupt (); while (1) { __watchdog_reset (); proc_device (); b = (a << 1); c = (a << 3); PORTA = b + c; Process_Events (); } } //======================================================================== И когда пишешь программу, учитываешь, какой МК используется. Как в том или ином случае компилятор скомпилирует код.
  9. Считывание данных с DS1307

    //======================================================================== void RTC_Get_Time (void) { u08 temp = I2C_ReadRegister (RTC_ADDR, HOURS_REGISTER); if (temp & (1<<AMPM)) // 12-часовой режим. temp &= 0x1F; else temp &= 0x3F; // 24-часовой режим. set_hours (bcd_hex_time (temp)); temp = I2C_ReadRegister (RTC_ADDR, MINUTES_REGISTER); set_minutes (bcd_hex_time (temp)); temp = I2C_ReadRegister (RTC_ADDR, SECONDS_REGISTER); set_seconds (bcd_hex_time (temp)); } void RTC_Set_Time (u08 hours, u08 minutes, u08 seconds) { I2C_WriteRegister (RTC_ADDR, HOURS_REGISTER, hex_bcd_time (hours)); I2C_WriteRegister (RTC_ADDR, MINUTES_REGISTER, hex_bcd_time (minutes)); I2C_WriteRegister (RTC_ADDR, SECONDS_REGISTER, hex_bcd_time (seconds)); } u08 bcd_hex_time (u08 a) { return (((a >> 4) * 10)) + (a & 0x0F); // return (((a >> 4) * 10)) | (a & 0x0F); // однокуйственно... } u08 hex_bcd_time (u08 a) { u08 temp = a; u08 cnt = 0; while (1) { if (temp >= 10) { temp -= 10; cnt++; } else break; } return ((cnt << 4) | (temp & 0x0F)); }
  10. Считывание данных с DS1307

    Два варианта работы с часами. Считывание времени. Опрос выхода микросхемы, микросхему настраиваем на 1 Гц. В первом случае постоянный опрос микросхемы, во втором случае при включении устройства считывается время, затем по состоянию выхода инкрементируем переменные секунды, минуты, часы.
  11. Я в этой теме новичок. Есть опыт работы с микроконтроллерами. Хочу повторить металлоискатель. Какой выбрать? Требования: на микроконтроллере AVR, различение металлов. Черный-цветные. В интернете есть материалы, но хочу повторить стопроцентно рабочий вариант. Нет никакого желания тратить свое время на нерабочие варианты.
  12. Поиск схемы с триггером

    Угу. Открыл. И тут же закрыл... :)))
  13. Поиск схемы с триггером

    Я зашел на форум и увидел два топика этого ТС. Вопросы элементарные. С одной стороны проще промолчать и пройти дальше. Но я до сих пор недоумеваю, какой смысл задавать элементарные вопросы на форумах, если достаточно открыть книжку по азам электроники?
  14. Поиск схемы с триггером

    Арсений. Купите или скачайте книги что-то вроде "Электроника для начинающих". Начните с этого. И вам полезно будет и форум отдохнет от подобных вопросов. Ответы на которые можно найти в любой книжке для начинающих.
  15. Нужно спаять радиоприемник по схеме

    Я по схемам Полякова паял, не на каждом транзисторе будет работать. Нужен высокочастотный и с большим коэффициентом усиления. У мну получилось на КТ3102. Но схема капризная пипец. Малейшее изменение емкости (от рук) частота уплыла. Вдобавок еще и реагирует на механические вибрации (из-за конденсаторов). Желательно антенный усилитель добавить. А приемник поместить в экран. Селективности никакой.