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

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


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

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

А как вы будете бороться с ситуевиной, когда два или три дома потребляют одновременно. Насос пашет, счётчик крутит, а напор воды то уже не тот. 

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

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

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

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

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

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

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

А два дома, по всей видимости, одновременно потреблять не могут. Насос подключается к домам поочерёдно.

Вообще, проблема непонятна. Сначала речь шла о переменных, потом через пару постов пришла к насосам. Как это всё сопоставить, я, например, ума не приложу...
 

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

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

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

Эта проблема решается путём установки приборов учета воды.  Зная производительность насоса и количество используемой воды, можно судить о времени работы насоса. И не надо ничего лишнего выдумать. Зачем ограничивать жёстко? Можно ведь просто пользоваться и платить за воду а не за время

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

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

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

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

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

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

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

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

Ну так я выше писал. Наверное нужно было шире мысль раскрывать)))) подключится к счетчику с самым дешевым тарифом. И платить по приборам учёта воды. Вывести формулу по которой высчитывать ватт/литр и все. Никаких проблем, все по чесноку.

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

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

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

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

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

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

Всем привет ! Такой вопрос, к аналоговому входу микроконтроллера подключен потенциометр pot1, к виходу ШИМ подключен двигатель с редуктором, до оси редуктора присоиденен потенциометр pot2. Виполняется какаято програма и если повернуть потенциометр pot1, двигатель должен повернутся на тодже угол +-10 ориентируясь на потенциометр pot2. Как написать именно диапазон +-10, чтоби двигатель не дегрался туда-сюда ?

Угол от 0 до 1023, не нужно большой точности чтоби если pot1 будет 512 то pot2 можеть бить в диапазоне от 502 до 522.

if (pot1 != pot2)
    {

        while(pot1 > pot2)
       {
        digitalWrite(RELE, LOW);
        analogWrite(MOTOR, 127);
       }
       while(pot1 < pot2)
      {
        digitalWrite(RELE, HIGH);
        analogWrite(MOTOR, 127);
      }
    }

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

Для Ардуины вроде отдельный раздел есть, http://forum.cxem.net/index.php?/forum/99-arduino-и-raspberry-pi/ Впрочем, приятно удивлен наличием форматирования.

Как-то так:

	#define MOTOR_DIRECTION B,1 //например, реле на PB1
	#define ACCURACY 10 //точность позиционирования (в ед. АЦП)
	...
	while(1){
	  while( pot2 < (pot1 - ACCURACY) ){ //точность добавляется сюда
	    PORT_1(MOTOR_DIRECTION); //макрос для установки бита PORTx - ну не знаю я Ардуину, самописные макросы удобнее
	    motor_on(); //включить мотор. В принципе, по логике, оба эти действия стоило бы вынести за пределы циклов, но для дубового варианта сойдет
	  }
	  while( pot2 > (pot1 + ACCURACY) ){
	    PORT_0(MOTOR_DIRECTION);
	    motor_on();
	  }
	  motor_off(); //в конце не забываем выключить мотор
	}

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

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

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

  • 2 месяца спустя...
В 02.11.2016 в 20:11, COKPOWEHEU сказал:

Как-то так:

удивлен... я бы сделал как-то так:

int delta;

while(1){
	delta = pot2 - pot1;			// вчисляем ошибку угла
	if(abs(delta) > ACCURACY){		// сравниваем с допустимой погрешностью
		if(delta < 0)				// в зависимости от знака ошибки
			PORT_1(MOTOR_DIRECTION);// поворачиваем в одну
		else
			PORT_0(MOTOR_DIRECTION);// или в другую сторону
		motor_on();				// мотор крутим
	} else {
		motor_off();			// если ошибка меньше допустимого отклонения, мотор останавливаем
	}
}

 

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

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

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

подскажите  

надо байт разделить на старший и младший полубайт. 

это как?   В7-В6-В5-В4       В3-В2-В1-В0 

и какой тут старший?   который  В3---В0  ???

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

да я наверное не правильно выразил свой вопрос. 

в lcd надо загонять полубайты. целый байт PortB=0b11000101   (PortB=0xC5)

и вот не знаю что вперед загонять это 1100   или это 0101

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

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

Народ, подскажите, а то что то "сомневаюсь я"(с)

 

Допустим есть вложенная структура,  размер каждого поля структуры - один байт. 

 struct func{ char X;  char Y ;  char Z ;  char D;};              
 struct func_graf {struct func N1; 
                   struct func N2; 
                   struct func N3; 
                   struct func N4; 
                    char Symm;};
 struct func_graf My_func; // структура с которой нужно работать.
   char *xx  // берем указатель
   xx=&My_func;  // присваиваем адрес структуры

  

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

То есть ,как элементы расположаться в памяти , в каком порядке ?  Будет ли соблюдаться последовательность  

N1.X  - N1.Y - N1.Z - N1.D -  N2.X  - N2.Y - N2.Z - N2.D -N3.X  - N3.Y - N3.Z - N3.D - N4.X  - N4.Y - N4.Z - N4.D - Symm 

и если нет, то как сделать чтобы соблюдалась.

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

20 минут назад, E_C_C сказал:

Будет ли соблюдаться последовательность

А почему бы ей не соблюдаться ? 
Нет никакого основания компилятору размещать поля не по-порядку.
 

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

8 минут назад, Aleх сказал:

Нет никакого основания компилятору размещать поля не по-порядку.

Ну мало ли, оптимизация памяти, или еще что, я не настолько силен в теории компилирования , потому и сомнения.

Знаю что с массивами такой способ работает, но массив в Си, по сути ,просто область памяти и работает через указатели, а вот со структурами может нюанс какой есть .

Спасибо за ответ.

 

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

