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

Вопросы от начинающих по МК


Рекомендуемые сообщения

Тут все очень просто.

Нормальный программист не назовет функцию в своем коде именем normalnaya_funkciya.

Даже если она и в самом деле нормальная.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

4 часа назад, Demonrostov сказал:

Ничего не понял, но код работает как надо......

Любой может написать код, понятный для машины. Хорошие программисты пишут для людей.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Всем привет! У меня возник вопрос и я решил с вами проконсультироваться так как сам пока не могу найти ответ. 

Задумка такая. Хочу сделать небольшие часы на ИН-16. Эти часы всегда будут стоять возле ПК и питаться от порта USB. Кроме того решил добавить возможность общения часов с ПК посредством USART и не только передача данных но и возможность перепрошивки. А это значит что нам нужна микросхема с выходами TX,RX,DTR. 

Вы скажите так есть готовая микра. FT232RL. И я отвечу да. Есть. Но она дорогая, паять из за размеров не очень удобно и  она большая :)

У все думал чем заменить эту микросхему... И нашел вот этот проект. В этом проекте используется микросхема Attiny45/85. Она идеальна подходит по габаритам и стоимости! Кроме того в проекте присутствуют исходники. 

Но не обошлось без ложки дегтя..... Почему то скорость только 4800. и нет вывода DTR. Хотя этот вывод реализован на более старших моделях. Да и скорости там повыше будут.

Очень бы хотелось бы допилить Attiny45/85 хотя бы до скорости 9600 и добавить вывод DTR. Я думаю что даже можно использовать внешний кварц, а ногу Reset превратить в вывод DTR. 

Скажите пожалуйста стоит ли оно того? Или есть какие то другие решения? Может уже кто то сталкивался с подобным вопросом? 

Ссылка на комментарий
Поделиться на другие сайты

Не стоит. У микросхемы есть дешевый китайский аналог - CH340, правда со своими дровами но они есть и для 10-ки. А вообще Arduino Nano - там всё уже встроено, разведено и подключено к нужному порту. Да и достаточно миниатюрное.

В проекте на TINY85 скорость больше сделать нельзя, не потянет по ресурсам... там и так всё впритык по таймингам.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

CP2102 все же лучше 340-ой как мне показалось. А дороже всего на чуточку. Зато связь гораздо стабильнее

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

CP2102 мне кажется мелковата для пайки. Да и не просто впаять её... 

CH340 не плоха. в 2 раза больше чем TINY85 но паять удобно. К сожалению в близлежащих магазинах данной микры нет. Придется заказывать с Алика. Цена 250р за 10шт :)

Ссылка на комментарий
Поделиться на другие сайты

@LEVV2006 https://ru.aliexpress.com/item/CH340G-5V-USB-to-TTL-UART-Serial-Converter/32524218818.html?spm=a2g0s.9042311.0.0.5C5rug

такие же ест и на 2102 , все сделано :D

Изменено пользователем DmitryS
Ссылка на комментарий
Поделиться на другие сайты

У меня наоборот с CP2102 отрицательный опыт... 2-3 дня работы и винда ловит синий экран из-за этого поделия.

Лучше уж оригинал FT232RL у неё в драйвере больше критических настроек вроде таймаутов и т.д. что бывает весьма важно в радиолюбительской практике когда нужен быстрый ответ от ведомого устройства, по умолчанию там стоит таймаут в 20мс, если буффер в 15 байт не заполняется то в программу он прийдёт не раньше таймаута, а это бывает очень критично при интенсивном двустороннем обмене с девайсом в стиле запрос-ответ. Так вот в других чипах этой настройки НЕТ, и они тормозят.

Изменено пользователем Alexeyslav

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, LEVV2006 сказал:

CH340 не плоха

Имею отрицательный опыт. Купил на Али 5шт преобразователей за 200р. (зато дешево!), работают, в ОС определяются (дрова установлены, конечно). Но вот программатор Тритон через них работать отказался. Вернее, начинает программировать (или считывать), а затем рандомно по времени вываливается ошибка. До этого юзал TrendNet TU-S9, без нареканий. При попытке долговременного использовании в других случаях (разные программы) выяснилось, что порт тупо теряется. Причем в диспетчере устройств он отображается, а программы его не видят. Лечится удалением порта (в диспетчере), затем при обновлении конфигурации он обнаруживается, и работает опять какое-то время (может несколько дней отработать, а может часов). В общем, не рекомендую.

