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

Язык СИ для микроконтроллеров


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

Вот кстати по енкодерам обсуждение, там и по алгоритмам обработки и примеры на Си: http://www.microchip.su/showthread.php?t=7861

Будьте проще и люди к вам потянутся.

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

Так проект защиты тихо валко, но двигается, просто соверщенно нет времени, могу, что-то проверять только по выходным. Вот, что получилось пока, модуль защиты от постоянки работает, сделал его на АЦП, модуль включения вентиляторов работает( включение +55, выключение +45). Сейчас думаю как прикрутить защиту от КЗ, уже есть кое-какие мысли задействовать для этого также АЦП, надо проверить будет, плохо, что в 16f877 нету модуля компараторов, было бы проще,ну да ладно. В программе пока не использовал ни прерываний ни собаку, пока чисто рабочий скелет. В архиве исходник, hex, проект протеуса.

zashita.rar

В проекте: L4, L5 - имитация реле.

L3, L6 - сигнал авария по постоянке.

L1, L2 - имитация вентиляторов.

Задержка включения 5 секунд. Порог отключения по постоянке +- 0.2 в.

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

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

Будьте проще и люди к вам потянутся.

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

А как на си с многозадачностью дела? Реализовать реально? Проще чем на АСМе? На Basice наверное совсем не вариант? Если брать МК с аппаратным стэком на Си можно писать проги к нему? Пока читал только про АСМ, вроде разобрался б/м (PIC16F84). И ещё прога написанная на си легко перенесётся на другую модель МК? На АСМе это вроде не просто. Он для разных моделей разный вроде. Особенно интересует многозадачность, а то много времени уходит "впустую" или считать МЦ не хоцца.

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

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

Одновременная работа программного UART и программного SPI, и напр. программы опроса клавиатуры (не используя прерывания).

Это только пример.

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

А как на си с многозадачностью дела? Реализовать реально? Проще чем на АСМе? На Basice наверное совсем не вариант? Если брать МК с аппаратным стэком на Си можно писать проги к нему? Пока читал только про АСМ, вроде разобрался б/м (PIC16F84). И ещё прога написанная на си легко перенесётся на другую модель МК? На АСМе это вроде не просто. Он для разных моделей разный вроде. Особенно интересует многозадачность, а то много времени уходит "впустую" или считать МЦ не хоцца.

Для реализации многозадачности (вытесняющей или кооперативной) в Си применяют многочисленные ОСРВ. Выбирай - не хочу...

Можно написать диспетчер задач и сервисы самому...

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

Переносимость текстов в АСМе вполне высокая в пределах платформы, если писать грамотно.

Если переходить на другие платформы даже одного производителя, то переносимость понятие очень растяжимое даже на Си. Проку от такого перехода, если не изменяется алгоритм...

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

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

ОСРВ ресурсов немало хавают наверное. Применять стоит для мощных МК. Или я неправ? Для работы ОСРВ нужен обязательно программный стэк?

А диспетчер задач написать универсальный можно? Число задач - ну навскидку 16....32. Может уже написаны такие готовые? И получится ли многозадачность для МК с аппаратным стэком? На чём такой писать удобнее АСМ или Си. Это к тому что стоит ли вобще связываться с ознакомлением с Си для МК.

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

  • 2 недели спустя...

Скачал HI-TECH с первой страници. Устанавил а там малый выбор камней. В гугле йскал но находил только с аналогичным выбором аналогичные. Поделитесо ссылочкой

post-60152-1262642116.jpg

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

Подскажите пожалуйста, что может обозначать следующий код:

BYTE xdata regValues[] = {1,2,3};
halSpiWriteBurstReg(0x00, regValues, sizeof(regValues));
halSpiReadReg(0x00);
halSpiReadReg(0x01);
halSpiReadReg(0x02);

Через интерфейс СПИ что-то посылается на периферийное устройство. Даже зная это, ничего не погнимаю из этого кода.

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

CHARADEY

Обрати внимание, что это ты просматриваешь только МК младшего семейства, нажми F3 и появятся МК среднего семейства, а F4 переключит выбор на старшее семейство.

Будьте проще и люди к вам потянутся.

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

Народ, ну может у кого есть мысли по поводу защиты от КЗ ? У меня уже кончились, осталась одна, но она требует внешней микросхемы компаратора, а я этого не хочу, охота. чтобы был только контроллер и использовать его по максимуму, если нет ни у кого дельных мыслей, (а скачало проект 28 человек) то может тогда прикрутить к МК индикацию уровня сигнала на светодиодах ?

Что-то как-то вяло народ реагирует на всё, то по форуму куча вопросов, а теперь ветка есть и я тут сам с собой разговариваю :) Может моя конструкция нах никому не нужна и людям проще это на ИС собирать в виде отдельных узлов ? Ну давайте может кто ещё какой узел предложит, а ?

Будьте проще и люди к вам потянутся.

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

Да вот думаю над этим, чтобы из АЦП соорудить подобие компаратора, но пока это в голове, в коде и железе не реализовывал, надо продумать как это лучше сделать. А то, что в 877-м есть АЦП я знаю у меня защита от постоянки с использованием двух каналов сделана уже.

Будьте проще и люди к вам потянутся.

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

Нет проги для просмотра схемы. Чтобы не было кз можно использовать стабилизатор с встроенной защитой или с ограничением тока. Но это для питания от постояники.

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

  • 2 недели спустя...

Короче после всех раздумий по поводу защиты от КЗ я решил, что проще будет её прямо в усилке реализовывать, вместо этого узла решил привинтить TDA8425, будет пред со всеми регуляторами только без ДУ, у меня его нету и ИК приёмника тоже, ну и за одно потренеруюсь в работе с I2C, микру сегодня уже заказал дней через 10 придёт, сейчас даташит качать буду и курить, курить ( даташит ) до посинения :) Фигово, что её в протеусе нема, буду ждать в железе, как долго, блин. :)

