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

Преобразование массива в код (Си)


-=FISHER=-

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

2 часа назад, -=FISHER=- сказал:

В общем код я написал, кому интересно

первую статью опубликовали http://cxem.net/mc/mc445.php, но это только первая часть, думаю во второй статье закончить :) 

2 минуты назад, -=FISHER=- сказал:

Вот так:

Блин спасибо!!!:), не люблю я точные науки :) 

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

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

1 минуту назад, ruhi сказал:

первую статью опубликовали

А Вы читали мой код? Вам не кажется что таким подходом проще для понимания получается? Правда не факт пока что он рабочий, но ведь и Вы не проверяли свой?

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

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

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

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

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

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

Только что, -=FISHER=- сказал:

А Вы читали мой код? Вам не кажется что таким подходом проще для понимания получается? Правда не факт пока что он рабочий, но ведь и Вы не проверяли свой?

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

У меня состояние задается положением в коде- строчкой кода, соответственно не надо постоянно проверять:

кто я?

Где я?

Для своего кода я симулятор консольный (ввожу с клавиатуры что сработало, и время в течении которого нажато, он пишет в консоль как отрабатывают ключи)

Щас написал почти, он работает.

седня - завтра еще дребезг добавлю строчки 3-4,

и буду вторую статью оформлять.

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

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

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

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

3 часа назад, -=FISHER=- сказал:

if(get_code()==command_Right){PORTB|=(1<<RIGHT_OUT); state=RIGHT;}

if(get_code()==command_Left){PORTB|=(1<<LEFT_OUT); state=LEFT;}

break;

и вот например.

два раза читать одно и тоже get_code() очень не практично, это ведет к разным хитрым эффектам , которые отследить-выгрести практически не возможно!

надо делать хотя бы так:

char var = get_code();

if(var ==command_Right){PORTB|=(1<<RIGHT_OUT); state=RIGHT;}

if(var ==command_Left){PORTB|=(1<<LEFT_OUT); state=LEFT;}

break;

И, кстати, просчитать (умозрительно проверить), что будет когда в режиме аварийки это срабатывает тоже не реально.

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

1 минуту назад, ruhi сказал:

И, кстати, просчитать (умозрительно проверить), что будет когда в режиме аварийки это срабатывает тоже не реально.

В режиме аварийки такой ситуации не может произойти. Да мне бы хотя бы так заработало. И всё же Ваш код очень мудрёный с точки зрения новичка. Когда соберу в железе посмотрим, потестируем, а пока рано о чём-то таком говорить.

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

8 минут назад, -=FISHER=- сказал:

В режиме аварийки такой ситуации не может произойти. Да мне бы хотя бы так заработало. И всё же Ваш код очень мудрёный с точки зрения новичка. Когда соберу в железе посмотрим, потестируем, а пока рано о чём-то таком говорить.

Я теперь могу имена из твоей программы использовать, будет полегче думаю.

первая версия с ошибками к тому же была, как обычно, но надо все таки попробовать вникнуть, в статье я подробно более менее расписал что зачем. Последняя картинка с кодом уже нормальная, только там дребезга, действительно нет (это +3-4 строчки всего).

Как говорится, глаза боятся, а ты сиди и разбирайся :)

9 минут назад, -=FISHER=- сказал:

а пока рано о чём-то таком говорить.

Вот это не каждый способен осознать, вот это я прям уважаю!!!:)

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

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

17 минут назад, -=FISHER=- сказал:

В режиме аварийки такой ситуации не может произойти.

кстати, придумал критерий идеальности программы :) :

не важно (как это представляется изначально), может это (ситуация) быть или не может, если это случится программа должна правильно обработать ситуацию!!!

сформулировал теперь, спасибо!

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

1 минуту назад, ruhi сказал:

не важно (как это представляется изначально), может это (ситуация) быть или не может, если это случится программа должна правильно обработать ситуацию!!!

Я пытаюсь создать это устройство без малого полгода (всю голову себе разломал уже, кажется что просто но чем больше о нем думаешь тем оно сложнее становится), поэтому моей стратегией всё же останется путь "от меньшего к большему". А исключительные ситуации буду обрабатывать, когда устройство сможет решать основную свою задачу, пусть даже в "парниковых" условиях.

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

4 часа назад, -=FISHER=- сказал:

В общем код я написал, кому интересно то вот, разбил его на модули, выкладываю все:

long_turn.c:

А я что то не вижу, где у тебя время нажатия считается, как ты определяешь что надо "моргание" продлевать или не надо???

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

2 минуты назад, ruhi сказал:

А я что то не вижу, где у тебя время нажатия считается, как ты определяешь что надо "моргание" продлевать или не надо???

Тот код, который приведен мной выше он работает топорно, вот так: нажали любой поворот, сразу включается удлинение (открывается соответствующий мосфет), затем считает количество морганий, после заданного количества закрываем мосфет. Если в момент удлинения нажать другой рычаг, удлинение выключится (мосфет закроется). Если рычаг всё ещё включен, то продолжает штатно моргать, если отпущен то всё тухнет.

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

2 минуты назад, -=FISHER=- сказал:

нажали любой поворот, сразу включается удлинение (открывается соответствующий мосфет),

да, точно, это правильный эксперимент! Надо что то увидеть что бы мысли связались с реальным результатом и не улетали в облака.

Я тоже всегда стараюсь что то такое простое придумать-посмотреть , когда мысли не складываются.

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

6 минут назад, ruhi сказал:

да, точно, это правильный эксперимент! Надо что то увидеть что бы мысли связались с реальным результатом и не улетали в облака.

А в дальнейшем алгоритм будет такой: при первом моргании сразу же включается удлинение, при первой паузе отключается. Далее если приходит моргание (значит рычаг подрулевой включен), то ничего не делаем и больше не включаем удлинение до прихода состояния ожидания, а если моргание не пришло значит стоить включить удлинение на запрограммированное количество морганий. Таким образом минимальное количество морганий будет 2, а не все запрограммированные как в случае который я описал до этого.

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

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

4 часа назад, -=FISHER=- сказал:

Ну то есть ошибки при сборке Вы имеете ввиду? Я для тестирования перерезал все дорожки к МК от входов и ключей. И всё равно щелкает..

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

В этом случае если ее отпаять ничего не изменится, антенна станет покороче хотя.

Надо напряжение померить на базе в первую очередь и попробовать подтянуть его к закрывающему значению!

потом программу зашить которая только это значение на базу выставляет и зависает в этом состоянии, типа:

main()

DDRB = 0xff;//все-выбери нужные-на выход

PORTB = 0x00;//все-выбери нужные-выдают землю (если закрывается землей, хотя даже если откроется, то напостоянно - тоже понятно будет что работает и что делать!!!)

while(1);

33 минуты назад, -=FISHER=- сказал:

А в дальнейшем алгоритм будет такой:

да! я алгоритм написал по другому, чтобы померить само нажатие, и исходя из этого значения включать или не-включать продление. Но дело в том что в моем коде надо 5-7 строчек поменять-поправить(перетасовать вызовы) чтобы сделать как ты предлагаешь.

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

20 часов назад, ARV сказал:

дальше-то и некуда...

В общем после вчерашнего эксперимента удалось избавиться от самопроизвольного срабатывания реле, перерезав вот эти дорожки:

5a43458aef.jpg.84c70c58daa094117cdd2c7a19f70a46.jpg

Но ведь каждый вход-выход ULN2003 из себя представляет вот такой каскад:

uln2003.gif.6a692cdc2e184fd4ccbe2d0e22f3a98a.gif

То есть в закрытом состоянии (когда на IN будет низкий уровень) на всех выводах OUT не должно быть GND? А что должно быть?... Подскажите пожалуйста кто знает.

Изменено пользователем -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

51 минуту назад, -=FISHER=- сказал:

В общем после вчерашнего эксперимента удалось избавиться от самопроизвольного срабатывания реле, перерезав вот эти дорожки:

5a43458aef.jpg.84c70c58daa094117cdd2c7a19f70a46.jpg

Но ведь каждый вход-выход ULN2003 из себя представляет вот такой каскад:

uln2003.gif.6a692cdc2e184fd4ccbe2d0e22f3a98a.gif

То есть в закрытом состоянии (когда на IN будет низкий уровень) на всех выводах OUT не должно быть GND? А что должно быть?... Подскажите пожалуйста кто знает.

посади эти оборванные линии напрямую на attiny на PB3, PB4! иРФ-ки(транзисторы) 5-ю вольтами вполне открываются, насколько я помню!