Изменено пользователем КЭС
Ссылка на комментарий
Поделиться на другие сайты

Покупал на Али пару десятков адаптеров USB-RS485 на CH340. Все работает идеально, как с заводскими приборами, так и с самоделками на AVR. Уже почти все ушли в дело, надо еще с десяток прикупить. А программаторы через такие вещи действительно не работают. Эта тема уже неоднократно поднималась.

Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, Sergey-Ufa сказал:

программаторы через такие вещи действительно не работают

Имеется в виду USB-COM? Есть масса других преобразователей, с которыми таких проблем у меня не было (один я упомянул).

Ссылка на комментарий
Поделиться на другие сайты

Здесь дело скорее всего не в самом чипе моста USB-UART, а в полноценности формирования интерфейса RS-232. Многие из дешевых адаптеров USB-COM ограничиваются формированием только RX и TX.

Ссылка на комментарий
Поделиться на другие сайты

Диву даюсь, коллеги...

Что за любовь к CDC USB для поделок, где требуемый рейт обмена редко превышает 9600, а по факту даже это много?

Почему бы не адаптировать под свою задачу HID USB и не писать под него свой софт для компьютера.

Никогда ничего не отваливается, можно автоматически запускать целевое приложение при соединении, максимально возможный рейт 64 кБАЙТ. Причем главное совсем не в USB, а в UART, патамушта нужно организовать обмен моста с МК по уарту с рейтом  в несколько мбит, иначе 64 байта за 1 мс  (плюс синхронизация данных) не освоить.

Обычно производители МК предоставляют стек USB под свои МК и драйверы для ОС для разных классов USB.

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Только что, my504 сказал:

Что за любовь к CDC USB для поделок, где требуемый рейт обмена редко превышает 9600, а по факту даже это много?

Я так понимаю, основная причина - отсутствие необходимости писать собственное прилжение для обмена с HID, CDC же обеспечивает работу с любым "терминалом", и даже в программировании со стороны ПК много проще - открыл "файл" или пиши/читай. HID открыть просто так мало, его еще в системе найди попробуй...

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

Ссылка на комментарий
Поделиться на другие сайты

Как то вы все слишком глубоко углубились в проблему :) Тема форума "Вопросы От Начинающих По Мк" и мне кажется чем проще будет решение тем лучше. 

HID USB Уж простите но на мой взгляд это слишком глубокие дебри... Я один раз окунулся в это и больше как то не хочется. 

Кстати ссылка товарища Геннадия весьма интересна и  осталась без внимания! 

13 часа назад, Геннадий сказал:

Если я правильно понял то на микросхеме которая имеет аппаратный USB можно организовать USB-UART конвектор. И мало того, без особых проблем можно прямо из кода программы писать сообщения в UART. + остается возможность перепрошивки. 

К сожалению информации маловато.... Реализовать бы это на atmega32u4. Так как она у меня уже есть в виде платы Леонардо. 

 

Ссылка на комментарий
Поделиться на другие сайты

Только что, LEVV2006 сказал:

Реализовать бы это на atmega32u4. Так как она у меня уже есть в виде платы Леонардо

Попробуйте LUFA, но мне кажется, не для начинающего это...

Вот ссылка на проект LUFA, то была ссылка на документацию

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

Ссылка на комментарий
Поделиться на другие сайты

   Здравствуйте. Вопрос. Возможно - ли в МК зашить программу  автономного генератора, чтобы он не мешал (или почти не влиял) на выполнение основной программы.

Используется  Atmega 8. Требуется меандр с частотой от 9 до 12кГц, частота кварца 16 МГц, или  лучше использовать отдельный (внешний) генератор?

P.S.  Возможно использование других Atmega……N.

Пишу в Atmel studio 6.2.

Изменено пользователем RA3DTI
Ссылка на комментарий
Поделиться на другие сайты

Кто-нибудь встречал примеры,где описывается как работать с Flash внешней по SPI? Сейчас начал искать и был удивлён,ни одного описания как с этой флешью работать.