Нюансы есть только с выравниваем полей на платформах, битностью выше 8-ми.
Например, структура типа :

struct func{ char X;  char Y ;  char Z ;}

на 32-битной платформе будет занимать 4 байта, а не 3.
Соответственно, в этом случае, структура типа :

 struct func_graf {struct func N1; 
                   struct func N2; 
                   struct func N3; 
                   struct func N4;}

Займёт уже не 12 байт (3*4), а 16 (4*4). И каждый 4-ый байт в области памяти будет незначимый (болтаться впустую).
 

Но порядок полей, в любом случае, совпадёт с объявленным.
 

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

Ну и порядок полей может быть как прямым (X-Y-Z-D), так и обратным (D-Z-Y-X), в зависимости от компилятора. Хотя тут не уверен, но вроде натыкался на такое.

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

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

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

Порядок байт зависит не от компилятора, а от размера индейца в контроллере.

Большие индейцы и маленькие индейцы...

:D

Big endian vs Little endian.

 

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

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

компилятор ,кодевижн, МК- тини2313, порядок полей прямой ,незначимых битов нет,пока проверил в протеусе, работает, нормально. Единственное уточнение - код:

struct func_graf My_func; // структура с которой нужно работать.
   char *xx  // берем указатель
   xx=&My_func;  // присваиваем адрес структуры

-неправильный, нужно :

struct func_graf My_func; // структура с которой нужно работать.
   char *xx  // берем указатель
   xx=(char*)&My_func;  // присваиваем начальный адрес структуры
   ......
    xx++; // сл поле структуры

 

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

1 час назад, E_C_C сказал:

неправильный, нужно

Почему не правильный? Это не error, это warning -допустимо, хотя "скользко".

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

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

Мой кодевижн выдает error, видимо от настроек компилятора зависит.

Цитата

Error:  a value of type 'struct func_graf *' can't be assigned to an entity of type 'unsigned char *'

 

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • Актуальная потребность) Тоже развлекался подобным способом, только с немного другим ибп. Хотел перевести его на железофосфат, но он до конца не заряжал батарею. Блок зарядки у него не калибровался, и по моему с микроконтроллером. В итоге оставил свинец. Когда то он тянул серверную на 4х батарейках по 200а/ч. Серверную он вытянул за ночь, а вот из за отсутствия охлаждегия все пошло в разнос. В итоге все закончилось полной заменой силовой комплектухи и устранением лишних отверстий в плате. Но картошку хватило сварить и даже немного поработать, зимой на железофосфате 4 часа отапливал тепловентилятором балкон)). Дешевле чем из розетки днем)) А для ленивых( ну или если в лом или нет достойного донора) можно взять инвертор от SVC он довольно не дорогой и мощный, при этом может работать с авто батарейками, зарядный ток до 10А. Я на нем гоняю насосы котла и кондиционер в шкафу, иногда еще станок.  
    • @Александр2, это у тебя в голове что-то с чем-то вступает в противоречие.  Я знаю, что ты ярый поклонник Ланзара. Поэтому пояснение для тебя того, почему симметричная на бумаге/на экране монитора схема, и спаянная на реальной плате с реальными комплектующими в отличии от неё за редким исключением вместо 0 на выходе зачастую имеет сдвиг напряжения величиной в +/- километр, думается мне излишняя трата времени.    
    • Верно подмечено. Вот их-то, КТ602ВМ и BD139 в ТО-126 в 1969-ом как раз-таки и не было. Не только у J. L. Hood-а, их вообще ещё не существовало. К тому же КТ602БМ  в корпусе КТ-27-2 (как и BD139 в TO-126) и КТ602А в корпусе КТЮ-3-9 - это совсем не близнецы-братья. Технология изготовления совершенно разная, а она при работе транзисторов динамическом режиме, как в случае с JLH-69, играет далеко не последнюю роль. Просто юноша в силу своего быстрого и раннего развития об этом ничего не знает. 
    • Садится разбираться в алгоритме работы и на микроконтроллере делать замену.  Попробуйте прогреть микросхему на зажигалке, когда-то читал о таком способе восстановления процессора от телевизора. Шансов мало, но вам нечего терять, а потом в панельку.
    • Я хочу попробовать разные способы победить эти шумы. Для начала собрать фильтр для блока питания. Корпус с блютуз антенной я пробовал убрать, ничего не изменилось, если фильтр для блока питания тоже не поможет, значит дело в самом усилителе. В Aiyima A3001, который выдает шум гораздо тише, на выходе стоят электролитические конденсаторы и фильтры, можно попробовать сделать также и на Aiyima A09, может таким образом удастся снизить шумы. Если нет, то буду искать еще варианты. Кроме шумов еще надо разобраться с щелчками в колонки при включении и выключении Brzhifi. Aiyima A09 выдает щелчок только при выключении сетевого фильтра, и слабый. А вот Brzhifi щелкает так, что аж диффузоры в колонках двигаются. Схема питания у них отличается, Brzhifi остается в режиме ожидания и питание не отключается, я хочу переделать его так, чтобы оно отключалось, как на Aiyima A09. Может там что сдохло. а может он так спроектирован. Либо что то делать с контроллером питания, либо найти в схеме где можно врезать выключатель и впихнуть его.
    • @CrazyDog34RU Понять, что изначально были неправы, и питание в вашей проблеме не виновато, например?
    • Неожиданный вопрос... При измерениях в любой точке вот этой части схемы "масса" осциллографа вот тут: При измерениях вот в этой части схемы - вот тут: У этой части схемы - вот в этой точке: Подключать "массу" к одной части схемы, а смотреть точки в другой - нельзя. Все эти три "общие" точки - совершенно разные точки. Между ними может быть вполне ощутимое напряжение. Вот тут это хорошо видно:
  • Похожий контент

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