Может у кого уже есть опыт по общению с данным зверем ? Я тут подумал, I2C мне лучше задействовать железную, а не софтовую т.к это побережёт ресурсы МК, верно или нет ?

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

Будьте проще и люди к вам потянутся.

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

  • 1 месяц спустя...

Беспроно, надо юзать аппаратный I2C.

Времена 16F84 давно прошли.

Тем более что это не сложно и очень удобно.

Пишу на Си CCS PICC для PIC, CVAVR для AVR, и иногда IAR для NEC. Особенно привык к SIM300dz.

ICQ: 288449055

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

Да у меня уже почти весь код готов, осталось как раз добавить только функции для работы с I2C, но пока если честно руки не доходят, в принципе и функции в голове уже все собраны, если может кого заинтересует могу выложить, то что уже сделал, там чуть-чуть осталось. Но, что-то мне кажется добровольцев не будет, т.к в инете уже готовых схем со схожим функционалом и даже круче просто море и на пиках и на аврках. Ещё самое плохое, что магазин мне прислал заказ без нужной мне TDA8425, а ждал я почти месяц, редиски они такие вот оказались.

Короче вот, то что сделал zashita.rar

если всё же доделаю соответственно выложу обновление.

Жаль, конечно темка задумывалась для всех кто хочет научиться программировать МК на Си, но что-то как-то народ вяло раскачивается, хотя то тут, то там создаются темки с вопросами. Ладно пошёл спать, завтра на работу :)

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

Будьте проще и люди к вам потянутся.

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

  • 3 месяца спустя...

есть небольшой вопросик гуру форума

как сделать так чтобы микроконтроллер управлялся кнопкой по заднему или переднему фронту нажатия на кнопку?

микроконтроллер 12f675

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

логика такая

при работе постоянно опрашивается порт командой

if (GPIO & (1<<2)) rezim();

Delay_ms(200);

но это не удобно - редко когда удается добиться четкого срабатывания кнопки - если зажать кнопку будет перебор состояний на выходе микроконтроллера , что не удобно - хотелось бы чтобы режим переключался только по фронту нажатия кнопки

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

Выход есть всегда...

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

Нужно сохранять текущее значение кнопки и при следующем опросе сравнивать состояние кнопки с сохранённым. Так можно добиться срабатывания как при нажатии, так и при отжатии кнопки.

Примерно вот так:

char tmp;

if(!GPIO2 && tmp) rezim();     // Срабатывание при отжатии
//if(GPIO2 && !tmp) rezim();   // Срабатывание при нажатии

tmp = GPIO2;

А что-бы было 100% срабатывание, нужно запихнуть этот код в прерывание по таймеру. Что-бы этот кусок выполнялся с определённой переодичностью.

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

спасибо

попробовал с прерыванием

получилось вот что

void interrupt() {

j++;

GPIO=j;

if (j == 4) j=0;

INTCON = 0x90;

}

это процедура установки режима работы

инициализировал прерывание

INTCON = 0x90;

работает по переднему фронту

все правильно написал?

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

Выход есть всегда...

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

А что это такое ? :unsure: Это у Вас получился какой-то вывод переменной в порт.

void interrupt() {

какие-то действия

INTCON = 0x90;

}

инициализировал прерывание

INTCON = 0x90;

Выход есть всегда...

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

  • 3 недели спустя...

Можно ещё вот так сделать на отжатие, только ещё антидребезг надо добавить.

//блок инициализации переменных
char flag = 0;
char tmp = GPIO2;
//основной цикл программы
if (GPIO2 != tmp ) { flag++; tmp = GPIO2; } //обработка нажатия отжатия.
if (flag >= 2 ) { funcia (); flag = 0; }

Работает следующим образом:

1.Записываем в tmp начальное состояние GPIO2, например 1.

2.Если нажали то состояние GPIO2 с 1 изменится на 0 сработает условие flag увеличится на 1, а в tmp снова запишем

состояние GPIO2.

3.Если отжали то состояние GPIO2 c 0 изменится на 1 сработает условие flag увеличится на 1, а в tmp снова запишем

состояние GPIO2.

4.Теперь flag равен 2 и сработает следующее условие где мы выполняем какую-то funcia() и обнуляем flag.

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

Короче как-то так, а если что-то и не так :) то поправите. :D

Будьте проще и люди к вам потянутся.

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

  • 3 месяца спустя...

всем доброго времени суток! Читаю этот топик что-то понимаю, что-то не очень. Я тока недавно занялся программированием на Си. Поставил себе 8-й микроСи. Пытаюсь что-нить свое состряпать. У меня вопрос. Как можно (хотя бы алгоритм) реализовать прогу? Ща расскажу краткое содержание. Есть две ветки проги. Мне нужно, чтобы при нажатии кнопки сначала выполнялась одна ветка, при следующем нажатии кнопки - вторая, при повторном нажатии, снова выполняется первая ветка. Я тут прикинул алгоритм,может кто поправит, буду непротив. Алгоритм: сначала мне надо объявить некую переменную, которая изменяла бы значение (инкрементировалась) по нажатию кнопки. Нажал один раз, например, переменная i=1 и прога пошла работать от условия, что i=1. Нажал второй раз, i=2 и прога пошла работать по второй ветке. Нажал еще раз и прога пошла работать по первому условию. Если что-то желаете уточнить (я думаю, что не очень все доходчиво написал) задавайте вопросы. Спасибо!

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

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

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

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

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

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

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

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

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

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

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

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