Ссылка на комментарий
Поделиться на другие сайты

@BiBOX смотря какая флеш. Они разные есть

а так впринципе пару корпусов сдвиговых регистров и параллельная шина готова

Изменено пользователем Viktor26

Не знаеш как? Спроси у Google'а !!!

Ссылка на комментарий
Поделиться на другие сайты

Ребята, подскажите, МК STM32F030, появилась необходимость выбора режима по нажатию кнопки с дальнейшем сохранением настроек во флэш МК. В голову пришло несколько вариантов:

1) Сохранение каждый раз по нажатию на кнопку. НО у F030 вроде как 1'000 циклов на запись и если кто-то чрезмерно увлечется, можно и память "запороть".

2) Сохранение во флэш при выключении питания. Но как лучше, поставить бОльшую емкость после лм-ки (стабилизатора) и опрашивать АЦП (понижение питания) каждые 100мс или маленькая емкость, но опрос каждую 1мс. Никогда не задавался вопросом, насколько ресурс самого МК будет уменьшен, если например, таймером запускается АЦП, в прерывании АЦП сохраняется значение и делаться это будет раз в 100мс или раз в 1мс?

Были еще варианты, но как по мне проще всего именно сохранение при отключении (если изменения были), вот думаю, как лучше сделать, либо большую емкость, либо чаще опрашивать.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • ИМХО, только с24, с25, с12 имеет смысл проверить/заменить.
    • Я сам найду, вы мне название напишите пожалуйста.
    • Добрый вечер..)) Нет в моем случае лучше найти готовый для моего Цифровой осциллограф Instrustar ISDS205A 2 канала х 20 МГц..
    • А как же вы квазар спаяли? Или ЛУТом не владеете? Можно даже маркером все прорисовать. А за осцил боятся не стоит, ему на вход будет приходить допустимое напряжение (указано в хар-ках осциллографа).
    • Релюхи не причём. При неисправности релюх симптомы были бы другие. И ИБП даже не клацает когда переходит в  "аварию".   Да. Аккум новый. Более того - 2 новых пробовал. И без АКБ тоже. Не влияет. Да мелкие особо не вздуваются ж. Хотя С21 под подозрением..   Спасибо. Буду иметь ввиду.
    • #include <Wire.h> #include <Oregon_TM.h> #include <BME280I2C.h> //////////////////////////////////////////////////////////////////////////////////////////////////////////// //Скетч для устройства, передающего данные датчика BME280 в формате Oregon Scientific THGN132N //Принципиальная схема прилагается. //Для работы необходима библиотека https://github.com/finitespace/BME280/ //Устройство работает от 3-ех пальчиковых батареек, для экономии электричества заливать скетч нужно через ISP //////////////////////////////////////////////////////////////////////////////////////////////////////////// //Также возможна передача данных в формате - THP (температура, влажность, давление, напряжение батареи) //Пример с приёмником поддерживает расшифоовку THP //////////////////////////////////////////////////////////////////////////////////////////////////////////// # define THGN_SEND 1 // Передавать ли данные в формате THGN132 # define THP_SEND 0 // Передавать ли данные в формате THP # define DEVICE_LOG 1 //Писать ли лог В Serial # define DONE_PIN 15 // вывод сигнала об окончании работы на таймер # define BME_WAIT 10 // Сколько мс ожидать датчик BME # define BATTERY_THR 3.5 // Порог напряжения для выставляения флага разряда батарейки (THGN) ///////////////////////////////////////////////////////////////////////////////////////////////// //Ниблы датчика THP //Во всех полях младшие ниблы идут вперёд!!! // 1-2 - тип (55) // 3 - канал (0-7) // 4-6 - (температура от -100С) * 10. Т.е. +25.1С = 1251 = 4E3h // 7-9 - Влажность *10 Т.е. 25.1% = 251 = 0FBh // 10-12 - (давление от 500ммртст) * 10. Т.е. 765мм = 2650 = A5Ah // 13-15 - данные с АЦП (A0) // 16-17 - CheckSUM // 18-19 - CRC8 (poly 0x07 start 0x00) ///////////////////////////////////////////////////////////////////////////////////////////////// Oregon_TM transmitter(4); BME280I2C bme; bool bme_present = false; float bme_temp(NAN), bme_hum(NAN), bme_pres(NAN); ///////////////////////////////////////////////////////////////////////////////////////////////// void setup() { digitalWrite(DONE_PIN, LOW); pinMode(DONE_PIN, OUTPUT); #ifdef DEVICE_LOG Serial.begin(115200); Serial.println("Waiting for BMEsensor..."); #endif //Обмен данными с BME////////////////////////////////// Wire.begin(); while(!bme.begin()) { if (millis() > BME_WAIT) break; } if (!bme.begin()) { #ifdef DEVICE_LOG Serial.println("No BME sensor found"); #endif bme_present = false; } else { switch(bme.chipModel()) { case BME280::ChipModel_BME280: bme_present = true; bme.read(bme_pres, bme_temp, bme_hum); #ifdef DEVICE_LOG Serial.println("Found BME280 sensor! Success."); Serial.print("Temperature = "); Serial.print(bme_temp, 1); Serial.println("C"); Serial.print("Humidity = "); Serial.print(bme_hum, 1); Serial.println("%"); Serial.print("Pressure = "); Serial.print(bme_pres * 0.75, 1); Serial.println("mmHg"); #endif break; default: #ifdef DEVICE_LOG Serial.println("Found UNKNOWN sensor! Error!"); #endif bme_present = false; } } //Напряжения батареи/////////////////////////////////////////// word battvotage = (word)(((float)(1.1 * 16368) / Vbg()) * 100); #ifdef DEVICE_LOG Serial.print("Battery voltage = "); Serial.println(battvotage,HEX); #endif //Подготовка и отправка данных THGN////////////////////////////////////// transmitter.protocol == 2; if (THGN_SEND) { transmitter.setType(THGN132); transmitter.setChannel(3); transmitter.setBatteryFlag(battvotage < BATTERY_THR); if (bme_present) { if (bme_hum > 98) bme_hum = 98; if (bme_hum < 2) bme_hum = 2; if (bme_temp > 70) bme_temp = 70; if (bme_temp < -50) bme_temp = -50; transmitter.setTemperature(bme_temp); transmitter.setHumidity(bme_hum); transmitter.setComfort(bme_temp, bme_hum); } else { transmitter.setTemperature(-49.9); transmitter.setHumidity(2); transmitter.setComfort(-49.9, 2); } transmitter.SendPacket(); } // Если отправляются оба формата пакетов, межу ними надо выдержать паузу if (THP_SEND && THGN_SEND) delay(100); //Подготовка и отправка данных THP////////////////////////////////////// if (THP_SEND) { transmitter.setType(THP); transmitter.setChannelTHP(1); transmitter.setBatteryTHP( battvotage); if (bme_present) { transmitter.setTemperatureTHP(bme_temp); transmitter.setHumidityTHP(bme_hum); transmitter.setPressureTHP(bme_pres * 0.75); // перевод Pa в mmHg } else { transmitter.setErrorTHP(); } transmitter.SendPacket(); } #ifdef DEVICE_LOG Serial.println(); Serial.print(millis()); Serial.println("ms"); Serial.println(); #endif //Команда на отключение питания digitalWrite(DONE_PIN, HIGH); } ///////////////////////////////////////////////////////////////////////////////////////////////// void loop(){} ///////////////////////////////////////////////////////////////////////////////////////////////// int Vbg() { ADMUX = (1<<REFS0)|(0<<REFS1)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(0<<MUX0); long buffersamp=0; for (int n=0x0; n<=0xff; n++ ) { ADCSRA = 0xc7; while (bit_is_set(ADCSRA,ADSC)); buffersamp += ADC; } buffersamp >>=4; //16368 full scale 14bit ADCSRA &= ~(1 << ADEN); // отключаем АЦП return buffersamp; } Вот код программы. Пробовал по разному и от 5в запитывал и всю систему от 3,3 в. Причем голая ардуинка с таймером работает в нормальном режиме некоторое время, но потом все равно слетает и начинает питать мк постоянно( Причем это происходит всегда через разный промежуток времени.
  • Похожий контент

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