ну и программу не забудь прошить чтобы обрыва не было на этих ногах.

и резисторы наверно не нужны тогда р1,р2

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

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

6 минут назад, ruhi сказал:

посади эти оборванные линии напрямую на attiny на PB3, PB4! иРФ-ки(транзисторы) 5-ю вольтами вполне открываются, насколько я помню!

Тогда и входы которые идут на IN1 - IN3 через резистивный делитель на тиньку? Или вообще на прямую кинуть?)

 

Но всё же непонятно, куда утекает ток с COM что заставляет щелкать реле...

Изменено пользователем -=FISHER=-

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

54 минуты назад, -=FISHER=- сказал:

Подскажите пожалуйста кто знает

воще не совсем понимаю нафик ты эту улн-ку воткнул, для защиты простых резисторов последовательно (или р-делителей) хватит вполне.

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

1 минуту назад, ruhi сказал:

воще не совсем понимаю нафик ты эту улн-ку воткнул

Я же копировал, глядя вот на этот снимок заведомо рабочего устройства:

Скрытый текст

14a285cs-960.jpg.5229a171114666520fcf6ad2f6db3349.jpg

 

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

3 минуты назад, ruhi сказал:

воще не совсем понимаю нафик ты эту улн-ку воткнул

воще-то бортовая сеть авто 14 вольт, а тинька не очень любит такое напряжение на своих пинах... и даже если ограничить ток резисторами, то потенциал 5В, который сможет выдать тинька все равно будет воспринят полевиком как НИЗКИЙ уровень и он будет открыт всегда. ULN-ка играет роль преобразователя уровней.

1 час назад, -=FISHER=- сказал:

на всех выводах OUT не должно быть GND? А что должно быть?

Земли быть не должно, должен быть "открытый коллектор", т.е. "обрыв". А вывод "COM" ULN-ки вы куда подключили?

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

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

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

3 минуты назад, ARV сказал:

воще-то бортовая сеть авто 14 вольт, а тинька не очень любит такое напряжение на своих пинах... и даже если ограничить ток резисторами, то потенциал 5В, который сможет выдать тинька все равно будет воспринят полевиком как НИЗКИЙ уровень и он будет открыт всегда

Я точно не помню, но схема у меня была с РФ-ками и тоже с 12в -рабочим напряжением  и по моему управлялась с 5-вольтовой логики, пусть проверит, вроде это не долго.

а для входов ставится делитель чтобы чуть больше 5в получалось на ногу + диод на питание 5в который разряжает эти "чуть больше" до напряжения питания.

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

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

6 минут назад, ARV сказал:

Земли быть не должно, должен быть "открытый коллектор", т.е. "обрыв". А вывод "COM" ULN-ки вы куда подключили?

Сейчас померял напряжения, на всех выходах +60 мВ относительно общей земли, а на одном почему-то +240 мВ... COM ULNки я подключил на +12 В, проверил, так и есть.

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

1 минуту назад, ruhi сказал:

Я точно не помню

Еще раз: P-канальный полевик откроется, если затвор будет иметь потенциал ниже, чем исток на величину напряжения отпирания. Посмотрите по справочнику, если на истоке у полевика +14, а на затворе будет +5 - будет он открыт или нет? Еще раз: управляя таким полевиком напрямую от МК (даже если он выдержит напряжение), вы никогда не сможете закрыть полевик.

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

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

2 минуты назад, ruhi сказал:

Я точно не помню, но схема у меня была с РФ-ками и тоже с 12в -рабочим напряжением  и по моему управлялась с 5-вольтовой логики, пусть проверит, вроде это не долго.

Эти транзисторы абсолютно точно открываются и закрываются от ножки МК, проверял это на других устройствах, спроектированных не мной. Однако народ ставит ULN наверное не просто так...

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

1 минуту назад, -=FISHER=- сказал:

Сейчас померял напряжения, на всех выходах +60 мВ относительно общей земли, а на одном почему-то +240 мВ

Что 60, что 240 - это одинаково открывает полевики. Ищите ошибку в схеме или у вас не годная ULN-ка.

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

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

Только что, -=FISHER=- сказал:

Однако народ ставит ULN наверное не просто так...

тебе ж пока надо чтоб работало, а там глядишь и выяснишь это "не просто так"

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

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

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

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

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

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

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

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

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

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

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

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